DBのbackupは、ファイルが作成されたことと、必要な状態へ復元できることを分けて確認します。保存容量や最新日時だけでなく、隔離した復元先でschema・data・権限・主要な読取を確認し、業務が再開できるまでの時間と失う可能性のある範囲を記録します。
本稿は復元訓練の設計です。実DBへの接続、backup取得、restore、削除、権限変更は行っていません。PostgreSQLの公式仕様を製品例に使いますが、managed snapshotや他DBへ同じcommandを適用する記事ではありません。
目次
最初に復元対象と、合格条件を決める
対象DB、backup方式、取得開始・終了、対象時点、schema/version、暗号化と復号手段、必要なrole・extension・外部storageを記録します。DBにファイルの参照だけが保存される構成なら、DBの復元だけでファイル本体まで戻ったとは扱いません。
表は横にスクロールできます
| 確認対象 | 合格の証拠 | 日時だけでは分からないこと |
|---|---|---|
| backup | 読めるファイル・manifestと対象範囲 | 全tableを含むか |
| schema | table・制約・index・バージョン | dataだけ取り出せる状態か |
| data | 件数・代表ID・関係の照合 | 一部だけ復元された可能性 |
| 認可 | 必要なroleで読め、権限外を拒否 | adminだけで動く状態 |
| アプリ | 主要な業務読取 | 通知等の誤送信 |
RPOは許容するdata損失の範囲、RTOは復旧に必要な目標時間として、社内の要件を先に定めます。本稿で特定の数値を十分条件とはしません。訓練ではrestore commandの所要時間だけでなく、backupを選び、鍵を使い、検証して業務へ渡すまでの時間を測ります。
本番とは分かれた復元先を用意する
復元先のhost・project・DB名・roleを明示し、本番接続情報を使い回さない構成にします。mail、webhook、定期job、決済、外部連携を含むアプリをそのまま起動すると、複製したrecordを本番の出来事として処理する危険があります。外部副作用を無効化した検証構成を先に確認します。
本番由来dataを復元する必要がある場合は、閲覧権限と保存条件を決めます。訓練用の匿名化dataだけを使った試験と、本物のbackupが復号・復元できる試験は別の証拠です。前者だけで実backupの復元可能性を証明したと報告しません。
backup形式と、必要な周辺objectを確認する
PostgreSQLのSQL Dump資料(新しいタブで開く)では、text dumpはpsql、非text形式はpg_restoreで扱うと説明しています。拡張子だけで形式を推測せず、作成方法と対象バージョンを記録します。restore前に必要なrole等が存在しないと、元のownershipやpermissionを再現できない場合があります。
同資料はpg_dumpが単一DBを対象とし、cluster全体のroleやtablespace情報は別であることも説明しています。backup方式ごとの対象範囲を一覧化し、取れたファイル一つを「すべて」と扱いません。暗号鍵、extension、外部object、schema migrationとの対応は、利用環境で別に確認します。
途中errorを成功扱いしない
restore処理の終了状態とerrorを確認します。PostgreSQLのpsqlは既定でSQL error後も処理を継続するため、最後まで表示されたことだけで全件成功にしません。error時の停止、transaction単位、部分復元の扱いは、対象形式・DB・利用toolの公式条件で決めます。
失敗した復元先へ無条件で同じdataを足し直すと、重複や既存objectの衝突で原因が見えなくなります。失敗した段階と残った状態を保存し、空の検証先から再試行するか、対応する再開機能を使うかを決めます。本番DBへ戻す操作を、訓練の後片付けと同じ手順に含めません。
件数・関係・主要な読取を照合する
backupの対象時点に対応する件数や代表IDがあれば比較します。現在の本番件数と違うだけで復元失敗とは判断しません。取引中の更新、論理削除、集計対象条件など、比較する時点と集合を合わせます。
表は横にスクロールできます
| 検査 | 確認例 | 不合格なら |
|---|---|---|
| 件数 | 主要tableと一意ID | backup範囲・復元errorを確認 |
| 関係 | 親子・外部key・参照ファイル | 欠落objectを特定 |
| 値 | 代表recordの金額・状態 | 型・文字コード・バージョンを確認 |
| 権限 | 代表roleの許可と拒否 | 所有者・policyを確認 |
| アプリ | 主要画面の読取 | schema・接続・依存を確認 |
件数が一致しても値の破損や権限の欠落はあり得ます。hash等を比較する場合も、何を含めたか、順序や正規化の条件を記録します。AIは差異一覧を整理する補助に使えますが、DBへ接続するsecretを渡したり、矛盾を推測で正常に分類したりしません。
訓練結果を、再実行できる記録へする
使用backup、tool/version、復元先、開始・完了時刻、error、照合結果、残課題を記録します。担当者が変わっても同じ資料から実施できるかを確認します。scriptや鍵の参照先が一人の端末にしかないなら、手順書だけで復旧可能とは扱いません。
検証dataの保管・廃棄は既存の運用に従い、実施結果を残します。本番への切替や事故時の復元は、この隔離訓練とは別の判断です。完了は「backupあり」ではなく、どの時点・範囲・依存条件を戻せて、何を戻せなかったかを説明できることです。
