InnoDB
のクラッシュ復旧作業はいくつかの手順に分けられます。最初の手順である再実行ログの適用が初期化中に実行され、その後、接続が開始されます。シャットダウン時またはクラッシュ時にバッファープールからテーブル領域
(ibdata*
および
*.ibd
ファイル)
にすべての変更がフラッシュされていた場合には、再実行ログの適用をスキップできます。起動時に再実行ログファイルが見つからない場合、InnoDB
は再実行ログの適用をスキップします。
再実行ログ適用後の残りの手順は再実行ログに依存しない (書き込みのロギングは除く) ため、通常の処理と並行して実行されます。それらを次に示します。
不完全なトランザクションのロールバック: クラッシュ時または高速シャットダウン時にアクティブだったすべてのトランザクション。
挿入バッファーマージ: インデックスページをバッファープールに読み込む際の、(共有テーブル領域からの) 挿入バッファーツリーから二次インデックスのリーフページへの変更の適用。
消去: アクティブなトランザクションからはもうアクセスできなくなった削除マーク付きのレコード。
これらのうち、不完全なトランザクションのロールバックだけがクラッシュ復旧に特有の作業です。挿入バッファーマージと消去は通常の処理で実行されます。