Windowsで運用しているPosgreSQL 9.2のバックアップとリストア pg_dumpとpsqlのバッチ処理

データベースを運用している場合、不測の事態に備えて定期的にバックアップを取ることは言うまでもありません。また、検証のために本番運用データを検証用データベースに丸ごとコピーするなどの場合にもバックアップやリストアは必要な作業となります。

バックアップリストアはpgAdminを使用すればGUIで手軽にできますが、夜間の定期バックアップ、障害復旧時のリストアなどの作業はバッチ形式で行ったほうが作業ミスも防げスムーズに処理が行えます。

ここでは、Windowsで運用しているPostgreSQLのバックアップとリストアについて、コマンドプロンプトから行う方法を説明します。

■データベース単位のバックアップとリストア

データベース db1 を C:\Backup.sql にバックアップし、ログを C:\Backup.log に出力する
pg_dump.exe -h localhost -p 5432 -U postgres -F plain -v -f C:\Backup.sql db1 2> C:\Backup.log
バックアップした C:\Backup.sql をデータベース db1 にリストアする
psql.exe -h localhost -p 5432 -U postgres -d db1 -f C:\Backup.sql
■全データベースのバックアップとリストア

全データベースを C:\All.sql にバックアップし、ログを C:\All.log に出力する
pg_dumpall.exe -h localhost -p 5432 -U postgres -v -f C:\All.sql 2> C:\All.log
バックアップした C:\All.sql をリストアする
psql.exe -h localhost -p 5432 -U postgres -f C:\All.sql

上記のコマンドはPostgreSQLサーバーの稼動しているマシンで実行することが前提です。他のクライアントから実行する場合は、オプションパラメータの -h localhost をPostgreSQLサーバーのIPアドレスに変更してください。

パスが通っていないと実行できませんので、あらかじめパスを通してから実行してください。パスはPostgreSQLをインストールした環境により異なりますが、デフォルトでインストールした場合にはには C:\Program Files\PostgreSQL\*.*\bin になります。 *.* はバージョンに読み替えてください。

実行した際にパスワード要求がくる場合は、あらかじめpgAdminでログインし、パスワードの保存をするか又は、エディタで %APPDATA%\postgresql\pgpass.conf にあらかじめパスワードを登録してください。