リカバリ(WAL・PITR)とは?障害が起きてもデータを元に戻すしくみ

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

リカバリとは(全体像)

リカバリは、停電やクラッシュなどの障害が起きても、データを正しい状態に戻す作業だよー。

身近にたとえると、作業記録(メモ)をとりながら進める感じ。「何をどう変えたか」を先に記録しておけば、途中で中断しても、記録を見てやり直せるのー。

押さえるのは、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)

📝 オリジナル問題 1 WAL

WAL(先行書込ログ)に関する次の記述のうち、正しいものはどれか。

  1. WALは画面の表示をいつもより明るくするための専用の設定のことだとされているものである
  2. WALはデータを書き換える前に作業記録(ログ)を残して、復旧に備えるしくみである
  3. WALはログを必ずすべて削除するための専用の命令のことだとされているものである
  4. WALは音を鳴らして知らせるための専用の機能のことだとされているものである
データスラ
データスラ 解答・解説

解答は 2 だよー。

WALは、データを書き換える前に作業記録(ログ)を残して、復旧に備えるしくみなのー。これでクラッシュしても記録から戻せるよー(ACIDのD=永続性を支える)。

選択肢1の「明るくする設定」、選択肢3の「ログを削除」、選択肢4の「音を鳴らす」はどれも誤りなのー。

選択肢判定理由
1明るくする設定ではない
2書く前に記録を残して復旧に備える
3削除ではなく先に書いて残す
4音を鳴らす機能ではない

オリジナル問題2(ロールフォワードとロールバック)

📝 オリジナル問題 2 ロールフォワードとロールバック

ロールフォワードとロールバックに関する次の記述のうち、正しいものはどれか。

  1. ロールフォワードもロールバックも、どちらもデータを必ず削除するものだとされている
  2. ロールフォワードとロールバックはまったく同じで、働きにも違いはないものだとされている
  3. ロールフォワードは画面を進める機能、ロールバックは戻す機能だとされているものである
  4. ロールフォワードはログを再適用して進め、ロールバックは途中の処理を取り消すことである
データスラ
データスラ 解答・解説

解答は 4 だよー。

ロールフォワード(Redo)はログを再適用して最新まで進めロールバック(Undo)は途中で終わった処理を取り消すのー。逆の働きだよー。

選択肢1の「どちらも削除」、選択肢2の「まったく同じ」、選択肢3の「画面を進める・戻す」はどれも誤りなのー。

選択肢判定理由
1削除する操作ではない
2逆の働きで違う
3画面の操作ではない
4再適用して進める/取り消す

オリジナル問題3(PITR)

📝 オリジナル問題 3 PITR

PITR(任意の時点へ戻す復旧)に関する次の記述のうち、正しいものはどれか。

  1. PITRは土台のバックアップに、そこからのログ(WAL)を再適用してある時点に戻す復旧である
  2. PITRは全部のバックアップだけで戻し、ログはいっさい使わないものだとされているものなのである
  3. PITRは画面を必ず3回続けて点滅させるための専用の設定のことだとされているものである
  4. PITRはデータを必ず暗号化して隠すための専用の命令のことだとされているものである
データスラ
データスラ 解答・解説

解答は 1 だよー。

PITRは、土台のバックアップに、そこからのログ(WAL)を再適用して、ある時点に戻す復旧なのー。バックアップだけでなく、記録の再生も使うのがポイントだよー。

選択肢2の「バックアップだけ」、選択肢3の「3回点滅」、選択肢4の「暗号化」はどれも誤りなのー。

選択肢判定理由
1バックアップ+WAL再適用で時点復旧
2ログ(WAL)も使う
3点滅の設定ではない
4暗号化の命令ではない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る