当前位置: 首页 > news >正文

半同步复制原理

MySQL 的 半同步复制(Semi-Synchronous Replication) 是一种介于 异步复制全同步复制 之间的数据复制机制,旨在提高数据一致性,同时尽量减少对主库性能的影响


核心原理(MySQL 8.0/5.7+)

1. 事务提交流程
  1. 主库记录日志:客户端提交事务后,主库先将变更写入 Binlog

  2. 等待确认:主库不会立即返回成功,而是等待 至少一个从库 将 Binlog 写入 Relay Log 并返回 ACK 确认

  3. 事务提交返回:主库收到 ACK 后,才正式提交事务并返回成功给客户端。

2. 超时降级机制
  • 如果主库在指定时间内(默认 rpl_semi_sync_master_timeout = 10s)未收到 ACK,则自动降级为异步复制,避免阻塞事务。

  • 当从库恢复后,主库会自动重新切换回半同步模式


两种确认模式(MySQL 5.7+)

模式说明
AFTER_SYNC推荐模式(默认):主库先同步 Binlog 到从库,再提交事务并返回客户端,数据一致性更强。
AFTER_COMMIT主库先提交事务,再等待从库 ACK,存在“主库已提交但从库未同步”的风险。

优缺点对比

维度半同步复制异步复制全同步复制(组复制)
数据一致性✅ 高(至少一个从库确认)❌ 低(可能丢失数据)✅ 最高(所有从库确认)
延迟中等(等待 ACK)低(不等待)高(等待所有从库)
可用性中等(超时降级)高(主库不阻塞)低(主库可能阻塞)
配置复杂度中等(需插件+参数)低(默认)高(组复制)

实际配置(主库)

[mysqld]
plugin-load-add = semisync_source.so
rpl_semi_sync_source_enabled = 1
rpl_semi_sync_source_timeout = 5000  # 单位毫秒

从库:

[mysqld]
plugin-load-add = semisync_replica.so
rpl_semi_sync_replica_enabled = 1

一句话总结

半同步复制 = 异步复制 + “至少一个从库确认”机制,在性能和数据安全之间取得平衡,是高可用架构中的关键手段。

http://www.dtcms.com/a/314608.html

相关文章:

  • 企业级库存穿透技术实现:基于LSTM的实时损耗控制算法在快鹭AI办公系统中的实践
  • Jmeter进行性能并发测试
  • mybatis知识
  • 网安学习NO.21
  • 飞算JavaAI需求转SpringBoot项目沉浸式体验
  • 探访WAIC2025:当AI成为双刃剑,合合信息如何破解真假难题
  • 北京JAVA基础面试30天打卡01
  • SpringMvc跨域配置方法详解
  • Linux网络编程【基于UDP网络通信的群聊服务】
  • 通用代码自用
  • 李沐写作笔记
  • C语言结构体、位段、枚举、联合体
  • Codeforces Round 1004 (Div. 2)
  • win10 系统,一键保存截图, shift + print_screen
  • Ubuntu 下 MySQL 运维自动化部署教程(在线简易版)
  • 0.08B参数以小博大:用小模型生成媲美GPT-4o的古典诗词
  • TCP 四次挥手详解
  • springboot博客实战笔记01
  • 常见的Prompt设计误区
  • Centos Docker 安装手册(可用)
  • Web开发系列-第15章 项目部署-Docker
  • windows小组件能清理吗
  • 银河麒麟V10一键安装DM8的脚本及高阶运维SQL分享
  • 微型导轨:3D打印设备精度平稳的关键应用
  • 【Spring AI快速上手 (二)】Advisor实现对话上下文管理
  • 零基础掌握 Scrapy 和 Scrapy-Redis:爬虫分布式部署深度解析
  • C++少儿编程(二十一)—软件执行流程
  • 【微实验】MATLAB频谱 三维可视化
  • 量化大型语言模型的评估
  • Flutter开发 MaterrialApp基本属性介绍