从属复制因 Last_SQL_Errno: 1032 而停止

从属复制因 Last_SQL_Errno: 1032 而停止

我已向现有 MySQL 复制添加了额外的从属服务器。主服务器和旧从属服务器运行正常,没有任何问题,但新添加的服务器停止运行并出现以下错误:

Last_SQL_Errno:1032
Last_SQL_Error:无法在表 xxx.email_events 上执行 Update_rows 事件;在“email_events”中找不到记录,Error_code:1032;处理程序错误 HA_ERR_KEY_NOT_FOUND;事件的主日志 mysqld-bin.000410,end_log_pos 368808733

修复后几个小时就没问题了。

问题

  • 我们可以永远跳过Last_SQL_Errno:1032
  • 跳过这个错误是否存在问题?

答案1

您可以找到类似以下 SQL 子句代码/usr/bin/mysqlbinlog -v --start-position=142743807 --stop-position=147399325 /data/mysql/data/master-bin.000010 > temp.log

然后根据特定位置的 temp.log 比较从数据库和主数据库的差异。然后更新从数据库。

然后跳过该行mysql -e "stop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave;";

答案2

对于遇到一次性错误的人,您可以尝试跳过该项目:

设置全局SQL_SLAVE_SKIP_COUNTER = 1;

启动从站;

答案3

您可以在从属的 my.cnf 中设置以下内容:[mysqld] slave-skip-errors=1032

但正如文档所述:除非您完全理解出现错误的原因,否则请勿使用此选项。此错误的可能原因之一可能是由于“Slave_IO_Running:是”但“Slave_SQL_Running:否”,这意味着您的 Slave IO 进程正在运行并从 Master 检索数据,但由于 Slave_SQL_Running 进程已停止而无法执行。可以使用 Monyog 等监控工具主动监控复制并提醒您主服务器和从服务器之间的错误或延迟或断开连接。

答案4

我遇到了同样的问题,我发现(通过“show slave status\G”的控制台日志),当我更改某些复制设置(在我的情况下是 MASTER_HOST)时,mysql 引擎会删除设置:MASTER_LOG_POS。在我将 MASTER_LOG_POS 更改为在从属上导入的转储中的内容后,一切都运行正常。也许这不是你的情况,但希望它能对某些人有所帮助。

相关内容