0

0

mysql如何处理主从延迟问题_mysql从库并行回放优化

P粉602998670

P粉602998670

发布时间:2026-03-07 08:59:03

|

883人浏览过

|

来源于php中文网

原创

mysql 5.7+ 并行复制需 slave_parallel_type=logical_clock 配合 slave_parallel_workers 才生效;仅调大后者无效,因默认 database 级并发无法突破单库瓶颈。

mysql如何处理主从延迟问题_mysql从库并行回放优化

为什么 slave_parallel_workers 设了却没加速?

MySQL 5.7+ 的并行回放依赖 slave_parallel_typeslave_parallel_workers 配合生效,光调大后者没用。默认 slave_parallel_type=DATABASE,只按库级并发,如果主库所有写都在同一个库(比如全在 app_db),那从库还是单线程回放。

  • 必须设为 LOGICAL_CLOCK 才能基于组提交(binlog_group_commit_sync_delay 影响)实现事务级并行
  • slave_parallel_workers 建议设为 CPU 核数的 1–2 倍,但超过 8 后收益常不明显,反而增加调度开销
  • 确认 binlog_format=ROW,否则 LOGICAL_CLOCK 模式下可能退化为单线程

主库没开组提交,从库并行就等于摆设

从库并行回放依赖主库 binlog 中的 last_committedsequence_number 标记,而这由主库的组提交机制生成。如果主库 binlog_group_commit_sync_delay=0(默认)且 binlog_group_commit_sync_no_delay_count=0,高并发下仍可能产生大量单事务组,导致从库无法并行。

  • 适当调大 binlog_group_commit_sync_delay(如 100000,单位微秒),让多个事务攒批提交,提升组内事务数
  • 注意:这会略微增加主库响应延迟,需权衡一致性敏感度
  • 检查主库 SHOW MASTER STATUS 输出的 Executed_Gtid_Set 是否连续,若跳跃严重,说明组提交未生效

Seconds_Behind_Master 为 0 却还在延迟?

这个值只反映 SQL 线程读取 relay log 的位置和当前系统时间差,不反映实际数据可见性。尤其在开启并行回放后,SQL 线程本身不执行事务,只是分发给 worker 线程——而 Seconds_Behind_Master 不统计 worker 队列积压。

AI Code Reviewer
AI Code Reviewer

AI自动审核代码

下载
  • 查真实延迟用:SELECT TIMESTAMPDIFF(SECOND, MAX(timestamp), NOW()) FROM mysql.slave_relay_log_info(需启用 relay_log_info_repository=TABLE
  • 更准的方式是主从同步一个带时间戳的表(如 heartbeat 表定时更新),从库查该时间戳与本地 NOW() 差值
  • 观察 SHOW PROCESSLISTsystem user 开头的 Worker 线程状态,若大量处于 Waiting for an event from Coordinator,说明 coordinator 分发慢或 worker 阻塞

GTID 模式下跳过事务,为什么延迟反而恶化?

SET GTID_NEXT='xxx'; BEGIN; COMMIT; 跳过某个事务后,后续事务的 last_committed 可能被破坏,导致从库 worker 线程因依赖关系被迫串行等待。

  • 跳过前先查 SELECT * FROM performance_schema.replication_applier_status_by_worker,确认哪些 worker 正在处理哪些 GTID
  • 优先用 STOP SLAVE; SET GLOBAL sql_slave_skip_counter = 1; START SLAVE;(仅限非 GTID 模式);GTID 下务必用 gtid_purged 手动清理 + 重置从库,避免依赖链断裂
  • 跳过操作后,观察 Retrieved_Gtid_SetExecuted_Gtid_Set 差值是否持续扩大,若是,说明并行逻辑已紊乱

真正卡住的点往往不在参数调多大,而在主库组提交是否稳定、GTID 链是否完整、以及你怎么定义“延迟”——监控指标和业务感知之间,永远隔着一层事务可见性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1110

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

380

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2068

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

379

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1602

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

585

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

439

2024.04.29

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

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

精品课程

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

共48课时 | 2.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 844人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号