スクリプトを使用して PostgreSQL データベースをバックアップおよびリストアする
PostgreSQL データベースのバックアップを実行するために、以下のスクリプトを使用できます。スクリプトを実行するときに、バックアップを実行するためにデータベースを停止する必要はありません。
- postgresql_pre_script.bat: このスクリプトは、データベースをバックアップモードにします。
- postgresql_post_snapshot_script.bat: このスクリプトは、バックアップモードからデータベースを削除します。
- postgresql_pre_post_conf.bat: これは、PostgreSQL 変数の更新が必要になる可能性がある環境設定ファイルです。
前提条件
バックアップを開始する前に、以下のことを確認してください。
- WAL レベルをアーカイブ(または hot_standby)に設定する
- archive_mode をオンに設定する
- archive_command を設定してアーカイブの場所を指定する
注: 設定を適用するには、postgresql.conf ファイルでこれらの設定を行った後、サーバを再起動します。
以下のコマンドは、再起動後にアーカイブ モードのステータスを確認することができます。
- show archive_mode
- show archive_command
- show WAL level
スクリプトの適用
以下の手順に従います。
- 以下の 3 つのファイルを含む PostgreSQL_UDP_Windows_Scripts.zip を展開します: postgresql_pre_script.bat、postgresql_post_snapshot_script.bat、postgresql_pre_post_conf.bat。
- PostgreSQL データベースが実行されているノードにフォルダを作成し(例: C:\PostgresBKP)、3 つのファイルをすべてコピーします。
- postgresql_pre_post_conf.bat で変数に対して設定されたすべての値を確認し、環境に応じて必要な変更を行います。
- UDP コンソールからプランを設定し、PostgreSQL ノードをソースとして選択します。
-
- バックアップ ステータスを確認します。PostgreSQL バックアップのステータスを特定するには、「C:\Program Files\Arcserve\Unified Data Protection\Engine\Logs」のディレクトリの下に作成される postgresql_pre_post_backup.txt ファイルを確認します。
PostgreSQL データベースのリストア
- データベース サーバを停止します。
- 元の場所にリストアするには、以下の手順に従います。
- 現在の「/data」フォルダからファイルとディレクトリを削除します。
- 「/data」フォルダ全体のリストアを実行します。
- 「/data」フォルダからリストアが完了したら、以下のフォルダからファイルを削除します。
- pg_dynshmem/
- pg_notify/
- pg_serial/
- pg_snapshots/
- pg_stat_tmp/
- pg_subtrans/
- pg_internal.init
- WAL アーカイブ用に設定されたフォルダに移動し、以下を実行します。
- リストアされた pg_wal ディレクトリ内に存在するファイルを削除します。このファイルには、バックアップ中に実行されたトランザクションに関する情報が含まれます。
- データの整合性とポイント インタイム復旧のため、ユーザ定義済みのアーカイブの場所から pg_wal フォルダにファイルをコピーします。
- データベース サーバを起動します。
同じサーバ上の別の場所にリストアする:
以下の手順に従います。
- データベース サーバを停止します。
- [new_data_directory_path]に設定して PGDATA を実行します。
- ' Initdb ' cmd を使用して、新しく作成された DB を初期化します。
- 現在の「/data」フォルダからファイルとディレクトリを削除します。
- 「/data」フォルダ全体のリストアを実行します。
- 「/data」フォルダからリストアが完了したら、以下のフォルダからファイルを削除します。
- pg_dynshmem/
- pg_notify/
- pg_serial/
- pg_snapshots/
- pg_stat_tmp/
- pg_subtrans/
- pg_internal.init
- WAL アーカイブ用に設定されたフォルダに移動し、以下を実行します。
- リストアされた pg_wal ディレクトリ内に存在するファイルを削除します。このファイルには、バックアップ中に実行されたトランザクションに関する情報が含まれます。
- データの整合性とポイント インタイム復旧のため、ユーザ定義済みのアーカイブの場所から pg_wal フォルダにファイルをコピーします。
- データベース サーバを起動します。
- 注: PGDATA が更新されたセッションでデータベースの起動が実行されていることを確認してください。
サンプルの postgresql_pre_post_conf.bat
PG_BIN_PATH=C:\"Program Files"\PostgreSQL\12\bin\
PG_DATA_DIR=C:\"Program Files"\PostgreSQL\12\data\
PG_USERNAME=postgres
PGPASSWORD=postgres
Set PG_PORT=5432