资讯专栏INFORMATION COLUMN

MySQL双中心复制引起主从复制异常处理分享

IT那活儿 / 396人阅读
MySQL双中心复制引起主从复制异常处理分享
故障描述


双中心建设期间,xxx机房内部分mysql备库出现复制出错现象,所有出错信息一致,错误信息如下:


具体出错原因:

从以上信息看,在对表“t_xxx_xxxxx”进行更新操作时,没找到相应的记录。


故障分析


目前所有mysql主从采用4并发、半同步方式进行数据复制,以保证主从数据复制的效率与数据一致性。由本次具体出错信息看,当时正有4个线程在并发进行数据同步:


  • 线程1:操作“5830d371-600d-11e8-bd61-fa163ef6f4ff:240662”事务

  • 线程2:操作“5830d371-600d-11e8-bd61-fa163ef6f4ff:240659”事务

  • 线程3:操作“5830d371-600d-11e8-bd61-fa163ef6f4ff:240660”事务

  • 线程4:操作“5830d371-600d-11e8-bd61-fa163ef6f4ff:240661”事务


Mysql数据复制是在进行“5830d371-600d-11e8-bd61-fa163ef6f4ff:240662”事务操作时出现了“更新数据时,无法找到相应记录”错误。


1、分析binlog

分析“5830d371-600d-11e8-bd61-fa163ef6f4ff:240662”事务所在binlog:

该事务是个更新”t_xxx_xxxxx”的操作,修改记录”call_swftno=2018052713390100901288006”

其它三个事务为:


  • 5830d371-600d-11e8-bd61-fa163ef6f4ff:240659

该事务为表“t_xxx_xxxxx”的insertinto on语句,共插入50条记录,其中包括记录“call_swftno=2018052713390100901288006”记录的插入


  • 5830d371-600d-11e8-bd61-fa163ef6f4ff:240660

该事务为表“t_xxx_xxxxx”的insertinto on语句,共插入50条记录


  • 5830d371-600d-11e8-bd61-fa163ef6f4ff:240661

该事务为表“t_xxx_xxxxxinfo”的更新操作


查看4个事务在主库上的提交次序

从“last_committed”值可以看出,事务“240659、240660、240661”并发运行,并同时提交,事务“240662”稍后提交。即在主库上,事务“240659、240660、240661”同时执行,事务“240662”随后执行。


2、备库事务运行

从应用逻辑出发,事务“240659”与“240662”是有执行次序的,不能同时执行。但基于mysql主从并发复制机制,并从备库复制出错信息看出,事务“240659、240660、240661、240662”在备库上是并发执行的,最终导致事务“240662”在执行时,由于事务“240659”还没执行完而找不到记录“call_swftno=2018052713390100901288006”的错误。


3、备库记录查询

在备库上查询“240662”事务更改所对应的记录,发现对应记录“call_swftno=2018052713390100901288006”存在,说明了事务“240659”在事务“240662”执行出错后,成功执行完成。


故障处理


重启mysql主从复制线程,主从复制恢复正常,继续进行数据同步。


分析总结


主库上短时间内有执行次序的相关操作,在从库上被基于并发主从复制的机制变更成了并发操作,导致了有依赖操作的事务出现“找不相关记录”错误。


所有机房内mysql主从复制配置都一致,但IDC机房内的数据是由前台业务系统产生的,具有一定的时间间隔,没产生这种现象,而淮安机房内的数据是由双中心同步软件同步产生的,短时间内产生大量有操作依赖的事务,便产生了上述错误现象。


Mysql参数“slave_preserve_commit_order“可以控制Slave上的binlog提交顺序和Master上的binlog的提交顺序一样,保证GTID的顺序。该参数只能用于开启了logicalclock并且启用了binlog的复制。即对于多线程复制,该参数用来保障事务在slave上执行的顺序与relaylog中的顺序严格一致。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130160.html

相关文章

  • 【独家】终生受用的Redis高可用技术解决方案大全

    摘要:哨兵是社区版本推出的原生高可用解决方案,部署架构主要包括两部分集群和数据集群,其中集群是由若干节点组成的分布式集群。自研推荐推荐自研的高可用解决方案,主要体现在配置中心故障探测和的处理机制上,通常需要根据企业业务的实际线上环境来定制化。 最近很多朋友向我咨询关于高可用的方案的优缺点以及如何选择合适的方案线上使用,刚好最近在给宜人贷,光大银行做企业内训的时候也详细讲过,这里我再整理发出来...

    cc17 评论0 收藏0
  • 【独家】终生受用的Redis高可用技术解决方案大全

    摘要:哨兵是社区版本推出的原生高可用解决方案,部署架构主要包括两部分集群和数据集群,其中集群是由若干节点组成的分布式集群。自研推荐推荐自研的高可用解决方案,主要体现在配置中心故障探测和的处理机制上,通常需要根据企业业务的实际线上环境来定制化。 最近很多朋友向我咨询关于高可用的方案的优缺点以及如何选择合适的方案线上使用,刚好最近在给宜人贷,光大银行做企业内训的时候也详细讲过,这里我再整理发出来...

    helloworldcoding 评论0 收藏0
  • 面试官:咱们来聊一聊mysql主从延迟

    摘要:编辑器编辑器背景编辑器前段时间遇到一个线上问题,后来排查好久发现是因为主从同步延迟导致的,所以今天写一篇文章总结一下这个问题希望对你有用。编辑器几句唠叨编辑器大家好,我是小饭,一枚后端工程师。背景前段时间遇到一个线上问题,后来排查好久发现是因为主从同步延迟导致的,所以今天写一篇文章总结一下这个问题希望对你有用。如果觉得还不错,记得加个关注点个赞哦思维导图思维导图常见的主从架构随着日益增长的访...

    EasonTyler 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<