データベースのみのダンプでは、クラスタ全体のロールや外部スケジューラーの状態が含まれない場合があります。分離した復元環境で、各オブジェクトクラスを明示的に確認してください。
PostgreSQL形式のサービスで、テーブルだけでなくログイン、拡張機能、権限、スケジュールされた処理まで復旧する必要がある場合、この判断は重要です。競合する2つの状態は、データベースローカルのスキーマとデータ、およびクラスタ全体または外部の運用オブジェクトです。保存済みの設定と破棄可能なデータから始め、一度に1つの分岐だけを観察し、データ損失、権限、可用性のリスクが拡大する場合は中止してください。
完全なデータベースバックアップ範囲の判断条件を定義する
何かを変更する前に、ソフトウェアとファームウェアのバージョン、デバイスID、マウント先またはネットワークパス、空き容量、権限、観測された症状など、環境を記録してください。ベースラインには、PostgreSQL形式のサービスでテーブルだけでなくログイン、拡張機能、権限、スケジュールされた処理まで復旧する必要がある状況を再現できるだけの詳細を残す必要があります。
最初の候補は、データベースローカルのスキーマとデータです。2つ目は、クラスタ全体または外部の運用オブジェクトです。現在のpg_dumpallのグローバルオブジェクトは、テストで使用する仕組みまたはコマンドの境界を定義しますが、この特定のホームサーバーでの観測に代わるものではありません。
判別テストを実行する前に、合格条件と中止条件を書き出してください。合格とは、一方の分岐が予測した証拠が変化し、無関係なサービスは変更されないことです。不合格の場合は、推測に基づく修正を連鎖的に実行するのではなく、システムを保存済みの状態に戻す必要があります。
元の要件を下げずに主張を検証する
次の判別テストを使用してください。分離したサーバーに復元し、ロール、拡張機能のバージョン、所有権、権限、スケジューラーのエントリを一覧化してから、カナリアジョブを実行します。結果が変更した変数に起因するものになるよう、ワークロード、クライアント、パス、ファイルセット、タイミングを一定に保ってください。
分離したPostgreSQL復元を使用して、分岐を実際に分けられる項目を選び、そのタイムスタンプ、終了ステータス、エラーテキスト、デバイスまたはスナップショットID、レイテンシー、転送バイト数、権限、復旧状態を記録します。ID、耐久性、アプリケーション状態が検証対象の場合、コマンドが正常終了しただけでは不十分です。
最初の条件に再起動、再接続、再マウント、またはキャッシュのクリアが含まれる場合は、そのイベントの後にテストを1回繰り返してください。最初の実行が破壊的である場合、または環境を復元できない場合は中止し、代わりに破棄可能なコピーで再現してください。
pg_dump -Fc appdb > app.dump
pg_dumpall --globals-only > globals.sql
合格、不合格、例外の結果を解釈する
合格: アプリケーションが認証され、拡張機能が読み込まれ、所有者が一致し、スケジュールされたジョブが期待どおりの無効または有効状態で存在すること。結論が普遍的な主張にならないよう、合格した正確なバージョン、ID、ワークロードを記録してください。
不合格: テーブルは復元されるものの、ロール、拡張機能パッケージ、シークレット、または外部スケジューラーの定義が不足していること。不合格だからといって、ネットワーク、メモリ、権限、ソースの一貫性が両方の分岐に影響している可能性があるため、直ちに反対の分岐が正しいとは限りません。エスカレーションする前に、これらの共通依存関係を切り分けてください。
例外または曖昧な結果: 本番環境には触れず、不足しているクラスタレベルまたはアプリケーションレベルのエクスポートをバックアップセットに追加してください。復元可能なコピーが存在するまで、ログを保存し、修復、削除、破棄、再パーティション、所有権の再帰的変更を実行しないでください。
元のワークロードで判断を確認する
観測された分岐に対応する操作を適用し、その後、簡略化した代替条件ではなく元の条件を繰り返します。アプリケーションが認証され、拡張機能が読み込まれ、所有者が一致し、スケジュールされたジョブが期待どおりの無効または有効状態で存在する状態が、2サイクル、または該当する再起動、スリープ、割り込み、負荷遷移をまたいで維持された場合にのみ、判断は有効です。
更新前のデータベースダンプを使用して、最も近い依存ワークフローを確認しますが、元のトリガーは変更しないでください。無関係なデータセット、共有、コンテナ、ユーザー、復旧ポイントは、以前のアクセス権とタイミングを維持する必要があります。
中止境界は明確です。テーブルは復元されるものの、ロール、拡張機能パッケージ、シークレット、または外部スケジューラーの定義が不足している場合は、最後に検証された設定へ戻し、証拠を保持してください。分岐が再現可能な場合にのみ、より深いプラットフォームまたはハードウェアのテストへエスカレーションします。
目標の結果が得られた後、アプリケーション状態の個別バックアップと比較し、修正によって隣接サービスへリスクが移っていないことを確認してください。新たなバックアップ、ID、タイムアウト、または可用性の障害を伴う目標テストの成功は、依然として変更の失敗です。
FAQ
完全なデータベースバックアップ範囲について、残る疑問は通常、pg_dumpにログインロールが含まれるか、拡張機能のバイナリがダンプに含まれるか、スケジュールされたジョブがどこに保存されるかです。以下の回答では、これらのエッジケースを主要な判断から分けて扱います。
合格の境界は変わりません。アプリケーションが認証され、拡張機能が読み込まれ、所有者が一致し、スケジュールされたジョブが期待どおりの無効または有効状態で存在することです。後続の条件によってファイルシステム、ID、ネットワークパス、またはアプリケーションバージョンが変わる場合は、その変更の影響を受ける判別テストだけを繰り返してください。
テーブルは復元されるものの、ロール、拡張機能パッケージ、シークレット、または外部スケジューラーの定義が不足している場合は、実験を広げるのを中止してください。その時点で本番環境には触れず、不足しているクラスタレベルまたはアプリケーションレベルのエクスポートをバックアップセットに追加し、プラットフォーム、ストレージ、またはハードウェアの担当者へエスカレーションする前に証拠を保存してください。
pg_dumpにはログインロールが含まれますか?
単一データベースのpg_dumpでは、クラスタ全体のロールはすべて取得されません。グローバルオブジェクトは別途エクスポートしてください。
拡張機能のバイナリはダンプに含まれますか?
いいえ。ダンプには拡張機能のオブジェクトが記録されますが、互換性のあるパッケージが復元先サーバーに存在している必要があります。
スケジュールされたジョブはどこに保存されますか?
スケジューラーによって異なります。データベース拡張機能、cronコンテナ、ホストタイマーでは、それぞれ異なるバックアップパスが必要です。
完全なデータベースバックアップ範囲について、実際の答えは引き続き条件付きです。アプリケーションが認証され、拡張機能が読み込まれ、所有者が一致し、スケジュールされたジョブが期待どおりの無効または有効状態で存在すること。テーブルは復元されるものの、ロール、拡張機能パッケージ、シークレット、または外部スケジューラーの定義が不足している場合は、本番環境には触れず、不足しているクラスタレベルまたはアプリケーションレベルのエクスポートをバックアップセットに追加してください。元のワークロードに耐えられない部分的な成功は、互換性があるとはいえません。
サポートとヒント
もっと読む

名前を変更したデータセットと安定したファイルハンドルのためのNFS移行チェックリスト
ストレージの識別情報が変わるとファイルハンドルも変わる可能性があることを前提としてください。クライアントを停止し、エクスポートを意図的に切り替え、再マウントして、開いているファイルと新規ファイルを検証してください。

Windows、macOS、Linux向けSMBクライアントのトラブルシューティングガイド
各クライアントで同じサーバー、アカウント、共有、ファイル操作を使用し、検出、認証情報、ポリシー、ストレージの障害が混在しないようにします。

アプリ、データベース、バックアップ向けホームサーバーのシークレットローテーションチェックリスト
ローテーションは依存関係の移行として扱い、すべての利用箇所を洗い出し、可能な場合は認証情報を重複配置し、新しい値を検証してから、古い値を無効化し、復旧をテストします。

