Postgresql
在錯誤的 pg_dump 日誌中尋找什麼
我們希望以程式方式檢測 cron 計劃的 pg_dumps 中的錯誤。
除了檢查日誌文件是否以“pg_dump:保存數據庫定義”結尾:
為了以程式方式檢查轉儲,我可以使用 grep 查找其他哪些說明字元串是可以的。
主要指標是
pg_dump
命令的退出狀態。如果它不為零,那麼就出了問題,否則它一直有效。這是任何命令和 shell 之間的隱含契約,違反它將是一個錯誤。當子命令根本無法啟動時,它也是可測試的。這是 Unix shell 中的一個基本框架,用於測試退出程式碼並採取相應措施:
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
只有在使用詳細 ( ) 選項時,它才會與許多其他資訊性消息一起顯示。問題在於,如果出現錯誤,這些消息將與錯誤消息混合在一起,並且需要一定程度的專業知識來區分正常與不正常。