MySQL 主从复制延迟太高怎么排查与修复

落敏君_1069

落敏君_1069

2026-09-04

435人浏览

原创

主从延迟高需分四步排查修复:先确认真实延迟(查io/sql线程状态、gtid差异、pt-heartbeat),再定位卡点(io拉取、sql回放、锁等待),接着针对性处理大事务、硬件不足、ddl阻塞等问题,最后开启并行复制并加强监控。

mysql 主从复制延迟太高怎么排查与修复

主从延迟高不是单一问题,而是复制链路上多个环节协同失衡的结果。核心思路是先确认是否真延迟、再定位卡点在哪、最后针对性修复,不能只盯着 Seconds_Behind_Master 数值。

第一步:确认真实延迟,别被假象骗了

执行 SHOW SLAVE STATUS\G 后,重点看三个字段:

  • Slave_IO_RunningSlave_SQL_Running 必须都是 Yes;只要有一个是 No,说明同步已中断,延迟值失去意义
  • Seconds_Behind_Master > 0 是延迟信号,但为 NULL 或长期不变(比如卡在 37265 秒)往往意味着 SQL 线程被阻塞,而非单纯慢
  • 对比 Retrieved_Gtid_SetExecuted_Gtid_Set:如果前者持续增长、后者停滞不动,基本可断定是 SQL 线程卡在某个事务上

更可靠的方式是部署 pt-heartbeat,它通过写入时间戳表并从从库读取差值,反映真实数据落盘延迟,不受大事务或网络抖动干扰。

第二步:快速定位卡点位置

复制链路分三段:主库 dump → 网络传输 → 从库 relay + 回放。按顺序排查:

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • IO 线程是否跟得上? 查看 Relay_Log_Space 是否持续增大;若增大很快,说明 binlog 拉取没问题,问题在从库回放侧
  • SQL 线程是否忙碌? 执行 SHOW PROCESSLIST,找状态为 Reading event from the relay logexecuting 且运行时间很长的线程;同时查 INFORMATION_SCHEMA.INNODB_TRX,看是否有超长事务正在执行
  • 有没有锁等待? 特别注意 DDL 操作(如 ALTER TABLE)会触发元数据锁(MDL),导致后续所有事务排队;检查 performance_schema.metadata_locks 表可验证

第三步:常见卡点与对应修复动作

根据高频根因,直接对应处理:

  • 大事务压垮 SQL 线程:主库批量导入、归档删除等操作未拆分。修复方式:在业务低峰期重跑,并把单事务控制在 1 万行以内;从库启用 slave_preserve_commit_order=ON 配合并行复制,避免退化为串行
  • 从库硬件拖后腿:CPU 核数少于主库、磁盘仍是 HDD、innodb_buffer_pool_size 不足总内存 70%。修复方式:从库配置至少不弱于主库;强制使用 SSD;调大 buffer pool 并重启
  • DDL 导致元数据锁阻塞:主库执行 ALTER 后,从库 SQL 线程卡住。修复方式:改用 ALGORITHM=INPLACE 的 Online DDL;或提前在从库执行相同 DDL(确保 GTID 不冲突)
  • ROW 格式 + 分区表 + 无主键/二级索引扫描:这类组合会让从库回放极慢。修复方式:给表补全主键;避免在存储过程中执行条件复杂的 DELETE;必要时临时切回 STATEMENT 格式(需评估安全性)

第四步:稳态优化,防止反复复发

修复完当前问题后,要做两件事防复发:

  • 开启多线程复制:MySQL 5.7+ 设置 slave_parallel_workers = 8(建议设为 CPU 核数的 75%),并确保 binlog_transaction_dependency_tracking = WRITESET,提升并行粒度
  • 加监控告警:对 Seconds_Behind_Master > 30Relay_Log_Space > 2G、SQL 线程状态异常等设置分钟级告警,别等用户投诉才响应

不复杂但容易忽略

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

mysql 主从复制

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

417

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

820

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2372

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

796

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

689

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

354

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2116

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

3892

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

627

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 169人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 273人学习