seconds_behind_master显示0不表示无延迟,因其仅基于last_master_timestamp估算,受大事务未提交、io线程滞后、主从时钟不同步及gtid并行回放影响;真实延迟需依赖pt-heartbeat、gtid差集和位点差综合判断。

Seconds_Behind_Master 显示 0 时,SQL 线程可能正卡在大事务里
这个字段只在 SQL 线程开始执行一个 event 时更新 last_master_timestamp,而整个事务(比如 UPDATE t1 SET a=1 WHERE id BETWEEN 1 AND 1000000)从 BEGIN 到 COMMIT 都算作“一个 event”。只要事务没提交,last_master_timestamp 就停在事务开始那一刻——看起来延迟是 0,其实已积压几十秒甚至更久。
- 现象:主库刚完成一个耗时 45 秒的 DML,从库
SHOW SLAVE STATUS中Seconds_Behind_Master仍为 0,Exec_Master_Log_Pos不动,Slave_SQL_Running_State是 Executing event - 验证方式:查
information_schema.INNODB_TRX,看是否有长事务阻塞回放;或用pt-heartbeat对比真实时间差 - 注意:MySQL 5.7+ 并行复制下,
last_master_timestamp可能只代表某个 worker 的最新事件,不代表全局进度
IO 线程滞后但 SQL 线程“假装很忙”
Seconds_Behind_Master 完全不感知 IO 线程状态。当 Read_Master_Log_Pos 远小于主库当前 Master_Log_Pos,但 Exec_Master_Log_Pos == Read_Master_Log_Pos 时,它就显示 0——其实 relay log 还没拉完,只是 SQL 线程把已有的那点日志“刚好”消化完了。
- 关键指标对比:
Read_Master_Log_Pos(IO 已读位置)vsMaster_Log_Pos(主库当前写入位置),差值越大说明网络或主库 dump 压力越大 - 常见诱因:主从间带宽不足、主库
binlog_dump线程被高并发阻塞、从库relay_log_space_limit设得太小导致 IO 频繁等待 - 监控建议:单独告警
Relay_Log_Space持续上涨 +Seconds_Behind_Master == 0,大概率是 IO 层堆积
主从系统时间不同步直接让该值失效
它的计算公式本质是:time(0) - last_master_timestamp - clock_diff_with_master。其中 clock_diff_with_master 是启动复制时一次性获取的差值,之后不再刷新。如果从库时间快了 3 秒,结果就是 -3 → MySQL 强制归零显示 0;如果慢了 86400 秒,就显示 86400 —— 和复制快慢毫无关系。
- 快速验证:主库和从库同时执行
date +%s,差值 > 1 秒即不可信 - 修复必须用
chronyd平滑校时,禁止date -s或ntpdate跳变,否则会触发复制线程重连并重算clock_diff_with_master - GTID 模式下这个问题更隐蔽,因为
last_master_timestamp更新逻辑与 position 模式不同,尤其在logical_clock并行模式中
真正该盯住的三个替代指标
别再单靠 Seconds_Behind_Master 做判断。线上唯一可信的是 pt-heartbeat 实测延迟,辅以两个原生指标交叉验证:
-
pt-heartbeat --database percona --table heartbeat --host slave_ip --monitor --seconds 2:主库每秒写心跳,从库读取后比对本地时间,毫秒级精度 -
Retrieved_Gtid_Set和Executed_Gtid_Set的事务数差:反映 GTID 模式下未应用事务数量,比时间戳更稳定 -
Relay_Log_Space+Slave_IO_Running_State:若状态长期是 Connecting to master 或 Waiting for master to send event,且Relay_Log_Space不涨,说明网络或主库 dump 出问题
最常被忽略的一点:即使所有指标都“正常”,业务查不到新数据也可能是从库被长事务锁住(比如未提交的 SELECT ... FOR UPDATE),和复制本身完全无关——得去 performance_schema.data_lock_waits 查锁链。











