IT Japan
MySQL replication script2 본문
SHOW SLAVE STATUS\G
슬레이브의 상태를 확인하여 문제가있을 것 인 경우 메일을 보내는 스크립트 메모입니다.
의도로는
* 슬레이브 프로세스가 달리고 있을까?
* 오류가 발생하고 있지 않은가
* 지연이 허용 범위 내에 있는지 (30 초)
덧붙여서 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");