PostgreSQL の管理 (バックアップとパフォーマンスの維持)

PostgreSQL 管理用 サンプルスクリプト 解説

実行タイミング

スクリプトは1日1回 cron などで実行することを想定しています。
cron が使用できなければ、手動でも問題ありません。

日付を付けてダンプ

EXT=`date +%Y%m%d`
/usr/bin/pg_dump mydb > /home/backup/mydb.dbdump.$EXT

最初の1行は、日付を表す文字列を、dateコマンドを利用して作成しています。
BSD系など他のOSではオプションの書き方が違う場合がありますので、具体的なコマンドはそれぞれのOSの 'man date' を参照して下さい。

/usr/bin/pg_dump は PostgreSQLに付属の管理ツールです。
使用している環境での pg_dump のパスに置き換えて下さい。
pg_dump の使い方の詳細は、PostgreSQL のマニュアルに詳しく掲載されています。

ラージオブジェクトを使用していないならば、バックアップには上記の使い方でOKです。
ラージオブジェクトを含めてバックアップしたい場合、以下のようにオプションを付けます。

/usr/bin/pg_dump -Ft -b mydb > /home/backup/mydb.dbdump.$EXT.tar

旧いバックアップを削除

find /home/backup/ -name "mydb.dbdump.*" -atime 11 -exec rm -f {} \;

find コマンドを使用して10日より前のバックアップファイルを削除しています。
find の仕様もOSによって違いますので、他のOSでの具体的なコマンドは 'man find' を参照して下さい。

VACUUM & ANALYZE

/usr/bin/vacuumdb mydb
/usr/bin/psql -d mydb -c ANALYZE

vacuumdb 、psql とも PostgreSQL に付属しています。
使用している環境でのパスに置き換えて下さい。

書き方はオマジナイと思って下さい。
この他の書き方もできますが(例えば1行目は、2行目と同じ形式で 「/usr/bin/psql -d mydb -c VACUUM」とも書けます。)詳細は PostgreSQL のドキュメントを参照して下さい。