Я использую CentOS 6.2.
Я следил за руководством Алекса Вильямса по настройке MySQL через HAProxy. Вот.
Вместо того, чтобы HAProxy проверял состояние MySQL и репликации, у меня скрипты запускаются раз в минуту в crontab. Если один из них терпит неудачу, я прошу их передать ошибку в текстовый файл; /opt/repl.txt или /opt/mysql.txt.
У меня есть сценарий, который проверяет, существуют ли эти файлы, и если да, то отправляет электронное письмо, уведомляющее персонал о том, что произошел сбой. Это также настроено в crontab для запуска раз в минуту.
По сути, я пытаюсь достичь этого; Я хотел бы, чтобы сценарий отправлял электронные письма только при первоначальном сбое и один раз в час после этого, пока проблема не будет решена. Я не совсем уверен, как это сделать с помощью сценариев bash. В последний раз, когда что-то не удалось, он отправил по электронной почте минутное письмо об этом, и это определенно не то, что я хотел бы. Любая помощь приветствуется.
я использую pt-table-контрольная сумма от Percona.com для этого.
Вот сокращенный код:
mysql-checksum () {
OUTFILE=/tmp/outfile
mysql --execute "SELECT db, tbl, chunk, this_cnt-master_cnt AS cnt_diff, \
this_crc <> master_crc OR ISNULL(master_crc) <> ISNULL(this_crc) AS crc_diff \
FROM test.checksum \
WHERE master_cnt <> this_cnt OR master_crc <> this_crc OR ISNULL(master_crc) <> ISNULL(this_crc);" > $OUTFILE
# Print a status message.
# Any output from above command is bad.
if [ -s $OUTFILE ]; then
# List out the bad tables.
BADTABLES=`tail +2 $OUTFILE | cut -f1,2 | tr '\t' '.' | tr '\n' ','`
echo "ERROR: Bad checksum on these tables [$BADTABLES]. For details see $HOST:$OUTFILE." | mail -s "mysql checksum error" admin@example.org
return 1
fi
}
Измените свой сценарий, чтобы он касался файла при отправке электронного письма и не отправлял электронное письмо, если файл старше 1 часа.