■バックアップスクリプト説明
管理の自動化の為、バックアップはスクリプトを作り、crontabで定期的に実行する事にします。
スクリプトは自作なので良くない部分があるかもしれません。指摘等ありましたらこちらにお願いします。
●バックアップ方法
pg_dump,pg_dumpall(論理バックアップ)とPITR用のベースバックアップを同時に行う事にします。
バックアップはスクリプトを作成してcronで自動実行します。
リカバリに必要な物は
・ユーザ情報等(DumpAllによるバックアップ)
・PITRベースバックアップ
・アーカイブログ(/mnt/usbdisk1/postgres/arch/ へ出力するように変更します)
・トランザクションファイル(/var/lib/pgsql/9.3/data/pg_xlog/)
※これは10分毎にバックアップを行っている(/mnt/usbdisk1/postgres/xlog/)
トランザクションファイルは最悪無くてもリカバリ出来ますがアーカイブした後の
データがリカバリできなくなります。
pg_dumpallとPITRのベースバックアップを同時に行い、リカバリ出来る体制を整えます。
※dumpのバックアップはバックアップした時点でのバックアップ用として保存します。
●バックアップスクリプト
vi /mnt/usbdisk1/postgres/sh/post_bkup.sh
内容は何故か文字化けが多発するため別ページに移動しました。
※pg_dump,pg_dumpallはファイル名に週番号をつけ、7つのファイルに分けて7日間分のバックアップにしています。
※.backupは2世代前まで保存。3世代より古い物は削除2世代目の.backupを利用してpg_archivecleanupを実行しています。
※ベースバックアップも2世代前まで保存
※.backupはファイル名順で処理すると上手くいかなかったので時間順にして処理しています。
●所有者変更
chown postgres /mnt/usbdisk1/postgres/sh/post_bkup.sh
●実行権を与える
-bash-4.1$ chmod -R u+x /mnt/usbdisk1/postgres/sh/post_bkup.sh
●毎日0時5分にバックアップを行う
-bash-4.1$ crontab -e
※以下の文を追加します。
5 0 * * * bash -x /mnt/usbdisk1/postgres/sh/post_bkup.sh >& /mnt/usbdisk1/postgres/log/post_bkckup`date +'\%u'`.log
※バックアップのログを"/mnt/usbdisk1/postgres/log/post_bkckup`date +'%u'`.log"として保存。週番号をつける事によって
1週間分のログを保存する事とします。
●pg_xlogのバックアップ
※トランザクションファイルのバックアップ
リアルタイムに変更を摘要するのは難しい・容量の問題もあるので10分毎にバックアップを取る事にします。
●rcyncによるバックアップテスト
rsync -av --delete /var/lib/pgsql/9.3/data/pg_xlog/ /mnt/usbdisk1/postgres/xlog/
●10分毎にバックアップを行う
-bash-4.1$ crontab -e<
※以下の文を追加します。
0,10,20,30,40,50 * * * * rsync -a --delete /var/lib/pgsql/9.3/data/pg_xlog/ /mnt/usbdisk1/postgres/xlog/
トップへ戻る