贝利信息

mysql从库延迟严重怎么办_mysql同步异常分析

日期:2026-01-25 00:00 / 作者:P粉602998670
主从延迟需先确认是否真延迟:Seconds_Behind_Master仅在SQL和IO线程空闲时准确,为NULL通常表示SQL线程已停止;应检查SHOW SLAVE STATUS中两个Running状态,并比对主从位点定位真实延迟。

主从延迟怎么看:先确认是不是真延迟

很多情况下所谓“延迟严重”,其实是监控误报或误读 Seconds_Behind_Master。这个值在从库 SQL 线程空闲、IO 线程也空闲时才准确;一旦从库正在执行大事务、或主库写入突增,它可能长时间卡在某个值不动,甚至为 NULL(比如 SQL 线程已停止)。

SQL 线程卡住:常见原因和快速定位

真正拖慢同步的,90% 是 SQL 线程执行慢,而不是网络或磁盘 IO。MySQL 5.7+ 可以用 performance_schema 查正在执行的复制事件:

SELECT * FROM performance_schema.replication_applier_status_by_worker\G

重点关注 LAST_SEEN_TRANSACTIONLAST_ERROR_NUMBER。常见卡点:

加速同步的实操手段:别只盯着并行复制

开启并行复制(slave_parallel_workers > 0)确实有用,但前提是主库写入本身能按库/表拆分。如果所有写都在一个库一个表,开再多 worker 也没用——全串行。

容易被忽略的底层瓶颈:磁盘和 relay log 配置

很多人查完 SQL 线程、开了并行,延迟还是下不去——这时候要看 I/O。

真正卡住的时候,往往不是配置没开,而是磁盘扛不住、事务太大、或者从库上跑了备份脚本把 IO 打满了。先看 iostat -x 1,再看 SHOW PROCESSLIST,比改参数管用得多。