半同步复制

主库等待至少一个备库确认收到日志再返回(无需应用完成):在可靠性与时延之间取折中,是 MySQL 等数据库的常见选项。

备份与容灾速查数据更新于 2026-10-12

MySQL 半同步关键参数

MySQL 半同步关键参数
# 主库
rpl_semi_sync_source_enabled = ON
rpl_semi_sync_source_timeout = 1000        # 毫秒,超时退化为异步
rpl_semi_sync_source_wait_for_replica_count = 1
语义备库确认『收到日志』而非『应用完成』
超时行为超过 rpl_semi_sync_source_timeout 后退化为异步,写不再阻塞
监控点Rpl_semi_sync_source_status 是否仍为 ON
超时退化保证了可用性,但也意味着『退化为异步的时间段』存在数据丢失窗口,需要监控与告警覆盖。

易错点

  • 超时退化后没有告警:系统一直在异步模式下运行而无人知晓
  • 等待副本数设置与拓扑不匹配(副本数少于要求)时每个写都等到超时,性能骤降

数据来源与参考

  • MySQL 8.0 Reference Manual(Semisynchronous Replication 配置)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌