在前面两期月报中,我们详细介绍了 InnoDB redo log 和 undo log 的相关知识,本文将介绍 InnoDB 在崩溃恢复时的主要流程。
本文代码分析基于 MySQL 5.7.7-RC 版本,函数入口为 innobase_start_or_create_for_mysql
,这是一个非常冗长的函数,本文只涉及和崩溃恢复相关的代码。
在阅读本文前,强烈建议翻阅我们之前的两期月报:
1. MySQL · 引擎特性 · InnoDB undo log 漫游
2. MySQL · 引擎特性 · InnoDB redo log漫游
初始化崩溃恢复
首先初始化崩溃恢复所需要的内存对象:
recv_sys_create();
recv_sys_init(buf_pool_get_curr_size());
当InnoDB正常shutdown,在flush