作者:微信小助手
发布时间:2023-05-24T21:53:21
天有不测风云,数据库有旦夕祸福。 前面写 Redo 日志的文章介绍过,数据库正常运行时,Redo 日志就是个累赘。 现在,终于到了 Redo 日志扬眉吐气,大显身手的时候了。 本文我们一起来看看,MySQL 在崩溃恢复过程中都干了哪些事情,Redo 日志又是怎么大显身手的。 本文介绍的崩溃恢复过程,包含 目录 1. 概述 2. 读取两次写页面 3. 恢复数据页 3.1 找到 last_checkpoint_lsn 3.2 修复损坏的数据页 3.3 读取 Redo 日志 3.4 应用 Redo 日志 4. 删除 undo 表空间 5. 初始化事务子系统 6. 重建 undo 表空间 7. 处理事务 7.1 清理已提交事务 7.2 回滚未提交 DDL 事务 7.3 回滚未提交 DML 事务 7.4 处理 PREPARE 事务 8. 总结 MySQL 崩溃也是一次关闭过程,只是比正常关闭着急了一些。 正常关闭时,MySQL 会做一系列收尾工作,例如:清理 undo 日志、合并 change buffer 缓冲区等操作。
server 层
和 InnoDB
,不涉及其它存储引擎,内容基于 MySQL 8.0.29
源码。
1. 概述