教科書一覧へ

障害回復(リカバリ)

低頻約 16 分トランザクション処理

概要

本ユニットでは、システム障害でデータベースが壊れたとき、正しい状態へ戻す「障害回復(リカバリ)」を学びます。基準点となるチェックポイント、未完了処理を取り消すロールバック(後退復帰)、確定済み更新を再適用するロールフォワード(前進復帰)の仕組みと使い分けは、トランザクション処理の定番出題です。

用語5

チェックポイント

メモリ上の更新内容を定期的にディスクへ書き出し、回復の基準点とする時点。

チェックポイントは、その時点までの更新を確実にディスクへ反映し、「ここまでは確定済み」と記録する基準点です。これを設けることで、障害が起きても全履歴をたどる必要がなくなり、回復処理を直近のチェックポイント以降だけに絞れます。 回復はこの基準点を起点に行われ、未完了の処理はロールバック、完了済みの処理はロールフォワードで戻します。試験では、チェックポイントが回復処理の出発点になること、ログ(ジャーナル)と組み合わせて使われることを押さえておきましょう。

たとえ長い文章を書くとき、こまめに「上書き保存」しておくのと同じ。途中でパソコンが落ちても、最後に保存した地点から書き直せばよく、最初からやり直さずに済みます。

記憶フックチェックポイントといえば回復の起点となる「ここまで確定」の保存地点

処理開始

チェックポイント(ここまで確定)

障害発生

完了済みはロールフォワード

未完了はロールバック

ロールバック

未完了トランザクションの更新を取り消し、処理前の状態へ戻す操作。

ロールバックは、途中で失敗・中断したトランザクションの更新を打ち消し、その処理を始める前の状態に戻す操作です。更新前の値を記録した「更新前ログ(ビフォアイメージ)」を使って元へ戻します。 時間をさかのぼる向きの回復なので「後退復帰」とも呼ばれます。試験では、未完了の処理に対して行う点、更新前ログを使う点が問われ、確定済みの処理を再適用するロールフォワードとの違いが頻出です。完了していない処理は「なかったこと」にする、と覚えましょう。

たとえワープロやブラウザの「元に戻す(Undo)」ボタンと同じ。書きかけて失敗した操作を取り消し、手を付ける前の状態にきれいに戻します。

記憶フックロールバックといえば未完了処理を取り消す後退復帰(Undo)

バックワードリカバリ

ロールバックによって処理前の状態へ戻す後退復帰の総称。

バックワードリカバリは、ロールバックを使ってデータを時間的に前(処理開始前)へ戻す回復方式の呼び名です。「後退復帰」と訳され、ロールバックそのものを指す総称と考えてよいです。 更新前ログ(ビフォアイメージ)を使い、未完了トランザクションを取り消す点が特徴です。試験では、前進復帰であるフォワードリカバリ(ロールフォワード)と対で問われます。バックワード=後ろ向き=取り消し、と方向のイメージで区別すると間違えません。

たとえ録画した動画を「巻き戻し」して、まだ完成していない場面を撮る前まで戻すようなもの。進めた分を巻き戻して、やり直す前の状態に合わせます。

記憶フックバックワードリカバリといえばロールバックで戻す後退復帰

ロールフォワード

バックアップに確定済みの更新を再適用し、障害直前の状態へ進める操作。

ロールフォワードは、ディスク障害などで壊れたデータを、バックアップ(過去の保存)に対して「更新後ログ(アフタイメージ)」を順に再適用し、障害直前の正しい状態まで進める操作です。 時間を前へ進める向きの回復なので「前進復帰」とも呼ばれます。対象は正常に完了(コミット)済みのトランザクションです。試験では、更新後ログを使う点、バックアップから再現する点が問われ、未完了処理を取り消すロールバックとの違いが頻出です。完了済みは「もう一度やり直して進める」と覚えましょう。

たとえ古いセーブデータから再開し、操作の記録(リプレイ)を流して直前の場面まで一気に進めるゲームのようなもの。確定済みの操作を再生して最新状態に追いつかせます。

記憶フックロールフォワードといえば確定済み更新を再適用する前進復帰(Redo)

バックアップ

更新後ログ(アフタイメージ)を再適用

障害直前の正しい状態

フォワードリカバリ

ロールフォワードによって障害直前の状態へ進める前進復帰の総称。

フォワードリカバリは、ロールフォワードを使ってデータを時間的に後(障害直前)へ進める回復方式の呼び名です。「前進復帰」と訳され、ロールフォワードそのものを指す総称と考えてよいです。 バックアップと更新後ログ(アフタイメージ)を使い、確定済みトランザクションを再現する点が特徴です。試験では、後退復帰のバックワードリカバリと対で出ます。フォワード=前向き=再適用、ディスク障害のような物理的破損からの回復に使う、と方向と用途で押さえましょう。

たとえ古い写しから清書をやり直すとき、控えのメモ(更新記録)を順に書き写して最新版に追いつかせるようなもの。進めた記録を再現して元の最新状態に戻します。

記憶フックフォワードリカバリといえばロールフォワードで進める前進復帰

まとめ

要点

  • チェックポイントは更新をディスクへ書き出した「ここまで確定」の基準点で、回復処理の起点になる。
  • ロールバック(後退復帰/バックワードリカバリ)は未完了トランザクションを更新前ログ(ビフォアイメージ)で取り消す。
  • ロールフォワード(前進復帰/フォワードリカバリ)は確定済み更新を更新後ログ(アフタイメージ)でバックアップに再適用する。
  • 未完了はロールバック、完了済みはロールフォワードという使い分けが頻出ポイント。
  • ディスク破損などの物理障害からの回復にはバックアップ+ロールフォワード(前進復帰)を用いる。

記憶フック一覧

  • チェックポイント: チェックポイントといえば回復の起点となる「ここまで確定」の保存地点
  • ロールバック: ロールバックといえば未完了処理を取り消す後退復帰(Undo)
  • バックワードリカバリ: バックワードリカバリといえばロールバックで戻す後退復帰
  • ロールフォワード: ロールフォワードといえば確定済み更新を再適用する前進復帰(Redo)
  • フォワードリカバリ: フォワードリカバリといえばロールフォワードで進める前進復帰

関連の過去問演習は今後のアップデートで追加予定です。