障害回復とバックアップ
障害回復とバックアップは、DBMSやストレージに障害が起きたときに、バックアップとログを使って障害直前のコミット済みの状態へ戻す仕組みである。障害の種類によって回復の手順が異なり、システム障害ではログを用いたロールフォワードとロールバックで回復する。媒体障害ではバックアップの復元を先に行い、その後にロールフォワードを行う。試験では、障害の種類に応じた手法の選択と、フルバックアップと差分バックアップの運用の違いが問われやすい。
障害の種類と回復の基本
システム障害は、メモリ上の処理が止まる障害であり、ディスク上のデータベース本体は残っている。この場合、チェックポイント以前にコミット済みの更新はデータベースに反映済みとして扱えるため、通常は回復作業の対象にならない。 チェックポイントは、回復時に読むログの範囲を絞るために取得される仕組みである。
チェックポイント取得後から障害発生前までにコミットした更新は、チェックポイント以降のログを使って再実行する。これがロールフォワードである。 一方、障害時点でまだコミットしていないトランザクションの更新は、更新前の内容に戻して取り消す必要がある。確定済みの更新は再適用し、未完了の更新は取り消すという組合せが回復の基本になる。
ロールフォワードは更新後の情報を使い、ロールバックは更新前の情報を使う。目的が、確定済みの更新を反映することか、未完了の更新を打ち消すことかで使う情報が決まる。 読取りだけで書込みのないトランザクションは、取り消すべき更新が存在しないためロールバックの対象にならない。
媒体障害からの復旧
媒体障害では、ディスクに保存されたデータベース本体が失われるため、ログだけでは回復できない。そこで、まずバックアップコピーからデータベースを復元し、バックアップ取得以降にコミットした全てのトランザクションをロールフォワードする。 復元後のログ適用は、確定済みの更新を再び反映する操作である。ログに記録が残っていない更新は回復できないため、ログの保存も回復の前提になる。
この節の続き
- バックアップ方式の違いと運用
- 必要な磁気テープ本数の考え方
- 試験で問われやすい区別
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む