PostgreSQL でのバックアップの取り方
この間、データベースのバックアップを行うのに pg_dump を使いました。
cron にバックアップ用のバッチを登録して、毎日定時に実行するようにしたかったのですが、普通にやると、実行時にパスワードを聞かれてしまいました。
そこで、バックアップのコマンドと、パスワードを聞かれないようにする方法を書いておこうと思います。
下記のような感じでコマンドを実行すると、データベースのバックアップが取れます。
- /usr/bin/pg_dump -U ユーザ名 データベース名 > 出力ファイル名
/usr/bin/pg_dump -U root test_db > test_db.dump
最初に書いたように、これを実行するだけだと、次にパスワードの入力を要求されるので、cron で動かしてもそこで処理が止まってしまいます。
そこで、パスワードファイル を参考に、ポスグレ用のパスワードファイルを作成します。
書いてある通りですが、ざっとまとめるとこんな感じです。
- 実行ユーザのホームディレクトリに作成する
- ファイル名は、.pgpass にする
- ファイルの権限を、600 にする
- フォーマットは、hostname:port:database:username:password のように書き、*(ワイルドカード)の使用も可能
新規で作成するときに行った手順は下記の通りです。
echo '*:*:test_db:root:password' > .pgpass chmod 600 .pgpass
あとは、シェルスクリプトか何かを作って、バックアップ用のコマンドを記述して、それを cron に登録すれば OK です。