MySQL Replication--双主结构优缺点

Posted gaogao67

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL Replication--双主结构优缺点相关的知识,希望对你有一定的参考价值。

双主架构图

技术图片

双主架构实现原理:
当从库IO线程接受到主库传递来的二进制日志(Binlog)并将之保存为从库的中继日志(relay log),然后从库SQL线程将中继日志(relay log)的事件重做到从库上,实现主从数据同步。
如果SQL线程发现该事件的server_id与当前从库的server_id相同,则会丢弃该事件,因此如果两台mysql如何互为主从,不会导致相同的事件被重复执行。


双主架构设计目标:
在一套MySQL复制群集中,通过双主或多主架构,解决一主多从架构的单点故障,减少主从切换的故障处理时间,增加MySQL群集的高可用性。


双主架构实现方案:
1、主备模式,两台MySQL互为主从,其中一台作为主节点对外提供服务,另外一台作为备机节点(standby),当提供服务的主节点发生故障后,将服务请求快速切换到备用节点,原主节点故障恢复后转换为备用节点(standby)。

2、主主模式,两台MySQL互为主从,且两台MySQL均作为主节点对外提供服务,当其中一台MySQL发生故障后,将指向该故障节点的请求快速切换到另外一台MySQL,原来指向非故障节点的请求不受影响。

在主主模式下,两个主库都提供读写服务,如果应用通过两个主库操作相同数据,则会发生冲突导致数据覆盖(使用语句模式复制)或复制异常(使用行模式复制),因此需要对读写服务进行控制:
1、基于自主主键控制,通过设置自增属性auto_increment_offset和auto_increment_increment来控制每个主节点生产不同的自增值,并根据不同自增值访问不同主节点。
2、基于库级别或表级别控制,如应用APP1访问节点node1上的DB1库,而应用APP2访问节点node2上的DB2库,两个主节点间不会操作相同表的数据,因此不会存在事务冲突。

为保证应用程序使用相同数据库连接配置而不受故障切换影响,常用方案有:
1、VIP,通过vrrpd或keepalived将VIP动态绑定到新主节点
2、域名,通过切换域名将域名指向新主节点
3、代理,通过更新代理中存放的路由信息来指向新主节点。

双主架构优点:
1、主主模式能将读写请求分摊到两个主节点,有效提升服务器使用率。
2、主节点发生故障后,能快速进行主从切换。
3、当故障节点恢复后,故障节点能通过复制进行数据恢复(应用其他节点数据)和数据同步(将未同步数据发生给其他节点)。

双主架构缺点:
1、当主节点上MySQL实例发生故障后,可能会存在部分数据(Binlog)未同步到另外的主节点,导致数据丢失(直到故障节点恢复)。
2、主主模式下,很容易因数据访问控制不当导致数据冲突。
3、为提高系统高可用性,双主架构会被扩展成双主多从结构,同样存在主节点发生故障后多个从库选主和恢复复制的问题。

 

以上是关于MySQL Replication--双主结构优缺点的主要内容,如果未能解决你的问题,请参考以下文章

Mysql的双主模式

MySQL binlog_format中sbr 和rbr(Statement-Based and Row-Based Replication)的优缺点

MySQL:主从复制结构双主复制结构利用SSL实现安全的MySQL主从复制

mysql主主复制(双主复制)配置步骤

新版keeplived + MySQL双主自动切换

redis 和 mongodb 比起来优缺点是啥?