MySQL半同步复制配置后性能降低,如何调整rpl_semi_sync参数提升效率?

2026-05-07 08:060阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计887个文字,预计阅读时间需要4分钟。

MySQL半同步复制配置后性能降低,如何调整rpl_semi_sync参数提升效率?

由于 `rpl_semi_sync_master_wait_for_slave_count` 默认是 1,数据库必须等待至少一个从库返回 ACK 才能提交事务;而 ACK 并非日志落盘完成,只是接收并写入 relay log 缓冲区 —— 但网络延迟、从库负载高、乃至 TCP 接收队列积压,都可能导致等待卡在主库的 `commit`。

  • 默认行为下,哪怕从库只慢 50ms,主库每条写事务就多等 50ms,QPS 直接腰斩
  • rpl_semi_sync_master_timeout 单位是毫秒,但设太小(比如 100)会导致频繁退化为异步,失去半同步意义;设太大(比如 10000)又放大延迟风险
  • MySQL 5.7+ 的 rpl_semi_sync_master_wait_point 设为 AFTER_SYNC(默认)比 AFTER_COMMIT 更安全,但也更慢——它要求主库先刷 binlog、再等 ACK,最后才提交本地事务

如何调低延迟又不丢数据

核心思路:不让主库“傻等”,而是用超时 + 自适应降级 + 精准 ACK 控制。

阅读全文
标签:Mysql

本文共计887个文字,预计阅读时间需要4分钟。

MySQL半同步复制配置后性能降低,如何调整rpl_semi_sync参数提升效率?

由于 `rpl_semi_sync_master_wait_for_slave_count` 默认是 1,数据库必须等待至少一个从库返回 ACK 才能提交事务;而 ACK 并非日志落盘完成,只是接收并写入 relay log 缓冲区 —— 但网络延迟、从库负载高、乃至 TCP 接收队列积压,都可能导致等待卡在主库的 `commit`。

  • 默认行为下,哪怕从库只慢 50ms,主库每条写事务就多等 50ms,QPS 直接腰斩
  • rpl_semi_sync_master_timeout 单位是毫秒,但设太小(比如 100)会导致频繁退化为异步,失去半同步意义;设太大(比如 10000)又放大延迟风险
  • MySQL 5.7+ 的 rpl_semi_sync_master_wait_point 设为 AFTER_SYNC(默认)比 AFTER_COMMIT 更安全,但也更慢——它要求主库先刷 binlog、再等 ACK,最后才提交本地事务

如何调低延迟又不丢数据

核心思路:不让主库“傻等”,而是用超时 + 自适应降级 + 精准 ACK 控制。

阅读全文
标签:Mysql