DBAtlas · データベース運用アトラス

pg_basebackup + WAL アーカイブによるバックアップと PITR (pgBackRest なし)

PostgreSQLレベル: 中級所要時間: 45〜90 分

追加ツールをインストールせず、PostgreSQL 標準のツールで物理バックアップを行います: archive_command による継続的な WAL アーカイブ、pg_basebackup による夜間のベースバックアップ、pg_archivecleanup による保持管理。特定の時刻 / トランザクション / リストアポイントへのリカバリ (recovery.signal、restore_command、recovery_target_*)、タイムライン、定期的なリストア訓練を扱います。最終的に、アーカイブされた WAL、夜間のバックアップ、検証済みの復旧手順がそろいます。代替: 増分/並列/暗号化バックアップ、S3、組み込みの保持管理が必要なら pgBackRest ガイド、テーブル/データベースの移行や単一テーブルの復旧には論理バックアップ (pg_dump、PITR なし) を使います。

構成: サーバー 1 台。streaming または Patroni では、アーカイブディレクトリを全ノードで共有 (NFS)

シナリオ

  • WAL アーカイブと夜間のベースバックアップを構築する — 初期構築: archive_command による継続的な WAL アーカイブ、pg_basebackup スクリプト、/etc/cron.d によるスケジュール、保持期間と WAL の削除。archive_mode のために一度だけ短い再起動が必要です。
  • 特定の時点に戻す (PITR: 時刻、xid、LSN、リストアポイント) — データを誤って削除/変更した (DROP、DELETE、TRUNCATE)、またはサーバー/ディスクが失われた場合: ベースバックアップを展開し、アーカイブの WAL を目標まで適用します。クラスタ全体を停止して目標の時点に戻すため、目標以降の変更はすべて失われます。
  • リストア訓練 (別ディレクトリで、本番に触れずに) — バックアップが実際にリストアできることを証明するため (月 1 回を推奨): 最新のベースバックアップを検証し (pg_verifybackup)、別のディレクトリに展開して、アーカイブを使い別のポートで起動します。所要時間 (RTO) を計測します。本番には触れません。
  • 古いベースバックアップと WAL アーカイブを削除する — アーカイブまたはバックアップのディスクが一杯になりつつある、または保持期間を変更した場合: 古いベースバックアップを削除し、pg_archivecleanup で最も古いバックアップより前の WAL を削除します (まずドライラン)。データベースは稼働したままです。

開始前の確認

  • PostgreSQL … がインストール済みで稼働していること (pg-install)。データディレクトリは …。
  • … と … がデータディスクとは 別の ディスク/NFS 共有にあり、永続的にマウントされていること (fstab)…、かつすべての PostgreSQL サーバーで 同じパス にあること (failover 後は新しい primary が同じアーカイブに書き込む必要があります)…。容量: (保持するバックアップ数 + 1) × 圧縮後のデータサイズ + 1 日の WAL 量 × 保持日数。
  • 他のアーカイブ/バックアップツール (pgBackRest、Barman、WAL-G) が設定されていないこと。2 つのツールが同じ WAL を別々の場所に送ると、どちらも不完全になります。
  • 時計が NTP で同期されていること (PITR の目標時刻はサーバーの時計に基づいて解釈されます)。
  • archive_mode の変更のための短い再起動の時間枠があること。
  • アプリケーションが停止されており、目標以降のすべての変更が失われることが了承されていること。… standby/レプリカはリストア後に再構築します。…

ガイドのフェーズ

  • WAL アーカイブとベースバックアップの構築 — アーカイブとバックアップのディレクトリを準備する · WAL アーカイブスクリプトを作成する · スクリプトを実行可能にしてテストする · PostgreSQL のアーカイブ設定を書き込む · PostgreSQL を再起動する · アーカイブ設定を Patroni に書き込む (edit-config) …
  • リストア訓練 — 訓練用ディレクトリを準備し、最新のバックアップを選ぶ · バックアップを展開して検証する (pg_verifybackup) · 訓練用インスタンスをアーカイブを使って起動する · データを検証する · 訓練用インスタンスを停止して後片付けする
  • 保持管理と WAL の削除 — バックアップ、アーカイブのサイズ、必要な最も古い WAL · 保持期間外のベースバックアップを削除する · WAL の削除をまずドライランで確認する · WAL アーカイブを削除する · アーカイブが引き続き動作していることを確認する
環境に合わせた手順プランを開く →