MySQL 主从延迟问题全面梳理

前言 主从延迟是 MySQL 高可用架构中最高频的问题之一。很多人对延迟的理解停留在"大事务导致延迟"这个层面,遇到问题时无从下手。本文从复制链路的两个阶段出发——IO 线程和 SQL 线程——分别梳理常见延迟原因,并结合真实案例深入分析原理。 一、主从复制链路简述 理解延迟,先要清楚复制的完整链路: 主库写入事务 ↓ 主库 Dump 线程:读取 binlog 发送给从库 ↓ (网络传输) 从库 IO 线程:接收 binlog,写入 relay log ↓ 从库 SQL 线程(或并行 Worker):读取 relay log,回放事务 ↓ 从库数据与主库一致 延迟分两类: IO 延迟:从库 IO 线程落后于主库,relay log 还没接收完整 SQL 延迟:relay log 已收到,但 SQL 线程回放跟不上 用 SHOW SLAVE STATUS\G 区分: 1 2 3 4 5 6 7 8 SHOW SLAVE STATUS\G -- 判断是 IO 延迟还是 SQL 延迟: -- Master_Log_File / Read_Master_Log_Pos → IO 线程已读到的位置 -- Relay_Master_Log_File / Exec_Master_Log_Pos → SQL 线程已执行的位置 -- 如果 Read_Master_Log_Pos 远落后于主库最新位置 → IO 延迟 -- 如果 Read_Master_Log_Pos 接近主库,但 Exec_Master_Log_Pos 落后 → SQL 延迟 二、IO 线程延迟的常见原因 原因 1:网络带宽不足 原理: ...

2026年4月1日 · 6 分钟 · DBA Student