PostgreSQL 管理用 サンプルスクリプト 解説
実行タイミング
スクリプトは1日1回 cron などで実行することを想定しています。
cron が使用できなければ、手動でも問題ありません。
日付を付けてダンプ
EXT=`date +%Y%m%d`
/usr/bin/pg_dump mydb > /home/backup/mydb.dbdump.$EXT
/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
/usr/bin/psql -d mydb -c ANALYZE
vacuumdb 、psql とも PostgreSQL に付属しています。
使用している環境でのパスに置き換えて下さい。
書き方はオマジナイと思って下さい。
この他の書き方もできますが(例えば1行目は、2行目と同じ形式で 「/usr/bin/psql -d mydb -c VACUUM」とも書けます。)詳細は PostgreSQL のドキュメントを参照して下さい。