PITR(時点を指定した復旧)の使い方

ベースバックアップと WAL で、ある時点に戻す

書き方

\! tar -xf /backup/base/base.tar -C $PGDATA
restore_command = 'cp /backup/wal/%f %p'
recovery_target_time = '2026-11-04 22:14:00'
recovery_target_name = '名前'(pg_create_restore_point)
\! touch $PGDATA/recovery.signal
SELECT pg_wal_replay_resume();

止めたサーバーのデータディレクトリをベースバックアップで置き換え、restore_command(アーカイブから WAL を取ってくるコマンド)と目標(recovery_target_time・_name・_lsn)を書き、recovery.signal を置いて起動します。サーバーは WAL を流し直して目標で止まり(recovery_target_action の既定は pause)、読むだけの状態になります。データを確かめてから pg_wal_replay_resume() で復旧を終えると、新しいタイムラインで書けるようになります。

例

\! touch recovery.signal
SELECT pg_is_in_recovery();
SELECT pg_wal_replay_resume();

実際に打って練習する

PostgreSQL DBA コースの Lv40「時点を指定して戻す PITR」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の管理コマンド一覧(DBA)へ戻る