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

网站开发语言学习漳州网站设计

网站开发语言学习,漳州网站设计,厦门百度快照优化排名,域名网站建设方案在启用二进制日志(binlog)的情况下,MySQL通过两阶段提交(2PC)机制确保redo log与binlog的一致性,避免因崩溃导致数据不一致。 1. 两阶段提交(2PC)的核心目标 原子性:确保…

        在启用二进制日志(binlog)的情况下,MySQL通过两阶段提交(2PC)机制确保redo log与binlog的一致性,避免因崩溃导致数据不一致。

1. 两阶段提交(2PC)的核心目标

  • 原子性:确保事务在redo log和binlog中要么全部提交,要么全部回滚

  • 一致性:主库与从库的数据一致(依赖binlog的可靠性)。

  • 持久性:崩溃恢复后,已提交事务的数据不丢失。

2. 两阶段提交的详细流程

阶段1:Prepare(准备阶段)

  • InnoDB Prepare

    • 将事务的修改写入redo log,并标记为PREPARE状态。

    • 调用fsync将redo log刷盘(由innodb_flush_log_at_trx_commit=1控制)。

    • 此时事务尚未提交,但已保证redo log的持久性。

阶段2:Commit(提交阶段)

  • Write Binlog

    • 将事务的SQL语句按事件格式写入binlog

    • 调用fsync将binlog刷盘(由sync_binlog=1控制)。

  • InnoDB Commit

    • 将事务的COMMIT标记写入redo log,并再次刷盘。

    • 释放行锁,清理undo log(若不再被其他事务依赖)。

3. 崩溃恢复机制

        若在提交过程中发生崩溃,MySQL重启后按以下逻辑恢复:

  • 扫描redo log

    • 查找所有处于PREPARE状态的事务(未提交的事务)。

  • 检查binlog

    • 如果binlog中存在对应事务的完整记录(XID匹配),说明事务已成功写入binlog,提交该事务

    • 如果binlog中无对应事务记录,说明事务未完成binlog写入,回滚该事务

4. 关键参数与配置

  • sync_binlog

    • =0:依赖操作系统刷盘,性能高但可能丢失事务。

    • =1:每次提交刷盘,保证binlog不丢失(推荐主从复制场景)。

    • =N:每N次提交刷盘,平衡性能与可靠性。

  • innodb_flush_log_at_trx_commit

    • =1:每次提交刷redo log,保证持久性(默认)。

    • =0:每秒刷盘,可能丢失1秒数据。

    • =2:写入OS缓存,不立即刷盘。

  • binlog_order_commits

    • 控制是否按binlog写入顺序提交事务(默认开启,保证主从一致性)。

5. 示例:事务提交与崩溃恢复场景

场景1:InnoDB Prepare后,写binlog前崩溃
  • 现象:redo log有PREPARE记录,binlog无事务记录。

  • 恢复:回滚事务(因binlog未写入,主从不一致风险)。

场景2:binlog写入后,InnoDB Commit前崩溃
  • 现象:redo log有PREPARE记录,binlog有完整事务。

  • 恢复:提交事务(重做COMMIT标记到redo log)。

6. 性能优化策略

  • 组提交(Group Commit)

    • 合并多个事务的redo log和binlog刷盘操作,减少I/O次数。

    • binlog组提交:通过binlog_group_commit_sync_delay参数延迟刷盘,批量处理。

  • 调整刷盘参数

    • 非严格一致性场景可设置sync_binlog=0innodb_flush_log_at_trx_commit=2

  • 并行复制

    • 从库使用多线程应用binlog事件,提升主从同步速度。

7. 与XA事务的关系

  • XA协议:两阶段提交是XA协议在MySQL中的具体实现,用于协调多个资源管理器(如InnoDB与binlog)。

  • 分布式事务:若事务涉及多个存储引擎或外部系统,MySQL通过XA协议保证全局一致性。

8. 总结

        通过两阶段提交,MySQL确保了redo log(存储引擎层)与binlog(Server层)的强一致性,这是主从复制和数据恢复的核心基础。参数配置需权衡性能与可靠性,而崩溃恢复机制通过比对两种日志的状态,最终决定事务的提交或回滚,保障了数据库的ACID特性。


文章转载自:

http://gtnOPlLx.trkhx.cn
http://QrQUVRHF.trkhx.cn
http://kwqYkKH8.trkhx.cn
http://QnaAvNJP.trkhx.cn
http://ddXqPr6F.trkhx.cn
http://WZv5GgIX.trkhx.cn
http://T4oPTlWj.trkhx.cn
http://KJNKXT26.trkhx.cn
http://2FecUHYu.trkhx.cn
http://jK1JTOKA.trkhx.cn
http://iZlf1YSD.trkhx.cn
http://NxOuDmsn.trkhx.cn
http://hdNpDRYK.trkhx.cn
http://0NEuT4s5.trkhx.cn
http://Pnok3Lm6.trkhx.cn
http://igwAAdKm.trkhx.cn
http://8tkdUVBo.trkhx.cn
http://bnyb3yow.trkhx.cn
http://0pQfRDlN.trkhx.cn
http://lJoDMvTJ.trkhx.cn
http://48ZXMMhX.trkhx.cn
http://ci8D2KKF.trkhx.cn
http://pV7JeLFZ.trkhx.cn
http://Ia06cYLt.trkhx.cn
http://33HDzfEQ.trkhx.cn
http://WJUncvlQ.trkhx.cn
http://6Sr5Zrbn.trkhx.cn
http://DMtksrQH.trkhx.cn
http://41p02UZp.trkhx.cn
http://oHH7QD0P.trkhx.cn
http://www.dtcms.com/wzjs/727138.html

相关文章:

  • 佛山专业网站制作设计软件工程开发
  • 小企业如何优化网站建设国外网站推广平台有哪些?
  • 网站开发的数据网站制作课程多少钱
  • 北京市建设投标网站百度关键词搜索查询
  • app网站建设需要什么永康网站优化公司
  • wordpress网站发布文章wordpress猫猫
  • 记事本做网站素材代码营销型网站设计难不难
  • wordpress的网站无法发布文章互联网网站开发发展
  • 阿里云做网站官网1920网页设计尺寸规范
  • 什么是网站的入口网站seo优化有哪些方面
  • 二级域名网站优化网站模板怎么连接域名
  • 网站外链 快速建设免费网站建设品牌好
  • 东莞seo建站个人网站seo
  • 网站建设业务员怎么着客户网站导航网站可以做吗
  • 长春电商网站建设公司排名北大青鸟网站开发
  • 网站建设难点和重点陕西网站维护
  • 网站 代理 备案 费用吗ppt代做网站
  • 响应式网站开发网上服务
  • 做个平台网站怎么做的网站首页快照应该怎么
  • 网站后台和前台关于营销的网站有哪些内容
  • 手机网站翻页全国企业信用信息公开系统查询
  • dedecms中英文网站营销网络建设体系
  • 没有网站怎么做排名优化宝安网站建设zrare
  • 南充网站建设略奥科技淘宝api 做网站
  • 三明网站建设大数据营销的优缺点
  • 中企动力网站模板网站注册管理策划方案
  • 永州网站建设公司上海手机网站建设方案
  • 做金融网站看那些素材wordpress换域名后图片路径不对
  • 做网站需要交接什么湛江房产网
  • 做外贸怎么连接国外网站什么网站可以做卡首屏淘口令