shell监控脚本-监控mysql 主从复制


注意:请先参考 shell监控脚本-准备工作,监控脚本rhel5 下测试正常,其它版本的linux 系统请自行测试
#监控mysql 主从复制

   
   
   
   
  1. cat chk_mysql_rep.sh

  2. #!/bin/bash

  3. #

  4. #script_name:chk_mysql_rep.sh

  5. #check mysql replication

  6. #

  7. #last update 20130320 by dongnan

  8. #bbs# http://bbs.ywwd.net/

  9. #blog# http://dngood.blog.51cto.com

  10. #

  11. #ssh root@xen "/usr/local/mysql/bin/mysql -uroot -pdongnan -e 'show slave status\G' -ss" | awk '/Running:/ {print $2}'

  12. #Yes

  13. #Yes

  14. #

  15. #variables

  16. ssh=/usr/bin/ssh

  17. sh_dir=/root/sh/

  18. crondir=${sh_dir}crontab

  19. source ${sh_dir}CONFIG

  20. hosts="$DB_SLAVE_HOSTS"

  21. #main

  22. #主循环遍历机器

  23. for HOST in $hosts;do

  24. log=$crondir/log/mysql_replication_error.log

  25. key=$($ssh root@$HOST "/usr/local/mysql/bin/mysql -uroot -pdongnan -e 'show slave status\G' -ss" | awk '/Running:/ {printf $2}')

  26.    #无法连接的主机,跳过本次循环

  27.    test -z "$key" && continue

  28.    #返回结果真

  29.    if [ "$key" == "YesYes" ];then

  30.        #flag真,解除报警

  31.        if [ -f "${crondir}/log/$HOST.mysql" ];then

  32.            #sms

  33.            #for mobile in $MOBILES;do

  34.                #echo "$HOST replication ok" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode

  35.            #done

  36.            #mail

  37.            for mail in $MAILS;do

  38.                echo "$HOST replication ok" | mail -s "$HOST replication ok" $mail

  39.            done

  40.            #flag

  41.            rm -f "${crondir}/log/$HOST.mysql"

  42.        fi

  43.    #返回结果假

  44.    else  

  45. check_date=$(date '+ %F %T')

  46.        #flag假,报警

  47.        if [ ! -f "${crondir}/log/$HOST.mysql" ];then

  48.            #sms

  49.            #for mobile in $MOBILES;do

  50.                #echo "$HOST replication error" | /usr/local/bin/gammu --sendsms TEXT "$mobile" -unicode

  51.            #done

  52.            #mail

  53.            for mail in $MAILS;do

  54.                echo "$HOST replication error" | mail -s "$HOST replication error" $mail

  55.            done

  56.            #flag

  57.            echo "replication error" >"${crondir}/log/$HOST.mysql"

  58.            #log

  59.            echo "$check_date $HOST mysql replicaton error" >> $log

  60.        fi

  61.    fi

  62. #

  63. done

#
结束
更多请:  
linux 系统运维  37275208  
vmware 虚拟化  166682360