mysql主从同步挂掉,从数据库数据没有同步

文章描述了一种处理MySQL主从库数据同步故障的场景,由于从库执行主库事务时遇到错误(错误代码1032),导致数据未同步。解决方案包括检查主从状态、停止和重新启动slave服务、设置跳过错误的计数器。文中提到了两种思路:简单地跳过错误保持当前同步,或者严格恢复主从数据一致性,后者可能涉及备份和恢复操作,且在大型系统中不常见。
摘要由CSDN通过智能技术生成

问题: 项目中数据库使用的主从同步,报表查询使用的从数据库数据,测试人员发现项目中报表近两天天数据为空,经排查,发现从mysql主从挂掉了,数据没有同步过来.
问题原因: 从库执行主库事务时报错.
错误如下:
Last_Error: Could not execute Delete_rows event on table iam.analysis_app_tb;Can’t find record in ‘analysis_app_tb’,Error_code: 1032;handler error HA_ERR_KEY_NOT_FOUND;the event’s master log mysql-bin.000036,end_log_pos 1043243243
解决办法:
1,登录mysql从库,查询主从同步状态;

>show slave status\G;

结果显示Slave_SQL_Running: No,说明主从挂掉了;
2,停止slave服务

> stop slave;

3,设置跳过相关错误

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

4,开启slave服务

>start slave;

5,如果还有报错,重复步骤2-4;

解决思路:
可选方案如下:
一、查看Master最新的Position,将其作为Slave复制的起点。
这种思路体现的是过去的不一致既往不咎,现在保持同步即可。看起来,这个思路和恢复主从库数据的一致性的初衷有所违背,但这种方法,简单,高效,在测试环境,对历史数据要求不高的场景中可使用。

二、必须严格的恢复主从库数据的一致性。
在这里,也有两种思路:

  1. 备份主库数据,并在从库上恢复,在历史数据一致性的基础上开启同步,但这种方法比较麻烦,必须在主库上执行锁表操作,阻止客户端对于表数据的更新操作,而且在数据量大的情况下,备份也是个耗时的工程。其实,这种方法在实际生产环境中也很少用。
  2. Skip掉相关错误
    其实,这个说活不是很严谨,准备的说,是跳过相关的事务。在我今天这种情况下,就是skip掉因违反主键约束而失败的insert语句。

参考博客: https://m.xp.cn/b.php/112646.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值