当 MySQL关闭后,重启MySQL时,会进行 crash recovery操作,这里分析一下MySQL是如何进行的:
- 首先在启动Innodb存储引擎时会回滚事务系统的事务列表中未在Innodb中提交的处于 TRX_STATE_ACTIVE 状态的不完整的事务【在事务的两阶段提交过程中,xa prepare阶段会在Innodb中将事务的状态修改为 TRX_STATE_PREPARED状态】。核心代码如下:
2. 在 Innodb存储引擎启动之后根据 binlog 进行 xa recovery;Innodb解析 binlog,读取出所有已经完全写入 binlog的 xid,而后判断处于 rw_trx_list 中的事务的 xid 在 最后一个binlog的 xid 的 hash 表中是否存在,存在则 commit,不存在则 rollback。
Original: https://www.cnblogs.com/juanmaofeifei/p/16139609.html
Author: 卷毛狒狒
Title: MySQL启动过程详解四:crash recovery
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590935/
转载文章受原作者版权保护。转载请注明原作者出处!