6

次のコマンドを使用して、cron ジョブから毎晩バックアップされる postgresql データベースがあります。

su postgres -c "pg_dump our_database | gzip > /home/smb/shared/database_backup.bak.gz"

最近、いくつかの不良セクタから始まるディスク障害が発生し、その間、pg_dump は次のエラーで終了しました。

pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: catalog is missing 17 attribute(s) from relid 20158
pd_dump: The command was: LOCK TABLE public.obvez IN ACCESS SHARE MODE

現在、それはcronジョブにあったため、誰もエラーメッセージに気づきませんでした.バックアップは中断されましたが、サイズはゼロではありませんでした。

古いバックアップからデータを復元することはできましたが、pg_dump がジョブを正常に終了したかどうかを確認する適切な方法を教えてください。

4

1 に答える 1

7

結果をログファイルに書き込み、cron ジョブの最後に、ログファイルの内容を自分の電子メール アドレスに送信します。そうすれば、何かがうまくいかなかったときにわかります。

su postgres "pg_dump our_database 2>> $LOG_FILE | gzip > /home/smb/shared/database_backup.bak.gz"
cat $LOG_FILE | mailx $MAINTAINERS -s "Postgresql backup"

補遺: 何か問題が発生した場合にのみ電子メールを送信する場合は、pg_dump のリターン コードを確認できます。

LOG_FILE=/tmp/pgdump.err

if ! pg_dump -U backupuser "our_database" 2> $LOG_FILE 
then 
    cat $LOG_FILE | mailx 'youremailaddress' -s "Postgresql backup failure!"
fi
于 2011-06-14T09:09:30.627 に答える