MySQL 主从同步延迟排查Slave_SQL_Running_State: Waiting for dependent transaction to commit

1. Waiting for dependent transaction to commit
1.1. 排查步骤:
1. 查看错误日志:
    ○ 从节点上执行:
        SHOW VARIABLES LIKE 'log_error';
2. 查看复制状态:
    ○ 从节点上执行:
        SHOW SLAVE STATUS;
3. 确认并行复制设置:
    ○ 从节点上执行:
        SHOW VARIABLES LIKE 'slave_parallel_workers';
4. 检查长事务:
    ○ 从节点上执行:
        SELECT * 
        FROM information_schema.innodb_trx 
        WHERE TIME_TO_SEC(timediff(now(),trx_started)) > 60; 
5. 查看主节点的 binlog:
    ○ 从节点上执行:
        SHOW MASTER STATUS;

1.2. 分析步骤输出的结果:
错误日志:

○ 寻找与同步问题相关的错误消息或警告。

复制状态:
○ SHOW SLAVE STATUS

  1.  Slave_IO_Running 和 Slave_SQL_Running:确保两者都为 "Yes",表示复制正在正常运行。
  2.  Slave_SQL_Running_State:显示 "Waiting for dependent transaction to commit",表示当前有一个事务正在等待依赖事务的提交。
  3.  Last_SQL_Error:查看错误信息。

并行复制设置:

○ 确保 slave_parallel_workers 的值合适。如果值过高,可能会导致资源竞争,而值过低可能会导致性能下降。

长事务:

○ 查询长时间运行的事务,可能会影响到复制的正常进行。

主节点的 binlog:

○ 确保主节点的 binlog 文件没有被清理。从节点需要获取到所有的 binlog 才能保持同步。
 

你可能感兴趣的:(MYSQL主从,数据库,sql,mybatis)