MySQL主从延迟(Replication Lag)是生产环境中非常常见的问题。要理解延迟的原因,首先要知道延迟通常发生在从库的 SQL 线程回放 Relay Log(中继日志)的过程中。 MySQL 主从延迟的常见原因可以归结为以下几个核心维度: 1. 主库并发高,从库单线程回放(架构设计瓶颈) 原因:主库上可能有多个客户端并发执行写操作,但在较早版本的 MySQL(5.6 之前)中,从库的 SQL 线程是单线程的。即使在 MySQL 5.7+ 引入了多线程复制(MTS,基于逻辑时钟或数据库/表级别),如果并发事务集中在同一张表或存在依赖关系,从库依然会退化为串行回放。 现象:主库 TPS 很高时,从库的回放速度跟不上主库的写入速度,导致延迟不断累积。 2. 存在大事务(Large Transactions) 原因:如果主库执行了一个耗时非常久的事务(例如一次性 、 或 几百万条数据),这个事务在主库上执行了 5 分钟,那么写入 Binlog 并传到从库后,从库的 SQL 线程也至少需要执行 5 分钟。在这 5 分钟内,后续的所有 Binlog 都要排队等待。 建议:在业务中应...