【あーるぴーおー】

RPO(目標復旧時点) とは?

💡 障害時に「どこまでセーブされているか」を決めるルール
📌 このページのポイント
RPO(目標復旧時点) 時間 → 最終バックアップ 12:00 障害発生 18:00 RPO = 6時間 ← この間のデータは失われる → RPO = どこまで過去のデータに戻ることを許容するか RPOが短いほどバックアップ頻度を高くする必要がある
RPOのイメージ
ひよこ ひよこ

RPOって具体的にどういう意味?

ペンギン先生 ペンギン先生

ゲームのセーブポイントで例えるとわかりやすいよ。RPOが1時間なら「1時間ごとにセーブしている」ということ。障害が起きたら最大1時間分の進行データが失われる可能性がある。RPOが0なら「常時セーブ」で、1件のデータも失わないということだね。

ひよこ ひよこ

RPOを短くするにはどうすればいいの?

ペンギン先生 ペンギン先生

RPOが24時間なら1日1回のバックアップで足りる。RPOが1時間ならトランザクションログの定期バックアップが必要。RPOが0ならリアルタイムで同期レプリケーションしないといけない。RPOが短くなるほどストレージネットワークのコストが上がるし、書き込み性能にも影響が出るんだ。

ひよこ ひよこ

RPOが0って本当に実現できるの?

ペンギン先生 ペンギン先生

同期レプリケーションを使えば原理的には可能だよ。書き込みがメインDBとスタンバイDBの両方に反映されてから完了とするから、データの損失はゼロ。ただし書き込みのたびにスタンバイへの反映を待つから遅延が増える。AWSのAurora Globalデータベースのようにストレージレベルで同期する仕組みもあるね。

ひよこ ひよこ

バックアップを取っていれば安心だと思ってたけど、違うの?

ペンギン先生 ペンギン先生

バックアップは「取ること」より「戻せること」の方が重要なんだ。RPOを1時間に設定して毎時バックアップを取っていても、そのバックアップファイルが壊れていたら意味がない。実際、バックアップの復元テストを定期的にやっている組織は意外と少なくて、障害が起きてから「バックアップが復元できない」と気づくケースがある。さらに厄介なのが「論理的な障害」で、誤ったDELETE文でデータを消してしまった場合、バックアップにもそのDELETEが反映されているタイミングだと復元しても意味がない。だからポイントインタイムリカバリ(PITR)という「任意の時点に戻せる」仕組みが重要で、RDSなどはこれを標準サポートしているんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「RPO」って出てきたら「障害時にどの時点までのデータを復旧できるかの目標のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Recovery Point Objective」 = 復旧時点の目標
💬 Recovery(復旧)Point(時点)Objective(目標)。「どこまでのデータを救う?」の目標値だよ
← 用語集にもどる