处理主从复制错误1032

142 阅读2分钟

背景:收到线上告警短信,主从复制连接超时

image.png

处理:登录从库查看可以发现Slave_SQL_Running状态为No, Last_Errno错误号为1032,并且根据错误日志信息得出是主库treasurer.pub_bank_fl_20210331表和从库treasurer.pub_bank_fl_20210331表数据不一样导致sql线程出错

image.png

引起错误号1032的原因的基本上都是因为主库执行update、insert、delete语句造成的。

根据公司规定先解决告警错误,再分析原因的原则,具体操作如下:

因为公司规定线上不允许使用第三方工具,主库与从库之间无法做数据对比,只能手工找出与主库不同的数据进行修改,好在数据库所有dml操作在邮件中都有记录,通过搜索邮件sql脚本中带pub_bank_fl_20210331表名的语句都列举出来,通过反推查找出不一致的数据,打个比方:

    UPDATE pub_bank_fl_20210331 SET acct_belong_ou_id = 'X23020' WHERE acct_no in('3500042109200031923','3500042109014486683','3500044119054005885','3500044109200012002') and acct_belong_ou_id = '192301';
    变成如下查询,查找主从库不同的数据:
    从库:SELECT * FROM treasurer.pub_bank_fl_20210331 WHERE acct_no in('3500042109200031923','3500042109014486683','3500044119054005885','3500044109200012002') and acct_belong_ou_id = '192301';
    主库:SELECT * FROM treasurer.pub_bank_fl_20210331 WHERE acct_no in('3500042109200031923','3500042109014486683','3500044119054005885','3500044109200012002') and acct_belong_ou_id = 'X23020';

得出结论,确实有3条update语句在主库修改生效,而在从库却没有生效, 具体如下操作:

image.png

image.png

自此告警消失:

image.png

其实也有别的解决办法,我如果没在邮件中找到对此表的dml操作,就会选择从库线程重建。

如果有数据对比工具拿更容易,像MySQL Utilities可以主从对比直接生成差异化sql,之前在csdn中有写到,贴一个链接:blog.csdn.net/nzy15854627…