障害回復とバックアップ
データベース
データベースが壊れても復旧できる仕組みがあるよ!ロールフォワードとロールバックを使い分けよう!
障害回復とバックアップ
簡単にいうと
データベースが壊れても復旧できる仕組みがあるよ!ロールフォワードとロールバックを使い分けよう!
① バックアップの3方式
データベースの障害に備えるためには、定期的なバックアップが不可欠です。バックアップには主に3つの方式があります。
| 方式 | 取得内容 | 取得時間 | 復旧時間 | 必要な保存量 |
|---|---|---|---|---|
| フルバックアップ | データベース全体を丸ごと取得 | 長い(最も時間がかかる) | 短い(1回のリストアで復旧) | 大きい |
| 差分バックアップ | 前回のフルバックアップ以降に変更されたデータのみ取得 | 中程度 | 中程度(フル+最新の差分の2回で復旧) | 中程度 |
| 増分バックアップ | 前回のバックアップ(フルまたは増分)以降に変更されたデータのみ取得 | 短い(最も少ないデータ量) | 長い(フル+全増分を順番に適用) | 小さい |
ポイントは取得時間と復旧時間のトレードオフです。フルバックアップは毎回全データを取るので時間がかかりますが、復旧は1回のリストアで済みます。増分バックアップは取得が速い反面、復旧時にはフルバックアップに加えてすべての増分を順番に適用する必要があり、復旧に時間がかかります。
② ログファイル(ジャーナルファイル)
ログファイル(ジャーナルファイル)は、データベースに対するすべての更新操作を時系列順に記録したファイルです。障害回復の要となる存在です。
ログには以下の情報が含まれます。
- 更新前情報(Before Image): 変更前のデータの状態
- 更新後情報(After Image): 変更後のデータの状態
- トランザクションID、更新日時、対象テーブル、対象行など
ログファイルの重要な原則がログ先書き(WAL: Write-Ahead Logging)です。これは「データベース本体を更新する前に、必ず先にログファイルに記録する」というルールです。この順序を守ることで、データ更新中にシステムがダウンしても、ログを参照してどこまで処理が完了していたかを正確に判断できます。
③ ロールフォワードとロールバック
障害の種類に応じて、2つの回復手法を使い分けます。
| 比較項目 | ロールフォワード(前進復帰) | ロールバック(後退復帰) |
|---|---|---|
| 対象障害 | ハードウェア障害(ディスク故障、停電など) | ソフトウェア障害(プログラムのバグ、デッドロックなど) |
| 使用情報 | バックアップ + ログの更新後情報 | ログの更新前情報 |
| 手順 | ①バックアップからデータを復元 → ②ログの更新後情報を順に適用してコミット済みの状態まで進める | ①ログの更新前情報を使って、未コミットのトランザクションの変更を取り消す |
| 動作の方向 | 過去→現在の方向に復元を進める | 現在→過去の方向に変更を巻き戻す |
| データ消失 | コミット済みデータは消失しない | 未コミットの変更のみ取り消し |
覚え方は「ロールフォワード=前に進む=バックアップ+更新後ログ=HW障害」「ロールバック=後ろに戻る=更新前ログ=SW障害」です。
④ イメージバックアップとファイルバックアップ
バックアップの取得方法にも2つのアプローチがあります。
| 方式 | 内容 | メリット | デメリット |
|---|---|---|---|
| イメージバックアップ | ディスク全体をそのままコピー(ビットレベルの複製) | OS・設定・データすべてを丸ごと復元可能。復旧が高速 | データ量が大きく、取得に時間がかかる |
| ファイルバックアップ | 必要なファイルやフォルダのみを選択してコピー | データ量が小さく、短時間で取得可能 | OS環境の復元ができない。ファイル単位の管理が必要 |
イメージバックアップはディスクの「写真」を撮るイメージで、システム全体の復元(災害復旧など)に適しています。ファイルバックアップは必要なデータだけを対象にするため、日常的な差分・増分バックアップに適しています。
具体例
ロールフォワードとロールバックの違いを、時間軸で具体的に追ってみましょう。
月曜日の夜: フルバックアップを取得(この時点のDBの完全なコピー)
火曜日: トランザクションT1(顧客Aの住所変更)→ コミット完了
水曜日: トランザクションT2(顧客Bの電話番号変更)→ コミット完了
木曜日の午前: トランザクションT3(顧客Cの削除)→ 実行中、未コミット
木曜日の午後: ディスク故障が発生!
この場合、ロールフォワードで回復します。
①月曜日のフルバックアップからDBを復元する
②ログの更新後情報を使って、T1(火曜)とT2(水曜)の変更を再適用する
③T3は未コミットなので適用しない
→ 水曜日のコミット完了時点のDBが復元されます。
一方、もしT3の処理中にプログラムのバグが発覚した場合はロールバックです。
①ログの更新前情報を使って、T3による変更を取り消す
→ T3実行前の状態に戻ります。T1とT2の結果はそのまま残ります。

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

ロールバック(後退復帰)
試験のポイント
- ・要は「ロールフォワード=バックアップ+更新後ログでHW障害回復、ロールバック=更新前ログでSW障害回復」
- ・WAL(ログ先書き)=データ更新前に必ずログに記録する原則
- ・フル/差分/増分の違いは取得時間vs復旧時間のトレードオフで理解する
独学で診断士合格を目指すなら
過去問演習・AI添削・テキストPDFまで
すべて揃ったプレミアムプランで合格を掴む!
予備校代の1/10以下で、独学の不安をまるごと解決
- 📝1次試験 過去問演習(全7科目・年度別)無制限プレミアム限定
- 🤖2次試験 AI添削(事例I〜IV・無制限)最適なフィードバックで実力アッププレミアム限定
- 📄科目別テキストPDFダウンロード。印刷して好きな使い方で学習できるプレミアム限定
- 🔖ブックマーク機能で苦手分野・何度も確認したい部分を管理プレミアム限定
- 📊学習記録・成績管理で自分の進捗を可視化プレミアム限定
プレミアムプラン
¥9,800(税込)
自動更新なし / 1年間有効
決済は Stripe(PCI-DSS準拠)で安全に処理されます。カード情報は当サービスに保存されません。