最近发现我们监控作业偶尔会发出带有附件ATT00001.bin的邮件,而大部分时候,它都发出带有内容的邮件,以脚本mysql_slowlog_monitor.sh来说,
平时会将慢查询分析报告放在邮件的正文发给DBA,慢查询分析报告的内容放在邮件中,出现问题的时候,邮件正文没有内容,它只有
一个附件ATT00001.bin 分析后发现原因:pt-query-digest生成的慢查询分析报表,有些SQL语句里面包含了特殊字符^M,它导致mail将使用回车符 (^M, r) 字符的
非 Unix 文本文件将被视为二进制数据。所以mailx将将其当作附件发送出来,具体请见下面英文,更多详细信息参考参考资料[1] Mailx expects input text to be in Unix format, with lines separated by newline (^J, n) characters only.
Non-Unix text files that use carriage return (^M, r) characters in addition will be treated as binary data;
to send such files as text, strip these characters e. g. by tr -d '现象描述
function send_slow_rpt(){
$PT_QUERY_DIGEST --since=$HOURS $SLOW_LOG_FILE > $ANALYSIS_RPT_FILE
rpt_exist_data=`cat $ANALYSIS_RPT_FILE | wc -l `
if [ $rpt_exist_data -gt 2 ]; then
MAIL_SUBJECT="MySQL slow log report on the `hostname` ($SERVER_IP) at $SLOW_RPT_DATE"
mailx -s "${MAIL_SUBJECT}" -r ${MAIL_FROM} ${MAIL_TO} ${ANALYSIS_RPT_FILE}
fi
}原因分析:
参与评论
手机查看
返回顶部