全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

mysql双主复制中,会有什么缺点?

发布时间:2023-10-13 03:16:03
发布人:xqq

一、mysql双主复制中,会有什么缺点

双主复制本身没有冲突检测机制,所以如果两个主节点都同时更新了相同的主键,就会有冲突导致复制中断。如果两个主的修改表是错开的,得看情况,如果是实时性要求高的,那么需要读写节点一致。

如果允许读延迟,那么可以任意选择一个节点。

目前配置双主复制,一般都是一个主有写入。另一个主是为了在当前真主故障后切换到新主不需要配置复制关系。

其实如果因为多个节点多有写入而配置双主,那么还是建议用MySQL Group Replication的多主模式。这才是长远的方案。

双主架构实现原理

当从库IO线程接受到主库传递来的二进制日志(Binlog)并将之保存为从库的中继日志(relay log),然后从库SQL线程将中继日志(relay log)的事件重做到从库上,实现主从数据同步。
如果SQL线程发现该事件的server_id与当前从库的server_id相同,则会丢弃该事件,因此如果两台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、代理,通过更新代理中存放的路由信息来指向新主节点。

#it技术干货

相关文章

mysql百万级表在不停机的情况下增加一个字段要怎么处理的?

mysql百万级表在不停机的情况下增加一个字段要怎么处理的?

2023-10-13
MySQL里的year_month的用法是什么?

MySQL里的year_month的用法是什么?

2023-10-13
navicat mysql中10061是什么错误?

navicat mysql中10061是什么错误?

2023-10-13
openGauss与GaussDB T或者A有什么关系?

openGauss与GaussDB T或者A有什么关系?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取