【ばっくわーどりかばり】

バックワードリカバリ とは?

最終更新:
💡 途中で失敗した処理の更新を取り消す回復方法

障害などで完了できなかった処理の更新を取り消し、データの整合性を回復する手法。更新前の情報などを使って取り消すUNDOに相当し、ログの形式や回復手順はシステムによって異なる。

📌 このページのポイント
未完了の更新を取り消す 障害の時点で処理を区別 T1:コミット済み 確定した更新 残す T2:未完了 途中の更新 取り消す UNDO T2の更新前の状態 記録を使って戻す 更新前の記録 DB全体を過去へ戻すこととは違う REDOと組み合わせる回復手順もある
独立した2件の処理の例。T1の完了済み更新は残し、T2の未完了更新をUNDOする。
ひよこ ひよこ
バックワードリカバリで、何を戻すの?
ペンギン先生 ペンギン先生
途中で失敗した処理の更新を取り消すよ。たとえば振込の途中で口座から引き落としたのに、振込処理を完了できなかった場合、その処理による引き落としを戻して整合性を保つイメージだね。
ひよこ ひよこ
どうやって取り消すの?
ペンギン先生 ペンギン先生
更新前の情報など、取り消しに必要な記録を使うんだ。IBMのCICSでは更新前イメージを記録し、更新を戻す。取り消しはUNDOと呼ばれるけれど、すべてのデータベースが同じ形式のログで行うわけではないよ。
ひよこ ひよこ
フォワードリカバリとは、どう違うの?
ペンギン先生 ペンギン先生
フォワードリカバリはバックアップなどから更新を再適用して進める回復だよ。再適用するREDOと取り消すUNDOは役割が違う。Oracleの障害回復のように、まずログの変更を再適用し、残った未コミットの変更を取り消す手順もあるんだ。
ひよこ ひよこ
チェックポイントまで戻せばいいの?
ペンギン先生 ペンギン先生
そういう意味ではないよ。Oracleでは、チェックポイントが変更の再適用を始める位置の手がかりになる。完了済みの処理を残し、未完了の処理を取り消すので、全データをチェックポイント当時の状態へ巻き戻すわけではないんだ。
ひよこ ひよこ
回復は自動で動くの?
ペンギン先生 ペンギン先生
Oracleのインスタンス障害回復など、自動で動く仕組みがあるよ。ただしデータファイルや記録自体の損失まで同じ手順で直せるとは限らない。使っているシステムと障害の種類に応じて、バックアップや回復手順を確認するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「バックワードリカバリ」って出てきたら「未完了の処理の更新を取り消す回復方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Backward Recovery」 = 後方回復
💬 Backwardは後方へ、Recoveryは回復。記録を使って更新を取り消す方向を表すよ。完了済みの他の処理まで、障害前のある時点へ一律に戻すという意味ではないんだ。

参考資料

← 用語集にもどる