企业使用开源软件,特别是在开源数据库选型中,一定会遇到MySQL的使用场景,如何能高效置备和使用开源的数据库高可用性集群,包括备份恢复补丁等问题一直是困扰着企业的DBA。本篇就来带大家看下Nutanix Era提供Galera Cluster的架构与AWS Aurora MySQL Multi Master架构,帮助大家理解。
本篇不讨论Master Slave架构,这个基本上是AWS RDS MySQL就可以提供,并且Slave跨AZ/Region,自动Failover都已经很成熟。包括Nutanix也可以通过自动化工具Calm提供Master Slave集群的自动置备。
Amazon Aurora MySQL Multi Master Cluster
总结放头上:
Multi Master 提供线性横向读、写性能扩展,提供写冲突解决的能力
切换秒级,不需要传统Master slave架构下Prompt Slave时的时间(15-30秒)
这要先从Aurora MySQL的分布式架构说起
这里的"shared storage volume"应该理解成一组存储节点对外提供共享存储能力,不能简单理解成“共享存储”。有了这个前提设定,使得Push Log applicator to Storage成为可能,并且每个可用区4/6的Quorum提供更高的数据可靠性。
左面的标准Master-slave模式,复制binlog,在replica节点上追加日志会开销额外的写操作。
右面Aurora MySQL,由于实现Push Log applicator to Storage,在replica节点上提供100%的读能力
写能力的横向扩展也是一样。前提是如果不发生写冲突,那么Aurora Multi Master方式提供写能力横向扩展
当然,既然提供Multi Master可定需要解决写冲突问题,Aurora提供Optimistic Conflict Resolution方式来解决,这里不展开,有兴趣小伙伴可以看文档尾部详细材料
Multi Master提供的性能扩展是类似下图
左侧是2台R4类型的4xLarge 规格实例共同提供的性能曲线
中间是1台Instance失效后提供的性能曲线
右侧是在增加一台R4类型的8xLarge规格实例后的性能曲线
Nutanix Era提供Galera Cluster架构
结论放前面:
Era提供数据库高可用集群置备、参数标准化、备份恢复、升级补丁、克隆刷新、自助服务等能力,在2.2版本中提供对于MySQL Galera Cluster架构的支持。
Nutanix平台提供极好的性能支撑核心业务,绝大部分场景不再需要写性能横向扩展时,用多主方式,平时使用一个节点写入,另一个节点同步复制,这样既可以避免写冲突,也可以在故障时实现快速切换。而且对于应用来说透明。
Galera Cluster是由Codership开发的MySQL多主结构集群,这些主节点互为其它节点的从节点。不同于MySQL原生的主从异步复制,Galera采用的是多主同步复制,并针对同步复制过程中,会大概率出现的事务冲突和死锁进行优化,就是复制不基于官方binlog而是Galera复制插件,重写了wsrep api。
与传统MySQL Replication对比:
其优势为:
- 具有同步复制,故障转移和重新同步的高可用性解决方案
- 没有数据丢失
- 所有服务器均具有最新数据(无从属滞后)
- 读取可扩展性
- “相当好”的写可扩展性
- 跨数据中心的高可用性
其他限制:
- 它仅支持InnoDB或XtraDB存储引擎
- 随着可写母版数量的增加,事务回滚率可能会提高,尤其是在同一数据集(也称为热点)上存在写争用的情况下。 这增加了事务等待时间。
- 慢速/超载的主节点可能会影响Galera群集的性能,因此建议在群集中安装统一的服务器。
建议:
对于写性能不是特别严苛的话,用多主方式,平时使用一个节点写入,另一个节点同步复制,这样既可以避免写冲突,也可以在故障时实现快速切换。而且对于应用来说透明
参考资料:
Nutanix Era
https://www.nutanix.com/products/era
Video - Deep Dive on Amazon Aurora MySQL
https://www.bilibili.com/video/BV1fK
Galera Cluster for MySQL
https://severalnines.com/resources/database-management-tutorials/galera-cluster-mysql-tutorial
Galera Cluster Replication API
https://galeracluster.com/library/documentation/architecture.html
详细介绍mysql各个集群方案:
https://www.cnblogs.com/lgx211/articles/12456859.html
Amazon RDS User Guide:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/index.html
Amazon Aurora User Guide:
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/index.html