web-dev-qa-db-ja.com

悪いpg_dumpログで何を探すべきか

プログラムでcronのスケジュールされたpg_dumpのエラーを検出したいと考えています。

ログファイルが「pg_dump:データベース定義の保存」で終わっているかどうかをチェックすることは別として:

ダンプをプログラムでチェックするために、他にどのようなわかりやすい文字列をgrepできるかは問題ありません。

2

主なインジケータは、pg_dumpコマンドの終了ステータスです。ゼロ以外の場合は、何か問題が発生しました。それ以外の場合は問題なく機能しました。これは、コマンドとシェルの間の暗黙の契約であり、違反するとバグになります。また、サブコマンドをまったく起動できなかった場合にもテストできます。

終了コードをテストし、それに応じて動作するUnixシェルの基本的なスケルトンを次に示します。

d=`date +%Y%m%d`
dump=/path/to/backups/daily-backup-"$d"
error=/path/to/backups/errors-backup-"$d".txt

pg_dump -U username dbname >$dump 2>$error
code=$?
if [ $code -ne 0 ]; then
  echo 1>&2 "The backup failed (exit code $code), check for errors in $error"
fi

エラーメッセージを後で分析できるように、耐久性のあるストレージに保存する必要があります。エラーがまったく発生しない場合、-vオプションが使用されていない限り、エラー用のファイルは空ですが、上記のスクリプトに意図的に含まれていません。

メッセージについて:データベース定義を保存しています

詳細(-v)オプションを使用する場合にのみ、他の多くの情報メッセージとともに表示されます。問題は、エラーが発生した場合、これらのメッセージがエラーメッセージと混合され、正常なものとそうでないものを区別するためにある程度の専門知識が必要になることです。

4
Daniel Vérité