MST

星途 面试题库

面试题:MySQL 组复制与半同步复制的区别

请阐述 MySQL 组复制与半同步复制在原理、性能及应用场景上的主要区别。
15.8万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

原理区别

  • MySQL 组复制:基于 Paxos 算法变种,组内节点通过消息传递达成共识。节点间相互通信,当有数据变更时,会将变更信息在组内传播,所有节点需对变更顺序达成一致,以确保数据一致性。
  • 半同步复制:主库在执行事务并写入二进制日志后,会等待至少一个从库确认接收日志,才返回给客户端事务执行成功。从库接收到日志后,立即反馈确认信息给主库。

性能区别

  • MySQL 组复制:由于要在多个节点间达成共识,性能受节点数量和网络状况影响较大。随着节点增加,消息交互增多,性能可能下降。但在节点故障时,组内其他节点可快速接管,提高了可用性。
  • 半同步复制:相比异步复制,半同步复制增加了等待从库确认的时间,一定程度上影响性能。不过与组复制相比,其性能损耗相对较小,因为无需像组复制那样在多个节点间达成复杂的共识。

应用场景区别

  • MySQL 组复制:适用于对数据一致性要求极高,且需要高可用性的场景,如金融交易系统等。它能保证数据在多个节点间强一致性,即使部分节点故障,系统仍能正常运行。
  • 半同步复制:适用于对数据一致性有一定要求,同时希望兼顾性能的场景,如一般的业务系统。它在一定程度上提高了数据安全性,又不会对性能造成过大影响。