一句话总结:使用官方Mysql Innodb Cluster集群方案实现Mysql冗余备份,无单点故障的高可用性。
项目背景:
腾讯数据中心网络的SDN控制器,项目业务对数据的要求如下:
1、对数据可用性要求高,要求多节点冗余备份,Mysql单点故障后可以切换到其他节点
2、对数据准确性要求高,对Mysql写数据时,需要强一致性备份,不能是异步的备份
3、并发请求低
业内方案:
方案
优点
缺点
主备或一主多备,默认为异步复制,可安装插件半同步复制
官方方案,可进行读写分离,配置较简单
1、写节点单点故障
2、默认异步备份,非强一致性
3、将从库提升为主库需要应用层实现
双主 + keepalive + 虚IP
双主可同时写
1、引入了keepalive组件
2、双主同时写存在较多冲突场景
MariaDB Gelera Cluster
支持多写和高可用性,同步复制备份,每个节点保留全部数据
1、全同步写,写性能较低
2、不支持锁的SQL如lock/unlock等
3、不支持XA事务
Mysql NDB Cluster
官方方案,支持分片即分布式存储,支持多写,号称可做到99.999%的可用性
1、架构复杂,部署也较复杂
2、管理节点的可靠性需额外再考虑
Mysql Fab