术语
- MGR:MySQL Group Replication,即MySQL组复制
- RPO:Recovery Point Objective恢复点目标
- RTO:Recovery Time Objective恢复时间目标
背景
公司核心应用A为公司核心应用,对数据库RPO、RTO都有较高要求。一次数据库主库磁盘expender背板坏了,影响磁盘IO通道,数据库层面出现大面积超时和错误。由于机器未完全坏掉,数据库可以连接,SQL可以执行,导致主从未能自动切换,手动切换时准备脚本,校验数据同步等问题耗时过长,导致公司业务出现重大损失。(原有方案为MHA高可用,半同步复制)
由此改为MGR集群技术方案,以期降低主从切换时效,降低损失。
MGR
MGR高可用方案中的RPO、RTO
RPO:架构模型保障了数据一致性,无需人为干预和检测
RTO:因其本身RPO的自动保障,无数据差异,准备耗时短,
MGR具备以下几个特点:
基于shared-nothing模式,所有节点都有一份完整数据,发生故障时可以直接切换。
MGR提供了数据一致性保障,默认是最终一致性,可根据业务特征需要自行调整一致性级别。
支持在线添加、删除节点,节点管理更方便。
支持故障自动检测及自动切换,发生故障时能自动切换到新的主节点,再配合MySQL Router中间件,应用层无需干预或调整。
支持单节点、多节点写入两种模式,可根据架构或业务需要选择哪种方案,不过强烈建议选用单主模式。
参考
https://dev.mysql.com/doc/refman/8.4/en/group-replication.html