MHA vs MGR谁更合适用在生产系统

本文探讨了MySQL的MHA和MGR两种高可用方案。MHA作为一个独立于MySQL的切换工具,适用于一主一从或一主多从配置,能快速完成故障切换。而MGR是内核级别的强一致性方案,至少需要三个节点,基于Paxos协议,适合单主或多主模式,但对网络和集群配置要求较高。虽然MGR具备故障自动选举,但在生产环境中还需配合VIP漂移等工具。作者认为MHA在成熟性和成本上更优,MGR更适合研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL为什么如此流行的原因是因为它很早就有了非常成熟的高可用方案,这个方案就是mha,很多互联网公司都是基于mha做的高可用,所有受众面非常广。其实还有个小原因就是我们从上大学学习数据库原理这门课的时候老师就是拿mysql数据库作为例子,使得我们大部分人对更加熟悉。

相比起来pg的流复制出来的较晚,而且高可用方案也不统一,虽然流复制是基于xlog物理日志的复制技术,性能比mysql binlog逻辑复制好很多,但是相比起来pg差在生态上,在中国pg的客群并不大,受众面没那么广。

好,进入正题,mysql的mha和mgr到底谁才是“正房”。谁才是生产环境中最好的高可用方案。

这么比较其实是有点问题的。我们知道mha是外部的基于mysql主从半同步开发的一套高可用切换方案,它并不属于mysql内核,独立于mysql存在于外围,mha重点在切换,可以理解为一套切换工具。而mgr存在于mysql内核层面,是内核层面数据强一致方案,它的重点在高可用强一致,如果将mgr用在生产环境中,那么针对mgr,还需要开发一套监控及切换方案,而mha将这一整套切换方案vip之类的都考虑进去了。

mha会在集群中某台机器一般是slave节点安装mha manager,当master出现故障时,可以自动将最新数据的slave提升为master同时将所有其他的slave指向新的master,整个过程是透明的,对应用无感知,切换时间一般在30s以内,非常高效。mha适用于一主一从,一主多从,一般配合半同步使用,预防数据丢失。

在这里插入图片描述

mha大致原理是manager进程会定期(一般是1s一次)探测主库节点,当主库出现故障时,mha会找到应用了最新日志的slave的binlog位置,并且拉取主库和最新从库的差异日志并应用到该从库上。,然后将该从库提升为master,并且将其他从库指向新主库,切换过程配合vip的漂移。

mgr全称是mysql group replication,它其实是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值