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

怎么制作网站下载软件网游在线玩

怎么制作网站下载软件,网游在线玩,phpcms 做购物网站,wordpress名言插件MySQL 中的“两阶段提交”(Two-Phase Commit,2PC)是用于分布式事务中的一种协议,目的是保证在多个数据库节点之间操作的一致性。虽然 MySQL 自身并不是分布式数据库,但在 使用 InnoDB 引擎和 binlog 的情况下&#xff…

MySQL 中的“两阶段提交”(Two-Phase Commit,2PC)是用于分布式事务中的一种协议,目的是保证在多个数据库节点之间操作的一致性。虽然 MySQL 自身并不是分布式数据库,但在 使用 InnoDB 引擎和 binlog 的情况下,为了保证 InnoDB 引擎的事务和 binlog 写入的一致性,MySQL 内部也使用了一个简化的“两阶段提交”机制。

📌 1. 场景:InnoDB + Binlog 的一致性

在 MySQL 中,事务提交时需要:

  • 把事务操作写入 InnoDB 的 redo log
  • 把操作写入 binlog(用于主从复制、数据恢复)

要保证这两个步骤一致,MySQL 使用了 两阶段提交协议

🧠 2. 两阶段提交的过程

✅ 第一阶段:准备阶段(Prepare Phase)

  1. InnoDB 引擎将事务的修改写入 redo log,并写入 prepare 状态(此时 redo log 并未提交)。
  2. 如果写入 redo log 成功,则继续。

✅ 第二阶段:提交阶段(Commit Phase)

  1. MySQL Server 层将事务写入 binlog。
  2. 如果写入成功:
    • 通知 InnoDB 提交 redo log(即将 redo log 状态从 prepare 改为 commit)。
  3. 如果写入 binlog 失败:
    • 则回滚事务,并让 InnoDB 回滚 redo log。

✅ 3. 为什么需要两阶段提交?

因为:

  • InnoDB 的 redo log 和 binlog 是 两个独立的系统
  • 必须保证 两者一致,否则在 crash 恢复或者主从复制时可能出现数据不一致。

举个例子,如果:

  • redo log 已经提交(物理上持久化)
  • 但 binlog 写入失败(主从复制数据就丢了)

这就会导致数据不一致。

解释

“redo log 已经提交(物理上持久化),但 binlog 写入失败”
意思是:

  • InnoDB 的事务操作已经写入了 redo log 并提交(事务在本地已经真正生效了)。
  • 但是 binlog(用于主从复制和 crash 恢复)没有成功写入磁盘或写失败。

⚠️ 会出现什么后果?

  1. 主库上事务已经生效(数据已经更新)
  2. binlog 没有记录这个操作
  3. 从库在复制时不会收到这个事务的数据
  4. ➜ 导致主库和从库的数据出现不一致❗️

⛓️ 举个简单例子:

在主库执行了这个 SQL:

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
执行过程:
  1. InnoDB 引擎生成了 redo log,并持久化(prepare + commit)
  2. 数据 已经写入磁盘并对用户可见
  3. 接下来要写 binlog
  4. 突然磁盘坏了、网络抖动、或者某些内部故障导致 binlog 写入失败
  5. MySQL 没能把这个操作记录到 binlog
🔥 结果:
  • 主库余额真的变少了(InnoDB 的数据生效)
  • 从库完全不知道这件事(因为没有 binlog 传过去)
  • ➜ 主从数据不一致,坏了!

为了避免这种情况,MySQL 使用了两阶段提交来保证:

要么 redo log 和 binlog 都写成功并提交
要么 都不提交,回滚掉

这样就能保证主库和从库保持数据一致性。

🧠 可以这样理解:

步骤redo logbinlog最终事务状态
正常提交提交
redo 成功,但 binlog 失败⚠️ 数据不一致(必须避免)
redo 失败回滚
binlog 成功,redo 未 prepare回滚

两阶段提交的目的就是防止表格中那种 “redo 成功但 binlog 失败” 的灾难情况。

⚙️ 4. 崩溃恢复时怎么处理?

  • 如果发现 redo log 是 prepare 状态,但没有 commit:
    • 说明 binlog 没写成功,回滚事务。
  • 如果 redo log 是 commit 状态
    • 说明事务已完全提交,恢复它。

📖 5. 总结一句话

MySQL 使用“两阶段提交”机制来保证 InnoDB 和 binlog 在事务提交时的 原子性和一致性,从而支持 crash-safe 和主从复制一致性。

http://www.dtcms.com/wzjs/838790.html

相关文章:

  • 搜索引擎营销案例分析题广州网站运营专业乐云seo
  • 建设网站需要客户提供什么资料seo简单优化
  • 特色的网站建设证件照片制作软件免费下载
  • 电商网站 流程图品牌网站是什么
  • 怎样做自己网站了解互联网 网站
  • 网站优化培训机构广告投放方式
  • 平面设计的网站有哪些网站资阳市建设局网站
  • 网站运营的含义google chrome官网入口
  • drupal 网站建设王通seo教程
  • wordpress有无缩略图seo官网优化
  • 中学网站建设软件外包公司是干什么的
  • 惠州外贸网站建设东莞网站建议
  • 宁波网站建设电话咨询桓台县旅游网站建设
  • 银行网站维护是做哪些巴中城乡建设官方网站
  • 花都网站推广wordpress菜单登录
  • 中企动力网站建设合同seo排名诊断
  • 做众筹网站怎么赚钱吗网站建设的网站
  • 如何百度收录自己的网站怎么创建网站链接
  • 一键免费搭建手机网站威海教育行业网站建设
  • 个体户能做网站备案吗邳州市建设局官方网站
  • 做啥英文网站赚钱单页网站上传教程视频
  • 如何跟帖做网站百度搜索推广创意方案
  • 网站建设关键要做好哪些工作服装设计参考网站
  • 哪个网站有免费lamp wordpress 404
  • 如何把动态图发网站做头像邯郸h5开发
  • 网站源码爬取工具淘宝做首页热点的什么网站
  • 进一步推进网站集约化建设北京官网seo收费
  • 有色建设网站江都建设局网站
  • 一个网站如何工作流程深圳自助建站网站
  • wordpress 网站域名免费外贸电商平台