FE EXAM

ロールフォワード(前進復旧)

障害発生後にログの更新後情報を使ってコミット済みの内容を復元する回復処理。

INTERACTIVE VISUALIZATION
バックアップ
ログ
DB
バックアップ
未取得
DBの現在値
1,000円
状態
正常
シナリオ
ステップ1 / 8
STEP 1/8残高1000円の状態ある口座の残高が1000円ある状態からスタートします。データベース(DB)は、こうした値をディスクに保存しています。これからこの値が更新されていきますが、まずは安全のためにバックアップを取ります。
バックアップ未取得ログ(更新後情報 = after image)まだ記録なしデータベース1,000円古い状態 → 新しい状態(前へ進める)
解説

📌
ロールフォワードとは

バックアップ最新ログで前へ進める

ロールフォワード(前進復旧)とは、障害が起きたあと、バックアップを起点にして、ログ(=処理の記録)に残した更新後の情報を使い、コミット済みの最新状態まで復元する回復処理のことです。時間を「前へ」進めるように復旧するので前進復旧と呼びます。

身近な例で考えると、ゲームのセーブデータと操作履歴に似ています。少し前のセーブデータ(=バックアップ)から再開し、そのあとの操作履歴(=ログ)を順番にやり直せば、ゲームオーバーした直前の場面まで戻せます。最初からやり直す必要はありません。

上のツールで▶ボタンを押すと、バックアップを取ってから更新が進み、ディスク障害が起きたあと、バックアップ+ログで最新の1800円まで前進復旧する流れを確認できます。

🔧
前進復旧の手順

ロールフォワードは、次の手順で進めます。バックアップで途中まで戻し、ログで残りを前へ進める、という2段構えがポイントです。

① バックアップから復元:障害で壊れたDBに、保存しておいたバックアップ(例:残高1000円)を書き戻す
② ログの更新後情報を順に適用:バックアップ以降の更新を、ログに残した「更新後の値」で古いものから順に上書きする(1000円→1500円→1800円)
③ コミット済みの最新状態へ:すべての更新後情報を適用し終えると、障害直前の状態に戻る

ここで使うのは「更新後情報(after image)=更新したあとの新しい値」です。これを順番に当てはめていくことで、データベースを「前へ前へ」と最新状態まで進めます。バックアップだけでは取得時点までしか戻せませんが、ログを組み合わせることで障害直前まで取り戻せるわけです。上のツールで、ログの2件が順に適用され値が増えていく様子を確認してみてください。

🎯
適用場面

ロールフォワードは、おもに ディスク(媒体)が物理的に壊れて、データベース本体が読めなくなったとき に使います。コミット済みの内容を、バックアップとログから取り戻すための仕組みです。

よく対比されるのが ロールバック(後退復旧) です。これは反対方向の回復処理で、更新前情報(before image)=更新する前の古い値を使い、未完了のトランザクションを取り消して元に戻します。2つの違いを整理すると次のとおりです。

項目ロールフォワードロールバック
方向前進(最新へ進める)後退(過去へ戻す)
使う情報更新後情報(after)更新前情報(before)
主な場面ディスク故障処理の異常終了

つまり、ディスクが壊れたらロールフォワードで前へ、処理が途中で失敗したらロールバックで後ろへ、と覚えると整理しやすいです。どちらもログを活用してデータベースを正しい状態に戻す、信頼性を支える大切な仕組みです。

練習問題

🎯
基本情報技術者 練習問題

Q1.ロールフォワードの説明として最も適切なものはどれか。
A.障害発生後、ログの更新後情報を使ってコミット済みの内容を復元する回復処理
B.未完了のトランザクションを取り消して開始前へ戻す回復処理
C.複数トランザクションの干渉を防ぐ仕組み
D.データを定期的にバックアップする操作
Q2.ロールフォワードで使われる情報はどれか。
A.ログの更新前情報(before image)
B.ログの更新後情報(after image)
C.画面のスクリーンショット
D.CPUの使用率の記録
Q3.ロールフォワードが使われる場面として適切なものはどれか。
A.ディスクが故障してデータベースが壊れたとき
B.トランザクションの途中でプログラムが異常終了し未完了になったとき
C.複数の利用者が同時にアクセスしたとき
D.データを暗号化したいとき

関連コンテンツ