MySQL 由于其单机机能的限制,很早就发展了数据复制技术以提高性能。同时依赖该技术,MySQL 可用性也得到了长足的发展。
截止到现在,该技术经历了四代的发展。第一代为传统复制,使用 MHA(Master High Available)架构;第二代是基于 GTID 的复制,即 GTID+Binlog server 的模式;第三代为增强半同步复制,GTID+增强半同步复制;第四代为 MySQL 原生高可用,即 MySQL InnoDB Cluster。数据库的复制技术需要考虑两个因素:数据一致 RPO 和业务连续性 RTO。
一、MHA复制控制
下图是 MHA 架构图。
MHA 作为第一代复制架构,有如下适用场景:
-
1、MySQL 的版本≤5.5,这一点说明它很古老;
-
2、只用于异步复制且一主多从环境;
-
3、基于传统复制的高可用。
MHA 尽最大能力做数据补偿,但并不保证一定可以成功;它也尽最大努力在实现 RPO,有 RTO 概念支持。可以看到它只是一个辅助工具,本身的架构与机制对 RPO 和 RTO 没有任何保障。
那么由此可知,它会存在如下几个问题:
-
1、它的 GTID 模型强依赖 binlog server,但是对于 5.7 后的 binlog 却不能识别