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

几句话概括,MySQL 半同步中,after_commit 与 after_sync 有什么区别

MySQL 半同步的 after_sync 和 after_commit 差别就是:主库在事务提交链路的哪个位置等待从库 ACK。
AFTER_SYNC

  1. 主库 prepare 事务
  2. 写 binlog,并 fsync 到磁盘
  3. 把 binlog event 发给从库
  4. 等至少一个半同步从库确认:已写入并刷盘 relay log
  5. 主库再 commit 到存储引擎
  6. 返回客户端成功
    特点:更安全。客户端看到 commit 成功时,事务已经至少存在于主库和一个从库的持久化日志中。并且在 ACK 前事务还没在主库存储引擎提交,所以其他客户端也看不到这个事务。MySQL 5.7 文档里 AFTER_SYNC 是默认值。

AFTER_COMMIT

  1. 主库 prepare 事务
  2. 写 binlog,并 fsync 到磁盘
  3. 主库先 commit 到存储引擎
  4. 再等待从库 ACK
  5. 收到 ACK 后返回客户端成功
    特点:风险窗口更大。事务已经在主库提交后,才等从库 ACK;所以在“主库已提交但从库还没 ACK”的窗口里,其他客户端可能已经读到这笔数据。如果此时主库崩溃并切到一个没收到该事务的从库,就可能出现“别的客户端曾经看到过的数据,在新主上没了”。

一句话记忆:

  • AFTER_SYNC:先等从库收到并刷盘,再主库提交,更偏一致性/无损切换。
  • AFTER_COMMIT:主库先提交,再等从库收到并刷盘,可见性更早,但故障切换风险更高。

注意:半同步的 ACK 只表示从库已经把事务事件写入并刷盘到 relay log,不表示从库已经执行并提交了这个事务。参考 MySQL 官方文档:
Semisynchronous Replication

http://www.jsqmd.com/news/1099546/

相关文章:

  • MHMarkets迈汇:“惠普携手开放人工智能”
  • Kiran-cc-daemon插件开发完全手册:如何为麒麟桌面扩展新的控制功能
  • Moneta Markets亿汇:“人工智能合规风险升温”
  • 软件测试的四个阶段【单元测试、集成测试、系统测试和验收测试】
  • go: Fail-Fast Pattern
  • ​​​​​​​旧尺子量新人:当求职者的“新技能”遇上面试官的“旧思维”
  • 万能遥控器app,各类家具都可用,推荐安装!
  • 【MES】自研MES采集设备数据的坑
  • 【2026最新】Adobe InDesign:Id2026专业排版神器
  • 基于STM32单片机的颜色识别 TCS3200 RGB 检测系统2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • Python 基础入门:列表、字典、函数与类,一篇搞定核心概念本文将从零开始,带你掌握 Python 最核心的四个概念:列表、字典、函数和类。
  • emanjusaka——彼岸花开可奈何
  • 2026主流EPC项目协同平台横向选型与避坑评测
  • Manus小程序邀请码获取渠道+教程,附手机版+PC官网
  • NET 安装 Aspose.Email for Python - Outlook SDK 安装
  • 基于STM32单片机火灾报警系统 智能楼宇 烟雾温度火焰防盗无线2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • Qt阅读器-缩略图
  • Go语言代码覆盖率实现一、什么是代码覆盖率
  • LLM喂文件神器-讲讲开源文件转换工具 file2md
  • 企业DLP选型指南:从入门到决策,一篇讲透
  • 10 种 RAG 模式
  • 你的 Agent 架构选错了:越复杂的 Agent 系统,越可能走向失败
  • 工业互联网组建与维护核心流程与实战要点
  • 什么是 Vaadin?
  • Fan Control完整教程:5个实用技巧优化电脑散热性能
  • 鸿蒙系统进一步学习(三):ArkUI的差分渲染
  • 3D CAD SDK 安装
  • Spring AI + RAG
  • 大模型服务弹性伸缩:从 GPU 利用率到 K8s HPA 的全链路实战
  • 告别Keil律师函!手把手教你用VSCode+GNU Arm+STM32CubeMX搭建免费单片机开发环境(Windows版)