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