顾文强
顾文强
Published on 2025-01-21 / 3 Visits
0
0

Mysql 主从同步失败

// 查看从机状态信息
SHOW REPLICA STATUS;
// 查看错误信息
SELECT * FROM performance_schema.replication_applier_status_by_worker;

Worker 1 failed executing transaction 'ANONYMOUS' at master log mysql-bin.000094, end_log_pos 44234483; Could not execute Delete_rows event on table xxl_job.xxl_job_log; Can't find record in 'xxl_job_log', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log FIRST, end_log_pos 44234483

这条错误信息是关于MySQL数据库复制(replication)或二进制日志(binary log)应用过程中遇到的问题。下面是对错误信息各部分的解释:

  1. Worker 1 failed executing transaction 'ANONYMOUS' at master log mysql-bin.000094, end_log_pos 44234483:

    • Worker 1: 通常指的是负责执行复制任务的线程或进程。

    • failed executing transaction 'ANONYMOUS': 表示在执行一个未命名(ANONYMOUS)的事务时失败了。

    • at master log mysql-bin.000094, end_log_pos 44234483: 指出问题发生在主服务器的二进制日志文件mysql-bin.000094中,位置是44234483

  2. Could not execute Delete_rows event on table xxl_job.xxl_job_log:

    • 表示无法在执行二进制日志中的Delete_rows事件时作用于表xxl_job.xxl_job_log

  3. Can't find record in 'xxl_job_log', Error_code: 1032:

    • Can't find record in 'xxl_job_log': 在xxl_job_log表中找不到要删除的记录。

    • Error_code: 1032: MySQL的错误代码1032,通常与找不到记录相关。

  4. handler error HA_ERR_KEY_NOT_FOUND:

    • 这是一个底层的存储引擎错误,HA_ERR_KEY_NOT_FOUND表示在尝试根据键(key)查找记录时未找到。

  5. the event's master log FIRST, end_log_pos 44234483:

    • 这部分可能有些混淆,但基本上它再次指出了问题发生的位置是在主服务器的二进制日志文件的哪个位置。FIRST可能是指这是该日志文件中的第一个出现问题的位置,或者是一个标记,但通常这种表述不是标准的MySQL错误消息的一部分,可能是从某个特定的上下文或工具中截取出来的。

综上所述,这个错误消息表明在MySQL的复制过程中,尝试删除xxl_job.xxl_job_log表中的一行记录时失败了,因为找不到对应的记录。这可能是由于主服务器和从服务器之间的数据不一致,或者是因为二进制日志中的事件与当前从服务器上的数据状态不匹配所导致的。解决这个问题可能需要检查主从服务器的数据一致性,或者重新配置复制。

解决方式:

  • master删除一条记录,而slave上找不到这条记录,这种情况下master都已经删除了,那么slave可以直接跳过

#先关闭slave
mysql> stop slave;

mysql> set global sql_replica_skip_counter=1;

#再开启slave
mysql> start slave;


Comment