【ぽいんといんたいむりかばり】

ポイントインタイムリカバリ とは?

💡 データベースを「指定した時刻の状態に巻き戻す」復元技術
📌 このページのポイント
ポイントインタイムリカバリ(PITR) フルバックアップ 基準点 WAL WAL WAL 障害発生 WALを順次リプレイ 復旧目標時点 任意の時点へ復旧 バックアップ / 復旧点 WAL(トランザクションログ) 障害発生ポイント フルバックアップ+WALで任意の時点にデータを復元
ポイントインタイムリカバリの仕組み
ひよこ ひよこ

普通のバックアップからの復元とどう違うの?

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

普通のバックアップは「バックアップを取った時点」にしか戻せない。例えば午前3時のバックアップしかなければ、午後2時に誤って全データを消しても午前3時の状態にしか戻せず、午前3時〜午後2時の間のデータは失われる。PITRならトランザクションログを使って「午後1時59分の状態」まで正確に復元できる。

ひよこ ひよこ

トランザクションログって何?

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

データベースの全ての変更操作(INSERT/UPDATE/DELETE)を時系列で記録したファイル。MySQLではバイナリログ(binlog)、PostgreSQLではWALと呼ぶ。このログがあれば、フルバックアップの時点から1つずつ変更を「再生」して、任意の時点の状態を再構築できるんだ。

ひよこ ひよこ

クラウドのRDSとかだと簡単に使えるの?

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

AWS RDSやCloud SQLでは設定で「自動バックアップ」を有効にするだけで、裏でバックアップとログの管理をやってくれる。AWSなら最大35日前まで、任意の秒を指定して復元インスタンスを作成できる。自前で構築する手間を考えると、マネージドDBの大きなメリットの一つだね。

ひよこ ひよこ

PITRがあれば完璧にデータを守れるの?

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

万能ではないよ。まずトランザクションログの保存領域が溢れるとログが上書きされて復元できなくなる。ログ用のディスク容量は常に監視が必要。あと復元にかかる時間も重要で、バックアップからのリストア+大量のログ再生は数時間かかることもある。そして一番厄介なのは「いつの時点まで戻すべきか」の判断。誤操作が起きた正確な時刻を特定するのは簡単ではなくて、binlogやWALの中身を解析して「このDELETE文が実行された時刻」を探す作業になる。障害対応のプレッシャーの中でこの判断を正確にやるのは、経験があっても緊張する瞬間なんだよね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ポイントインタイムリカバリって出てきたら「フルバックアップ+ログで任意の時点までDBを巻き戻せる仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Point-in-Time Recovery(PITR)」 = 特定時点(Point-in-Time)への復旧(Recovery)
💬 「この時点(Point in Time)」にデータベースを戻すという意味。PITRと略されることも多い
← 用語集にもどる