1.mysql主从复制
原理:主服务器将数据变更写入二进制日志,从服务器通过I/O线程读取主服务器的二进制日志并写入本地的中继日志,随后sql线程从中继日志中读取并执行这些事件,以同步主服务器的数据。
适用于:简单的数据冗余、读写分离场景,但数据一致性较低,故障恢复需要手动干预。
2.mysql group replication(MGR)分布式一致性算法 mysql官方
原理:MGR基于paxos协议,将多个mysql服务器组成一个逻辑组,组内每个节点既是主服务器也是从服务器。所有写操作在被提交前必须经过组内多数节点的共识,确保数据一致性。即使部分节点故障,只要多数节点存活,MGR就能继续提供服务。适用于一致性较高的金融场景。
适用于:需要强一致性 和高可用性的分布式数据库场景,提供自动故障恢复和数据强一致性。
3.mysql master high availablility(MHA)非官方,开源社区
原理:MHA开源的高可用解决方案,通过监控主从复制状态,自动监测主服务器故障,并在故障发生时自动执行主从切换。MHA由管理节点和数据节点组成,管理节点负责监控、故障监测、切换决策和执行,数据节点是参与复制的mysql服务器。
适用于:已有主从复制架构,希望增强故障检测和自动切换能力的场景,但需要额外的管理节点。
4.myql innodb cluster
原理:mysql innodb cluster 是由mysql官方提供的基于MGR的高可用方案,它包含了mysql server、mysql shell(用于集群管理)和mysql router(用于客户端连接路由)。innodb cluster 提供了组复制、自动故障切换、在线扩缩容等功能,简化了高可用mysql集群的部署和管理。
适用于:希望快速部署和管理的基于MGR的高可用mysql集群的用户,提供一体化的解决方案,但需要特定服务。
5.MHA对比主从+keepalibed
MHA,其实是通过监控binlog实现了一致性的问题,自动将从服务器同步到主服务器故障发生前的状态,主要考虑在master宕机了后保证slave的数据损失最小;
keepalived就是实现vip的高可用而已,不处理数据同步和一致性。
MHA在故障切换过程中能更大程度上保证数据的一致性,而Keepalived则更侧重于网络服务的高可用性和负载均衡。




