首页/数据/数据库速查/主从延迟的常见原因清单
主从复制与高可用53 条

主从延迟的常见原因清单

延迟排查按五层走:从库硬件(IO/CPU)、大事务、单线程重放 vs 并行、锁竞争(MDL/行锁)、网络与 relay 写入;ROW 格式下重放开销通常是主因。

数据库速查数据更新于 2026-10-13

主从延迟的常见原因是什么

延迟排查可以按五层推进:从库硬件(IO 与 CPU)、大事务、单线程回放与并行度不足、锁竞争(元数据锁与行锁)、网络与 relay 日志写入。ROW 格式下从库要按行重放,如果主库表缺少主键或合适的索引,每条语句都要全表定位,这是最常被忽略的隐性延迟源。

基本信息

五个层次硬件、大事务、并行度、锁竞争、网络与 relay
并行复制关注 replica_parallel_workers 与写集合依赖
关键证据延迟曲线形状:阶梯、平台还是尖峰
监控项两侧 offset 差、worker 状态与 relay 日志增长速度
处置方向业务拆批、补齐主键与索引、调整并行度

典型使用场景

  • 延迟告警:按曲线形状先分类再定位层次
  • 大事务治理:把批量写入拆成可控批次
  • 无主键表治理:补齐主键减少从库全表定位
  • 并行复制配置:评估是否启用写集合依赖
  • 硬件评估:确认真实瓶颈在磁盘还是 CPU
  • 复盘归档:把每次延迟的原因与处置沉淀成清单

快速分层判断

快速分层判断
SHOW REPLICA STATUS\G        -- 1) 看延迟与 relay 日志增长
-- 2) 从库系统层看瓶颈:top 与 iostat -x 1
SELECT * FROM performance_schema.replication_applier_status_by_worker\G   -- 哪个 worker 忙
SELECT * FROM information_schema.innodb_trx ORDER BY trx_started LIMIT 5;  -- 长事务
SELECT trx_id, trx_rows_modified FROM information_schema.innodb_trx ORDER BY trx_rows_modified DESC LIMIT 5;
SHOW VARIABLES LIKE 'replica_parallel_workers';
SHOW VARIABLES LIKE 'replica_parallel_type';

原因分层对照

层次典型症状处置方向
硬件从库 IO 使用率饱和升级磁盘或分摊读写压力
大事务延迟阶梯式跳变后缓慢回落业务拆批、限制单次写入量
并行不足回放线程单核繁忙评估并行复制与写集合依赖
锁竞争回放线程在等行锁或元数据锁从库上避免长查询与长事务
网络与 relay位点不动或 relay 快速堆积检查链路与 relay 落盘盘性能
ROW 重放需要按主键定位行:主库表无主键或缺少合适索引时,从库执行代价极高,是隐性延迟源。
延迟曲线的形状比单点数值更有信息量:阶梯式跳变通常来自大事务,持续平台说明回放能力不足,周期性尖峰多半与备份、重写等后台任务重合。

易错点

  • 主库表没有主键,ROW 格式回放在从库退化为全表扫描,延迟长期居高不下
  • 大事务不拆分,一次批量写入就让从库延迟阶梯式跳升
  • 并行复制配置与实际负载不匹配,回放仍是单线程瓶颈
  • 从库上跑长查询与长事务,回放线程被锁等待卡住
  • 只盯延迟秒数不看曲线形状,处置方向从一开始就选错

数据来源与参考

  • MySQL 8.0 Reference Manual: Replication Troubleshooting

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌