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 です。