リカバリとは(全体像)
リカバリは、停電やクラッシュなどの障害が起きても、データを正しい状態に戻す作業だよー。
身近にたとえると、作業記録(メモ)をとりながら進める感じ。「何をどう変えたか」を先に記録しておけば、途中で中断しても、記録を見てやり直せるのー。
押さえるのは、WAL(データを書く前にログを残す)を土台に、ロールフォワード(再適用)とロールバック(取り消し)で復旧することだよー。
詳しく:WALとロールフォワード/バックだけ覚えれば戦える
ここが記事の心臓部。まずWALを見ていこーね。
リカバリの基本
| 用語 | 内容 |
|---|---|
| WAL(先行書込ログ) | データを書き換える前に、まず作業記録(ログ)を残す |
| ロールフォワード(Redo) | ログを再適用して、最新の状態まで進める |
| ロールバック(Undo) | 途中で終わった処理を取り消して、なかったことにする |
| PITR | 任意の時点へ戻す復旧(ベースのバックアップ+ログの再適用) |
WALは「Write-Ahead Logging(先行書込ログ)」。データそのものを書き換える前に、まず作業記録(ログ)を残しておくやり方だよー。これがあれば、途中で壊れても記録から復旧できる(ACIDのD=永続性を支える)。
ここで一番のひっかけが「WALはログを削除すること」という誤解。WALは「先に書いて残す」しくみで、削除ではないよー。
復旧のときは、ロールフォワード(Redo)でログを再適用して最新に進め、ロールバック(Undo)で途中だった処理を取り消すのー。
そしてPITR(任意の時点へ戻す復旧)。
PITR(ある時点へ戻す)
| 項目 | 内容 |
|---|---|
| PITR | 「この時刻の状態」に戻せる復旧 |
| しくみ | 土台のバックアップ+そこからのログ(WAL)を再適用 |
ここで2つめのひっかけが「PITRは全部のバックアップだけで戻す」という誤解。PITRは、土台のバックアップに、そこからの作業記録(WAL)を再適用して、目的の時点まで戻すしくみだよー。
わかりやすく言い換えると
要するに、作業記録でイメージするとラクだよー。
①WAL … 変える前に「何をするか」を先にメモしておく(あとで復旧できる)
②ロールフォワード/ロールバック … 記録を再生して進める/途中の作業を取り消す
③PITR … 土台のバックアップ+記録の再生で、ある時点に巻き戻す
つまり、「WALは先に記録(削除ではない)」「PITRはバックアップ+ログで時点復旧」、この2点が試験の急所なのー。
試験のツボ
🔴 一番出る:WAL
①WALはデータを書き換える前に作業記録(ログ)を残すしくみ
②壊れても記録から復旧できる(ACIDのD=永続性を支える)
🔴 次に出る:ロールフォワードとロールバック
①ロールフォワード(Redo)はログを再適用して最新まで進める
②ロールバック(Undo)は途中で終わった処理を取り消す
🟡 押さえると安定:PITR
①PITRは任意の時点へ戻す復旧
②土台のバックアップ+そこからのログ(WAL)を再適用する
よくある間違い
①「WALはログを削除することである」→ ✗ WALは「先に書いて残す」しくみ。削除ではない。
②「PITRは全部のバックアップだけで戻す」→ ✗ PITRは土台のバックアップ+そこからのログ(WAL)を再適用して戻す。
③「ロールフォワードとロールバックは同じである」→ ✗ ロールフォワードは再適用(進める)、ロールバックは取り消し。逆の働き。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(WAL)
WAL(先行書込ログ)に関する次の記述のうち、正しいものはどれか。
- WALは画面の表示をいつもより明るくするための専用の設定のことだとされているものである
- WALはデータを書き換える前に作業記録(ログ)を残して、復旧に備えるしくみである
- WALはログを必ずすべて削除するための専用の命令のことだとされているものである
- WALは音を鳴らして知らせるための専用の機能のことだとされているものである
解答は 2 だよー。
WALは、データを書き換える前に作業記録(ログ)を残して、復旧に備えるしくみなのー。これでクラッシュしても記録から戻せるよー(ACIDのD=永続性を支える)。
選択肢1の「明るくする設定」、選択肢3の「ログを削除」、選択肢4の「音を鳴らす」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 明るくする設定ではない |
| 2 | ✓ | 書く前に記録を残して復旧に備える |
| 3 | ✗ | 削除ではなく先に書いて残す |
| 4 | ✗ | 音を鳴らす機能ではない |
オリジナル問題2(ロールフォワードとロールバック)
ロールフォワードとロールバックに関する次の記述のうち、正しいものはどれか。
- ロールフォワードもロールバックも、どちらもデータを必ず削除するものだとされている
- ロールフォワードとロールバックはまったく同じで、働きにも違いはないものだとされている
- ロールフォワードは画面を進める機能、ロールバックは戻す機能だとされているものである
- ロールフォワードはログを再適用して進め、ロールバックは途中の処理を取り消すことである
解答は 4 だよー。
ロールフォワード(Redo)はログを再適用して最新まで進め、ロールバック(Undo)は途中で終わった処理を取り消すのー。逆の働きだよー。
選択肢1の「どちらも削除」、選択肢2の「まったく同じ」、選択肢3の「画面を進める・戻す」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 削除する操作ではない |
| 2 | ✗ | 逆の働きで違う |
| 3 | ✗ | 画面の操作ではない |
| 4 | ✓ | 再適用して進める/取り消す |
オリジナル問題3(PITR)
PITR(任意の時点へ戻す復旧)に関する次の記述のうち、正しいものはどれか。
- PITRは土台のバックアップに、そこからのログ(WAL)を再適用してある時点に戻す復旧である
- PITRは全部のバックアップだけで戻し、ログはいっさい使わないものだとされているものなのである
- PITRは画面を必ず3回続けて点滅させるための専用の設定のことだとされているものである
- PITRはデータを必ず暗号化して隠すための専用の命令のことだとされているものである
解答は 1 だよー。
PITRは、土台のバックアップに、そこからのログ(WAL)を再適用して、ある時点に戻す復旧なのー。バックアップだけでなく、記録の再生も使うのがポイントだよー。
選択肢2の「バックアップだけ」、選択肢3の「3回点滅」、選択肢4の「暗号化」はどれも誤りなのー。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | バックアップ+WAL再適用で時点復旧 |
| 2 | ✗ | ログ(WAL)も使う |
| 3 | ✗ | 点滅の設定ではない |
| 4 | ✗ | 暗号化の命令ではない |
まとめ
押さえどころ
- 🔴 WAL = データを書き換える前に作業記録(ログ)を残すしくみ。壊れても復旧でき、ACIDのD(永続性)を支える。
- 🔴 ロールフォワードとロールバック = 再適用して進める(Redo)/途中の処理を取り消す(Undo)。
- 🟡 PITR = 任意の時点へ戻す復旧。土台のバックアップ+ログ(WAL)の再適用で行う。
次に学ぶ
- トランザクションACID ── 信頼の4つの約束。WALはD(永続性)を支えるしくみ。
- 並行制御(2PL・MVCC) ── 同時実行を正しく保つしくみ。リカバリと合わせてデータを守る。
執筆: SikakuQuest編集部