在基于 MySQL 传统复制的时代(MySQL 版本低于 5.5),MHA 在 MySQL 高可用中可以说是非常成熟。在 MySQL 5.6 及 GTID 的出现后,MHA 由于没有及时的与 MySQL 新的特性一起及时更新,并且据说 MHA 作者基本放弃对该软件的维护了,MHA 作者目前在 Facebook 就职,自身也没再使用 MHA,他也认为在 GTID 环境下 MHA 存在的价值不大,但是使用 MySQL 的话,我找不到一个不用 GTID 的理由,无论是从功能、性能还是从维护的角度,GTID 自身所带来的好处确实很多,以至少对于那些要求不高的业务,直接建议用 GTID+row+增强半同步即可。
由于 MHA 的没有及时更新,这里引进了一个新的高可用青云的 Xenon+MySQL。
介绍 Xenon 之前,先介绍一下 RadonDB。QingCloud RadonDB 是基于 MySQL 研发的新一代分布式关系型数据库,可无限水平扩展,支持分布式事务,具备金融级数据强一致性,满足企业级核心数据库对大容量、高并发、高可靠及高可用的极致要求。
RadonDB 基于 Golang 开发,由四部分组成:
- Radon SQL 路由层 ,Proxy模式 下载地址: https://github.com/radondb/radon
- Xenon MySQL Plus 高可用组件 下载地址: https://github.com/radondb/xenon
- 存储节点 ,官方 MySQL 或是 Percona 分支,推荐一主两从,增强半同步
- 计算节点 ,目前使用的TokuDB做为全量数据存储,推荐优化后的分支: https://github.com/xelabs/tokudb Xenon「QingCloud MySQL Plus」就是上面RadonDB数据库分支下的高可用架构,第二部分,其实就是一个实现 MySQL 集群高可用的工具,使用 Raft 进行选主,结合 MySQL 并行复制(MySQL5.7+),就实现了 log 并行回放,切换非常快,再结合 Semi-Sync 机制,可以做到数据不丢失,我上课培训的地方宣称它成为了 MHA 的一个最佳替换产品。
相关文档链接: https://github.com/radondb/xenon/tree/master/docs