NetBackup™ for PostgreSQL 管理者ガイド
リストア操作後にリカバリを実行する手順
さまざまなプラットフォームでリカバリ後に実行する手順を次に示します。
Windows (VSS) の場合:
- [コントロールパネル]、[システムとセキュリティ]、[管理ツール]、[サービス]の順に進みます。
- PostgreSQL サービスを選択して停止します。
- PostgreSQL データディレクトリからすべてを削除または移動します。
メモ:
リストア後、次のコマンドを使用して、リストアされたデータディレクトリおよびファイルの属性を変更します。
attrib -S restore_path/*.* /S /D
- リストアされたデータディレクトリのすべての内容を PostgreSQL データディレクトリにコピーします。
- PostgreSQL データディレクトリの
postgresql.confファイルを編集し、restore_commandパラメータを restore_command = 'copy "restored_WAL_directory\\%f" "%p"' として編集します。postgresql.confファイルのパラメータを設定するための バックアップの実行を参照してください。指定した時点へのリカバリを正確に行うには、リカバリを実行するタイムスタンプを指定します。
recovery_target_timeパラメータを recovery_target_time = 'yyyy-mm-dd hh:mm:ss' として更新します - データディレクトリに空のファイルを作成して
recovery.signalという名前にします。 - PostgreSQL サービスを起動します。
Linux (LVM) の場合:
- PostgreSQL サービスを停止します。
- PostgreSQL データディレクトリからすべてを削除または移動します。
- データディレクトリと WAL ディレクトリの内容をそれぞれの場所に抽出してコピーします。
- データディレクトリに
recovery.signalという名前の空のファイルを作成します。 - PostgreSQL データディレクトリの
postgresql.confファイルを編集し、restore_command パラメータを restore_command = 'copy "restored_WAL_directory\\%f" "%p"' として編集します。指定した時点へのリカバリを正確に行うには、リカバリを実行するタイムスタンプを指定します。recovery_target_time パラメータを recovery_target_time = 'yyyy-mm-dd hh:mm:ss' として更新します
- PostgreSQL データディレクトリの所有権と権限を 700 に変更します。
例:
chown -R postgres:postgres /full/path/of/PostgreSQL/Data/Dir
chmod - R 700 /full/path/of/PostgreSQL/Data/Dir
- PostgreSQL サービスを起動します。
pg_basebackup ユーティリティによって実行されたバックアップのリカバリ手順
- PostgreSQL サービスを停止します。
- PostgreSQL データディレクトリからすべてを削除または移動します。
- データディレクトリと WAL ディレクトリの内容をそれぞれの場所に抽出してコピーします。
- データディレクトリに
recovery.signalという名前の空のファイルを作成します。 - PostgreSQL データディレクトリの
postgresql.confファイルを編集し、restore_commandパラメータを restore_command = 'copy "restored_WAL_directory\\%f" "%p"' として編集します。指定した時点へのリカバリを正確に行うには、リカバリを実行するタイムスタンプを指定します。
recovery_target_timeパラメータを recovery_target_time = 'yyyy-mm-dd hh:mm:ss' として更新します - (Windows の場合) ネットワークサービスのデータディレクトリへのアクセスを提供します。
- (Linux の場合) PostgreSQL データディレクトリの所有権と権限を 700 に変更します。
例:
chown -R postgres:postgres /full/path/of/PostgreSQL/Data/Dir chmod - R 700 /full/path/of/PostgreSQL/Data/Dir
- PostgreSQL サービスを起動します。
メモ:
リカバリが成功したら、リストアパス
/full/path/of/restore/directoryからリストアデータを削除します。そうしないと、次のバックアップジョブが失敗することがあります。
pgbackrest ユーティリティを使用して実行されたバックアップのリカバリ手順
- PostgreSQL サービスを停止します。
- PostgreSQL データディレクトリからすべてを削除または移動します。
- 次のコマンドを使用して、pgbackrest ユーティリティを使用してリストア操作を実行します。
pgbackrest --stanza=<stanza_name> --pg1-path=<data_directory_path> --repo1-path=<restore_path>
メモ:
スタンザ名は、リストアパス内のバックアップディレクトリを調べることで特定できます。このディレクトリには、関連付けられたバックアップセットを保持するスタンザにちなんだ名前のサブディレクトリが含まれています。
指定した時点へのリカバリを正確に行うには、--target オプションを利用して、リカバリを実行するタイムスタンプを指定します。
例:
pgbackrest --stanza=<stanza_name> --pg1-path=<data_directory_path> --repo1-path=<restore_path> --type=time --target="yyyy-mm-dd hh:mm:ss+00"
メモ:
時刻が GMT 形式であることを確認します。
リストアパフォーマンスを最適化するために、--process-max オプションを使用して、データファイルを同時にコピーする際の並列処理の数 (1 から 999) を定義します。
例:
pgbackrest --stanza=<stanza_name> --pg1-path=<data_directory_path> --repo1-path=<restore_path> --process-max=5
- PostgreSQL データディレクトリの所有権を変更し、権限を 700 に設定します。
例:
chown -R postgres:postgres /full/path/of/PostgreSQL/Data/Dir chmod -R 700 /full/path/of/PostgreSQL/Data/Dir
- PostgreSQL サービスを起動します。
pg_dumpall ユーティリティによって実行されたバックアップのデータベースリカバリ手順Windows の場合: psql.exe -h localhost -p port_num -U username -f full\path\to\dumpall\file\filename.out
Linux の場合: psql -h localhost -p port_num -U username-f full/path/to/dumpall/file/filename.out
pgdump ユーティリティによって実行されたバックアップのデータベースリカバリ手順Windows の場合: pg_restore -U username -d dbnamefull\path\to\dump\file\filename.dump
Linux の場合: pg_restore -U username -d dbnamefull/path/of/dump/file/filename.dump