Tulains Córdova Asked: 2013-08-15 05:50:22 +0800 CST2013-08-15 05:50:22 +0800 CST 2013-08-15 05:50:22 +0800 CST 在错误的 pg_dump 日志中寻找什么 772 我们希望以编程方式检测 cron 计划的 pg_dumps 中的错误。 除了检查日志文件是否以“pg_dump:保存数据库定义”结尾: 为了以编程方式检查转储,我可以使用 grep 查找其他哪些说明字符串是可以的。 postgresql monitoring 1 个回答 Voted Best Answer Daniel Vérité 2013-08-15T07:06:07+08:002013-08-15T07:06:07+08:00 主要指标是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只有在使用详细 ( ) 选项时,它才会与许多其他信息性消息一起显示。问题在于,如果出现错误,这些消息将与错误消息混合在一起,并且需要一定程度的专业知识来区分正常与不正常。
主要指标是
pg_dump
命令的退出状态。如果它不为零,那么就出了问题,否则它一直有效。这是任何命令和 shell 之间的隐含契约,违反它将是一个错误。当子命令根本无法启动时,它也是可测试的。这是 Unix shell 中的一个基本框架,用于测试退出代码并采取相应措施:
有必要将错误消息保存在持久存储中,以便以后对其进行分析。当根本没有发生错误时,错误文件应该在那里但为空,除非
-v
使用了该选项,但它故意不在上述脚本中。关于消息:保存数据库定义
-v
只有在使用详细 ( ) 选项时,它才会与许多其他信息性消息一起显示。问题在于,如果出现错误,这些消息将与错误消息混合在一起,并且需要一定程度的专业知识来区分正常与不正常。