媒体障害の回復操作とは バックアップとログの使い方を整理
基本情報技術者試験 平成30年度秋期 午前 問30 / データベース › トランザクション処理
過去問にチャレンジ
データベースが格納されている記憶媒体に故障が発生した場合,バックアップファイルとログを用いてデータベースを回復する操作はどれか。
- ア
アーカイブ
- イ
コミット
- ウ
チェックポイントダンプ
- エ
ロールフォワード
会話形式の解説
講師今回はデータベースの障害回復です。記憶媒体そのものが壊れる「媒体障害」のとき、バックアップファイルとログをどう使うのかに注目してください。
受験者媒体が壊れたなら、バックアップを戻せば終わりではないのですか。わざわざログも使う理由が分かりません。
講師そこが大事な点です。バックアップを復元すると、データベースはどの時点の内容に戻るでしょうか。
受験者バックアップを取った時点です。ということは、そのあとに行われた更新は消えたままになりますね。
講師そのとおりです。そこで、バックアップ取得後の更新を記録した更新後ログ、つまり更新した後の値が残っているログを順に反映して、障害が起きる直前の状態まで進めます。時間を前に進めるこの操作がロールフォワードです。
受験者前に進めるからフォワードなのですね。では、チェックポイントダンプも障害に関係する言葉なので迷いました。
講師チェックポイントダンプは、障害に備えて処理の途中の状態を定期的に記録しておく処理です。回復の材料を作る側であって、バックアップとログで回復する操作そのものではありません。
受験者準備と回復の区別ですね。コミットはどうでしょうか。トランザクションで出てくる言葉です。
講師コミットはトランザクションの更新を確定させる操作で、通常の処理の中で行うものです。障害後の回復手順ではありません。アーカイブはファイルを保管したり、複数のファイルを一つにまとめたりすることで、ログで更新をやり直す操作ではありません。
受験者整理すると、媒体障害ではバックアップを復元してから更新後ログを当てるので、答えはロールフォワードということですね。
講師正解です。逆向きの操作としてロールバックもあります。こちらは更新前ログを使って処理を取り消す後退復帰です。ロールフォワードは「やり直す」redo、ロールバックは「取り消す」undo と対応させると覚えやすいです。
受験者障害の種類によって、どちらを使うかが変わるのでしょうか。
講師変わります。トランザクション障害ではロールバックを使い、システム障害ではチェックポイントを起点にして、コミット済みの更新をロールフォワードで反映します。媒体障害ならバックアップ復元とロールフォワード、と障害ごとに組み合わせて押さえておきましょう。
まとめ
記憶媒体が壊れる媒体障害では、まずバックアップファイルを復元しますが、それだけではバックアップ取得時点の内容にしか戻りません。そこで更新後ログを順に適用して障害直前の状態まで進める操作がロールフォワード(前進復帰)です。チェックポイントダンプは回復の材料を作る処理、コミットは更新を確定させる操作、アーカイブはファイルの保管やまとめを指し、いずれも回復操作ではありません。逆向きのロールバックは更新前ログで処理を取り消す操作で、トランザクション障害で使います。
解答・解説
正解はエです
この問題のテーマ
記憶媒体が壊れてデータベースが失われた(媒体障害)ときに、バックアップファイルとログを使って元に戻す回復操作の名前を問う問題です。
解き方の考え方
まず、問題文の「バックアップファイルとログを用いて回復する」という条件に注目します。媒体障害では、データベース本体が使えなくなるので、最初にバックアップを復元します。ただし、復元しただけではバックアップを取った時点の内容にしか戻りません。そこで、その後に行われた更新を更新後ログから順に反映し、障害が起きる直前の状態まで進めます。時間を前に進めるこの回復操作を表す用語を、選択肢から選びます。
選択肢ごとの解説
- ×ア アーカイブアーカイブは、ファイルを長期間保管したり、複数のファイルを一つにまとめたりすることを指します。ログを使って更新をやり直す回復操作ではないので、問題文の条件に当てはまりません。
- ×イ コミットコミットは、トランザクションが行った更新を確定させる操作です。通常の処理の中で行う操作であり、媒体障害が起きた後にバックアップとログから回復する手順ではありません。
- ×ウ チェックポイントダンプチェックポイントダンプは、障害に備えて処理の途中の状態を定期的に記録しておく処理です。回復のための材料を作る側の処理であり、バックアップとログを使って回復する操作そのものではありません。
- ○エ ロールフォワードロールフォワードは、復元したバックアップに更新後ログを順に適用して、障害直前の状態までデータベースを戻す操作です。「バックアップファイルとログを用いて回復する」という問題文の条件にそのまま合うので、これが正解です。
補足
ロールフォワードは「やり直す」という意味の redo、ロールバックは「取り消す」という意味の undo と対応させると整理しやすくなります。障害の種類によって使う操作が変わる点もよく問われます。トランザクション障害ではロールバックを使い、システム障害ではチェックポイントを起点にして、コミット済みの更新をロールフォワードで反映します。
POINT
- 媒体障害では、バックアップを復元してから更新後ログを適用するロールフォワード(前進復帰)で回復します。
- ロールフォワードを行えば、障害が発生する直前の状態まで戻せます。
- ロールバック(後退復帰)は更新前ログを使って処理を取り消す操作で、ロールフォワードとは向きが逆です。
- コミットは更新を確定する操作で、障害から回復するための手順ではありません。
