スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PostgreSQLでバックアップとリカバリ

PostgreSQLでpg_dumpとpg_restoreを使ったバックアップとリカバリのスクリプトを書いてみます。
■バックアップ

#!/bin/bash
filename="/var/app/backup/backup"`date +"%Y%m%d"`".dump"
/opt/postgresql/bin/pg_dump -b -Fc -U dbuser mydb > $filename
/usr/bin/scp $filename user@192.168.0.2:/var/app/backup
rm $filename

backup+今日の日付(YYYYMMDD)+.dumpというファイル名で作成しています。
dumpを作成したら、適当な場所へ移動して今作成したファイルを消しています。
■リカバリ

/opt/postgresql/bin/dropdb -U dbuser mydb
/opt/postgresql/bin/createdb -T template0 -U dbuser mydb
/opt/postgresql/bin/pg_restore -U dbuser -d mydb backup20091003.dump

リカバリは手順通りふつーに実行です。

さて、バックアップはcronで回して使うことになりますが、バックアップを取り続けているとディスクを圧迫することになりますので、古いバックアップは削除するスクリプトを作成します。
■バックアップ削除

#!/bin/bash
BASE=/var/app/backup/backup`date -d '1 month ago' +%Y%m%d`.dump
for FILE in `ls /var/app/backup/*.dump`
do
if [ "$BASE" \> "$FILE" ];
then rm $FILE
fi
done

一ヶ月を超えているものは、削除しています。
バックアップのスクリプトを実行した後に動かすとよいと思います。
ちなみに、文字列の比較のための>は、エスケープしないとリダイレクト扱いになってしまい、うまく動作しません。気がつくのに、しばらくかかっちゃいました・・・

一行入魂サイトにまとめがあります。

追記 2009/10/05
削除スクリプトでrm $BASEをrm $FILEに修正しました。
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。