SHOW SLAVE STATUSG でスレーブの状態をチェックして、問題がありそうな場合はメールを送信するスクリプトのメモです。
意図としては、
ちなみにMySQLそのものに接続できないとかの場合はこのスクリプトでは対応できません。
#! /bin/sh
#
# watch replication
#
ALERT_TO="{mail-destination}";
ALERT_SUBJECT="[MySQL] replication alert";
CHECK_COMMAND="SHOW SLAVE STATUS\G";
ALLOW_DELAY_SECONDS=30;
echo "$CHECK_COMMAND";
slave_status=`mysql -u {user} -e "$CHECK_COMMAND"`;
echo "$slave_status";
# set variables from status
eval "`echo "$slave_status" | sed -ne 's/: (.*)/="1"/p'`";
if [ "$Slave_IO_Running" != "Yes" ]; then
msg="Slave_IO_Running : $Slave_IO_Runningn";
fi
if [ "$Slave_SQL_Running" != "Yes" ]; then
msg="${msg}Slave_SQL_Running : $Slave_SQL_Runningn";
fi
if [ "$Last_Errno" != "0" ]; then
msg="${msg}Last_Error : [${Last_Errno}] $Last_Errorn";
fi
if [ "$Seconds_Behind_Master" -gt $ALLOW_DELAY_SECONDS ]; then
msg="${msg}Seconds_Behind_Master : $Seconds_Behind_Mastern";
fi
if [ "$msg" != "" ]; then
echo "n-- Need alert mail --";
echo "$msg";
(echo "${msg}n${CHECK_COMMAND}n${slave_status}" | mailx -s "$ALERT_SUBJECT" "$ALERT_TO");
fi