织梦如何做中英文网站大兴安岭做网站

张小明 2026/1/9 11:18:22
织梦如何做中英文网站,大兴安岭做网站,wordpress背景图片尺寸,买网站服务器要多少钱凌晨三点#xff0c;你刚上线一个支付功能。用户 A 给 B 转了 100 块#xff0c;页面显示“转账成功”。可第二天一早#xff0c;客服炸了——B 的账户没收到钱#xff01;更诡异的是#xff0c;主库数据是对的#xff0c;但从库却少了这笔记录。你懵了#xff1a;“明明…凌晨三点你刚上线一个支付功能。用户 A 给 B 转了 100 块页面显示“转账成功”。可第二天一早客服炸了——B 的账户没收到钱更诡异的是主库数据是对的但从库却少了这笔记录。你懵了“明明 COMMIT 成功了怎么还会丢数据”如果此时主库故障高可用进行了切换此刻你是不是更崩溃今天我们就用一次真实转账,探索一下MySQL里的Redo Log、Binlog以及所谓的两阶段提交2PC--这套被无数大厂面试官反复追问、却少有人真正清楚理解的底层逻辑。1. 你以为的“提交”其实只是开始当你执行BEGIN;UPDATE accounts SET balance balance - 100 WHERE user A;UPDATE accounts SET balance balance 100 WHERE user B;COMMIT;你以为 COMMIT 一敲钱就稳了错 此时数据可能还在内存里Buffer Pool根本没写到磁盘。如果服务器突然断电这笔交易就会凭空消失。那 MySQL 怎么保证“不丢”靠 Redo Log。Redo Log 是 InnoDB 的“后悔药”它先把你改的数据“记一笔账”哪怕机器炸了重启后也能照着日志把数据补回来。但问题来了光有 Redo Log从库怎么办这时候Binlog 登场了。Binlog 是 MySQL Server 的“操作录像”它记录你执行了什么 SQL或具体哪行变了专门给从库看也用于备份恢复。于是一个事务要同时写两个日志InnoDB 写 Redo Log保自己Server 写 Binlog保别人但这两个模块互不隶属谁先写谁后写万一中间崩了怎么办 这就是灾难的起点。2. 最危险的“半提交”时刻想象这个场景Redo Log 写成功了事务在主库已“生效”正要写 Binlog机房跳闸或者服务器故障了结果主库重启后这笔转账还在但从库压根没收到 Binlog余额没变。主从不一致用户投诉、对账失败、资金差错……反过来也一样Binlog 写进去了但从库还没拉Redo Log 没落盘就崩了 → 主库回滚但从库执行了 → 凭空多出 100 块这两种情况在金融系统里都是致命事故。所以MySQL 必须确保Redo Log 和 Binlog 要么都成功要么都失败。怎么做到答案就是 —— 两阶段提交Two-Phase Commit, 2PC。3. 两阶段提交用“准备”锁住不确定性2PC的核心思想很简单把提交拆成两步中间加个“准备”状态并用事务 IDXID把两个日志拴在一起。如果是默认双1innodb_flush_log_at_trx_commit、sync_binlog参数都为1后文也用双1模式代指模式的话正常流程简化后写内存等忽略的长这样阶段步骤执行者操作日志状态是否刷盘作用执行阶段1InnoDB Server执行 DML修改 Buffer Pool生成 Redo Log内存和 Binlog内存Redo: in-memoryBinlog: in-buffer否数据变更暂存内存Prepare 阶段2InnoDB将 Redo Log 标记为PREPARE写入 XID1001Redo: PREPARE(XID1001)是fsync锁定事务状态防止回滚Commit 阶段 - Step 13Server将事务的 Binlog 写入 binlog 文件Binlog: contains XID1001是fsync确保从库能同步Commit 阶段 - Step 24InnoDB在redo log中添加commit记录(含xidRedo: COMMIT(XID1001)是fsync完成事务提交完成5—返回客户端“事务提交成功”——对外可见其中每一步的关键动作如下步骤操作关键动作1执行 UPDATE数据改在内存Redo 和 Binlog 先缓存2Prepare 阶段InnoDB把Redo Log标为PREPARE, 刷盘3写 BinlogServer 把 Binlog 写入文件刷盘4Commit 阶段InnoDB在Redo Log里追加commit,刷盘✅ 只有走完这四步,MySQL才敢告诉客户端“事务成功”。注意第 2 步和第 3 步之间的“缝隙”——这是唯一可能出问题的地方。但正因为有了 PREPARE 状态 XIDMySQL 才能在崩溃后“断案”。流程图如下4. 崩溃恢复靠 Binlog 当“裁判”MySQL 启动时InnoDB 会自动扫描 Redo Log重点盯住那些卡在 PREPARE 的事务。然后它做一件事拿着事务的 XID去 Binlog 里查有没有这条记录。Redo Log 状态Binlog 中是否存在相同 XID恢复动作原因PREPARE✅ 存在提交CommitBinlog 已落盘说明事务已进入 Commit 阶段应完成提交PREPARE❌ 不存在回滚RollbackBinlog 未写入说明事务未完成 2PC应视为未提交COMMIT一定存在否则是bug已提交无需处理Redo Log 已完整提交无记录无需对比无此事务事务未开始或已清理举个例子在Prepare阶段后断电Redo prepare 成功Binlog 没写→ Binlog 查无此 XID → 回滚 → A 和 B 钱都没动 →因为没有binlog从库也不会有变化主从一致。在写Binlog后断电Binlog 已写Redo commit没写→Binlog 有记录→提交→转账成功→有binlog从库也更新成功→主库崩溃恢复后主库操作也成功→ 主从一致。这就是 2PC 的精妙之处用Binlog里的状况作为最终裁决者兜底所有不确定性。5. 对比Redo Log vs Binlog下面从多个维度来对比一下维度Redo LogBinlog所属层级InnoDB 存储引擎层MySQL Server 层日志类型物理日志记录“页如何变”逻辑日志记录“SQL 或行如何变”记录内容示例“page 123, offset 456: 900 → 800”UPDATE accounts SET balance800 WHERE id1;STATEMENT或记录前后镜像ROW主要用途崩溃恢复Crash Recovery主从复制Replication、时间点恢复PITR写入时机事务执行过程中生成提交时刷盘事务提交前生成提交时写入并可刷盘存储方式固定大小的循环文件默认 48MB可配置追加写入的多个文件按max_binlog_size切割是否支持事务是与事务强绑定是但需配合 InnoDB 才能保证 ACID是否跨引擎否仅 InnoDB 使用是所有引擎都可写但 MyISAM 不支持事务刷盘控制参数innodb_flush_log_at_trx_commit• 1每次 COMMIT 刷盘安全• 0/2延迟刷盘性能好可能丢数据sync_binlog• 1每次事务刷盘安全• N每 N 次事务刷一次性能好最多丢 N-1 个事务是否可关闭可关闭但强烈不建议会失去崩溃恢复能力可关闭但关闭后无法做主从复制或 PITR恢复速度极快直接重做物理页较慢需解析 SQL 或逐行应用TipsRedo Log 是 InnoDB 的“内部保险”Binlog 是 MySQL 的“对外凭证”。两者必须协同才能既保内恢复又保外复制生产环境这两个参数必须设为1,否则你所谓的“高可用”可能只是造成数据不一致的“高风险”项6. 常见配置组合与风险分析innodb_flush_log_at_trx_commitsync_binlog安全性性能最大可能丢失数据适用场景11最高低0 事务操作系统崩溃也不丢失金融、支付等强一致性场景11000高高最多999个已提交事的Binlog高吞吐、容忍短暂主从延迟21中中操作系统崩溃时可能丢最近1秒 Redo一般业务追求性能及安全性平衡00低最高最多1秒内的所有事务日志型、非关键数据⚠️ 注意只要 sync_binlog 1就存在主从不一致风险因为 Binlog 可能未落盘而 Redo Log已提交7. 高频问题简单整理几个关于redo log和binlog的高频面试题及回答要点问题核心要点回答关键词Redo Log和Binlog有什么区别层级、内容、用途、刷盘机制物理 vs 逻辑、InnoDB vs Server、崩溃恢复 vs 主从复制为什么需要两阶段提交防止 Redo 与 Binlog 状态不一致原子性、XID 关联、主从一致2PC 流程是怎样的Prepare→Binlog→commit核心三步、XID、刷盘顺序崩溃后如何恢复查 Redo 中 PREPARE 事务核对 BinlogXID 匹配、提交/回滚决策能否只用 Redo Log可以恢复但无法复制缺少Binlog→无法主从同步组提交是什么优化 2PC 的刷盘性能多个事务合并fsync提升吞吐之前我们整理过其他的日志slow log、general log、错误日志,对于历史文章链接如下MySQL源码学习系列二--面试高频问题:general log、slowlog记录顺序MySQL错误日志文件突然暴涨的原因慢SQL探秘之为什么我的SQL很慢却没记录在慢查询日志里
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

php网站换服务器网站开发业务需求分析

Wan2.2-T2V-5B适配国产化硬件平台的可能性分析 在短视频内容爆炸式增长的今天,从一条广告创意到一段政务宣传动画,市场对“快速、低成本、高质量”视频生成的需求前所未有。传统制作依赖专业团队与高昂成本,而AI生成内容(AIGC&…

张小明 2026/1/6 2:35:19 网站建设

专业网站建设好不好国外网站大全帝国cms模板

Qwen3-235B-A22B:双模式推理重塑2025企业AI效率标准 【免费下载链接】Qwen3-235B-A22B-MLX-6bit 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-235B-A22B-MLX-6bit 导语 阿里通义千问推出的Qwen3-235B-A22B大模型,以2350亿总参数、…

张小明 2026/1/8 10:01:53 网站建设

好的网站建设方案网页制作啥专业

GPT-SoVITS能否应对快速语速挑战? 在短视频、AI播客和智能语音助手日益普及的今天,用户对语音合成系统的要求早已不再局限于“能说话”。越来越多的应用场景——比如新闻播报、有声书快进朗读、客服自动回复——都要求语音不仅自然,还要能在高…

张小明 2025/12/27 8:46:52 网站建设

长春seo网站排名网站建设教程免费湖南岚鸿

百度网盘极速下载:3步告别龟速等待的实用指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的下载速度而烦恼吗?想要实现百度网盘极速…

张小明 2026/1/1 12:31:14 网站建设

建网站英语怎么说网站后台如何做产品展示

你是否曾经在工作中急需使用微信网页版,却遭遇访问限制的困扰?在数字化办公时代,微信已经成为我们日常沟通不可或缺的工具,但网页版的访问问题却让无数用户头疼不已。今天,我们将为你揭秘一个简单有效的解决方案&#…

张小明 2025/12/29 13:37:54 网站建设

太原网站优化服务网络营销解决方案

编辑部 整理自 凹非寺量子位 | 公众号 QbitAI未来应该是智能体之间自主协同,解决复杂问题、自动化工作流程、自主下达任务,创建一种全新的商业模式。在量子位MEET2026智能未来大会上Google Cloud大中华区企业与中国初创业务负责人Dennis Yue分享了一个与…

张小明 2026/1/6 21:50:59 网站建设