暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
《MySQL大智小技》2021版_部分4
881
64页
49次
2022-03-08
5墨值下载
4.9 记一次 mysql 更新未成功的排查过程
350
简单看下两阶段提交的流程
两阶段提交的时序图:
粗略观察一下上图,MySQL 想要执行事务的时候会分成两个阶段
第一阶段(prepare 阶段):redo-log 并将其标记为 prepare 状态。
紧接着写 binlog
4 章 故障解析
351
第二阶段(commit 阶段):写 binlog 并将其标记为 commit 状态。
两阶段写日志的意义?
你有没有想过这样一件事,binlog 默认都是不开启的
也就是说,如果你根本不需binlog 带给你的特性,那你根本就用不着让 MySQL binlog,也用不
什么两阶段提交。
只用一个 redolog 就够了。无论你的数据库如crashredolog 中记录的内容总能让你 MySQL 内存中
的数据恢复成 crash 之前的状态。
所以说,两阶段提交的主要用意是:为了保证 redolog binlog 数据的安全一致性(划重点!!!拐杖
敲黑板 3 次)。只有在这两个日志文件逻辑上高度一致了。你才能放心的使用 redolog 帮你将数据库
的状态恢复成 crash 之前的状态,使用 binlog 实现数据备份、恢复、以及主从复制。而两阶段提交的机
制可以保证这两个日志文件的逻辑是高度一致的。没有错误、没有冲突。
排查陷入僵
看到这里我们就发现两阶段提交保证了 redolog binlog 数据的安全一致性binlog 里进行 commitr
edolog 里一定是成功的也就是说:
根本不可能出现写了 binlog 但并没有写 redo-log 情况,完全不会出现小明描述的那样的问题。
经过反复思考,真実(しんじつ)は いつも ひとつ 平假:しんじつはいつもひとつ(真相只有一个)。
那就是描述信息里有遗漏,在更新后和查询前必定有一个事务对这个记录进行了操作。
of 64
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜