数据库
首页 > 数据库> > MySQL集群架构(二):双主模式

MySQL集群架构(二):双主模式

作者:互联网

双主模式

前言

之前介绍了主从模式,本节将介绍双主模式

适用场景

很多企业刚开始都是使用MySQL主从模式,一主多从、读写分离等。但是单主如果发生单点故障,从库切换成主库还需要作改动。因此,如果是双主或者多主,就会增加MySQL入口,提升了主库的可用性。因此随着业务的发展,数据库架构可以由主从模式演变为双主模式。双主模式是指两台服务器互为主从,任何一台服务器数据变更,都会通过复制应用到另外一方的数据库中。

在这里插入图片描述
使用双主双写还是双主单写?

建议大家使用双主单写,因为双主双写存在以下问题

高可用架构如下图所示,其中一个Master提供线上服务,另一个Master作为备胎供高可用切换,Master下游挂载Slave承担读请求
在这里插入图片描述
随着业务发展,架构会从主从模式演变为双主模式,建议用双主单写,再引入高可用组件,例如Keepalived和MMM等工具,实现主库故障自动切换。

MMM架构

MMM(Master-Master Replication Manager for MySQL)是一套用来管理和监控双主复制,支持双主故障切换 的第三方软件。MMM 使用Perl语言开发,虽然是双主架构,但是业务上同一时间只允许一个节点进行写入操作。下图是基于MMM实现的双主高可用架构。
在这里插入图片描述

MMM故障处理机制

MMM包含writer和reader两类角色,分别对应写节点和读节点

除了管理双主节点,MMM 也会管理 Slave 节点,在出现宕机、复制延迟或复制错误,MMM 会移除该节点的 VIP,直到节点恢复正常。

MMM监控机制

MMM 包含monitor和agent两类程序,功能如下:

MHA架构

MHA(Master High Availability)是一套比较成熟的 MySQL 高可用方案,也是一款优秀的故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。MHA还支持在线快速将Master切换到其他主机,通常只需0.5-2秒。

目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器。

在这里插入图片描述
MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)

MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master,整个故障转移过程对应用程序完全透明。

MHA故障处理机制

MHA优点

主备切换

主备切换是指将备库变为主库,主库变为备库,有可靠性优先和可用性优先两种策略

主备延迟问题

主备延迟是由主从数据同步延迟导致的,与数据同步有关的时间点主要包括以下三个

所谓主备延迟,就是同一个事务,在备库执行完成的时间和主库执行完成的时间之间的差值,也就是 T3-T1
在备库上执行show slave status命令,它可以返回结果信息,seconds_behind_master表示当前备库延迟了多少秒。

同步延迟主要原因如下:

可靠性优先

主备切换过程一般由专门的HA高可用组件完成,但是切换过程中会存在短时间不可用,因为在切换过程中某一时刻主库A和从库B都处于只读状态。如下图所示
在这里插入图片描述
主库由A切换到B,切换的具体流程如下:

可用性优先

不等主从同步完成, 直接把业务请求切换至从库B ,并且让 从库B可读写 ,这样几乎不存在不可用时间,但可能会数据不一致。
在这里插入图片描述
如上图所示,在A切换到B过程中,执行两个INSERT操作,过程如下

通过上面介绍了解到,主备切换采用可用性优先策略,由于可能会导致数据不一致,所以大多数情况下,优先选择可靠性优先策略。在满足数据可靠性的前提下,MySQL的可用性依赖于同步延时的大小,同步延时越小,可用性就越高。

总结

本文主要介绍了双主模式的几种方案,这也是目前主流的sql集群方案。

标签:主库,架构,MHA,MMM,切换,MySQL,从库,主模式,节点
来源: https://blog.csdn.net/z591045/article/details/112252030