今天遇到一个问题简单记录如下,还是第一次遇到。
一、问题展示
主从报警如下:
2022-01-10T11:42:26.761755Z 3 [Warning] Slave SQL for channel '': Worker 1 failed executing transaction '00320cc8-39f9-11ec-b5ba-000c2929706d:1' at master log binlog.000001,
end_log_pos 426; Could not execute Delete_rows event on table teset110.test; Can't find record in 'test', Error_code: 1032; handler error HA_ERR_END_OF_FILE;
the event's master log FIRST, end_log_pos 426, Error_code: 1032
当然这里是我模拟的,一般遇到这个这个问题,主从肯定是要报错的,但是这里没有报错只是做了一个警告,主从状态依旧正常。
二、和slave_skip_errors参数相关?
第一反应当然是常见的slave_skip_errors参数,但是看了一下slave_skip_errors参数,并没有设置。并且我测试了一下如果是slave_skip_errors跳过了错误,日志是note级别的,而不是wanring级别如下:
2022-01-10T11:23:47.088602Z 3 [Note] Slave SQL for channel '': Worker 1 failed executing transaction '00320cc8-39f9-11ec-b5ba-000c2929706d:6' at master log binlog.000002,
end_log_pos 1700; Could not execute Delete_rows event on table teset110.test; Can't find record in 'test', Error_code: 1032; handler error HA_ERR_END_OF_FILE;
the event's master log binlog.000002, end_log_pos 1700, Error_code: 1032
三、简单查看代码
既然一时间找不到原因,那么就根据错误搜索一下代码,然后简单跟一下。发现如下:
那么这里就是和我们的参数slave_exec_mode有关了,当slave_exec_mode设置为IDEMPOTENT的时候,原有的报错级别会变为warning,当然如果是slave_skip_errors则报错级别为note。
稍微翻了一下手册如下:IDEMPOTENT mode is intended for use in multi-source replication, circular replication, and some other special replication scenarios for NDB Cluster Replication.
因此不建议在正常的主从中设置slave_exec_mode和slave_skip_errors等参数,避免主从不一致的情况。
原文始发于微信公众号(MySQL学习):MySQL:主从一个少见的报警
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/20238.html