Shell开发MySQL主从监控脚本

监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。 1)开发一个守护进程脚本每30秒实现检测一次。
2)如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。 阶段3:
3)如果IO和SQL线程出现异常,则通知邮件给管理员

使用数组技术实现上述脚本(获取主从判断及错误号部分)

主从监控脚本如下:

#!/bin/bash
CODE=(
1158
1159
1008
1007
1062
2003
)
fun_Base(){
#1.定义变量

#1.1 抓取IP地址
IP=`ifconfig eth0 |awk ‘NR==2{print $2}‘`

#1.2 获取slave IO和SQL状态,Err代码
My_SQL=`mysql -e "show slave status\G" |egrep "SQL_Running:" |awk ‘{print $NF}‘`
My_IO=`mysql -e "show slave status\G" |egrep "IO_Running:" |awk ‘{print $NF}‘`
My_CODE=`mysql -e "show slave status\G" |egrep "Last_IO_Errno:" |awk ‘{print $NF}‘`

#1.3 定时时间变量
Time=`date +%F-%H:%M:%S`

#1.4 定义log目录
DIR=/tmp/slave_${Time}
Status_Log=$DIR/slave_status_${Time}.log
Check_log=$DIR/slave_check_${Time}.log
Erro_log=$DIR/slave_err_${Time}.log
#1.5 定义邮箱
Total="$IP slave status $Time"
Mail_Rec="[email protected]"

#2.将slave的状态保存到log文件中
[ -d $DIR ] || mkdir $DIR -p
mysql -e "show slave status\G" >$Status_Log
}

#3.判断slave状态的错误代码
fun_Status(){
RETVAL=0
for  ((i=0;i<${#CODE[*]};i++))
do
    if [ $My_CODE -eq ${CODE[i]}  ];then
       mysql -e "stop slave;" && RETVAL=$?
       [ $RETVAL -eq 0 ] && mysql -e "SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;" && RETVAL=$?
       [ $RETVAL -eq 0 ] && mysql -e "start slave;" && RETVAL=$?
       [ $RETVAL -eq 0 ] && echo "slave errno code is successful." >$Erro_log
       [ $RETVAL -eq 0 ] && mail -s "$Total" $Mail_Rec <$Status_Log && mail -s "$Total" $Mail_Rec <$Erro_log
    fi
done
}

#4.判断IO和SQL线程是否正常
fun_Check(){
  if [ "$My_SQL" == "Yes" -a "$My_IO" == "Yes" ];then
    echo "slave status is successful."
    echo "slave status is successful." >$Check_log
    mail -s "$Total" $Mail_Rec <$Status_Log
    mail -s "$Total" $Mail_Rec <$Check_log
  else
    echo "slave status is failed."
    echo "slave status is failed." >>$Check_log
    mail -s "$Total" $Mail_Rec <$Status_Log
    mail -s "$Total" $Mail_Rec <$Check_log
 fi
}

#5.主体函数
main(){

while true
do
 fun_Base
 fun_Status
 fun_Check
 sleep 20
done
}

main

原文地址:http://blog.51cto.com/12643266/2335020

时间: 2024-10-12 06:31:00

Shell开发MySQL主从监控脚本的相关文章

mysql主从监控脚本:

在大型网站中对数据库往往都是做主从设计的,要是根据设计模式读写都只是进行再主库上面,那么从服务器往往是智能起了备份的作用,有时候备份端口了适当时候手工添加就好,但是要是网站做了读写分离,不及时发现那就是灾难性的了:(一般出现从库跟不上可以暂时先把读也切换到主上去.等从恢复好了再切回来):下面根据这个给出一条主从监控脚本: #!/bin/bash#check MySQL_Slave Status #crontab time 00:10 MYSQLPORT=`netstat -na|grep "LI

Mysql 主从复制监控脚本

Mysql 主从复制监控脚本, 监控IO和SQL线程.如果问题.发送邮件报警. #!/bin/bash #write by lijun #Date 2014-08-12 #Description monitor the master pass the data to the slave #===================== mail="邮件地址" #=================== #获取slave io 进程和sql进程的状态 b="`mysql -uroot

shell监控MySQL主从状态脚本两则

内容为自己的一点总结,如有不对欢迎狠劲儿拍砖 本文来自http://yijiu.blog.51cto.com/转载请经博主同意,翻版可耻 监控主从复制正常与否 相比各位都应该知道,监控主从是否工作正常,涉及命令如下: show slave status\G; 那么,我们需要关注的参数如下: 1. 首先查看SQL和IO线程是否为YES状态(想必各位都明白了) 2. 是否有延迟 是否大于0   #一般生成环境延迟是否大于500秒,如果大于500则报警,如大于1000则严重报警 #比如传递一个sql到

mysql主从同步脚本监控脚本

结合我的另一篇zabbix自动发现Mysql并监控的博客使用最佳: 链接点我 脚本很简单,一看就明白: [[email protected] files]# cat libexec/slave.sh  #!/bin/bash ##slave.sh ##YES ---- 1 ##NO  ---- 0   export MYSQL_PWD=xxxxxx xstats () { STATS=$(/usr/local/mysql/bin/mysql -h127.0.0.1 -uUser_name  -P

Mysql主从搭建脚本

前言:(1)该脚本可在任意路径运行,只需能够连接外网,会自动下载所需软件包并安装.            (2)该脚本内mysql版本为mysql-5.6.25.            (3)为提高脚本自由度,该脚本部署中,需要手动指定IP.同步用户名.同步密码,安装中按照提示输入即可.        别的就不多说啦,大家自己体验吧,欢迎意见和批评 ! 图解如下:     (1)主菜单     主菜单选项如下图,共7个选项,可输入该选项内容分别执行选项中的内容.其中可输入help查看帮助,可输入

[工具开发] 把nagios监控脚本改成keepalived监控脚本

最近在做开发和办公环境的高可用,采用的是keepalived:keepalived基于Linux内核支持的LVS,既能实现高可用,又能实现负载均衡,非常实用. keepalived监控服务状态时可以用多种方式,如:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK(自定义脚本方式),为了精确的监控服务的状态,我们需要编写自定义监控脚本. 目前很多公司都会部署nagios作为服务的监控平台,nagios也需要监控脚本或者程序,如果keepalived监

利用shell开发rsync服务启动脚本

利用shell函数开发rsync服务启动脚本,之前的不够专业 #!/bin/bash #chkconfig: 2345  20 80                       #这两行加入kconfig #description: Saves and restores system entropy  pool source /etc/init.d/functions    #调用标准的函数库 aa() {   echo "plz one canshu"   exit 5 } bb()

开发一个终端监控脚本

预备知识 script命令的使用 参数: -t     指明输出录制的时间数据文件 -f         如果需要在输出到日志文件的同时,也可以查看日志文件的内容,可以使用 -f 参数.PS:可以用于教学,两个命令行接-f可以实时演示 -a          输出录制的文件,在现有内容上追加新的内容 -q          可以使script命令以静默模式运行 格式: script -t 2>/目录/文件.date -a -q -f /目录/文件.log 其中-t 2>/目录/文件 是指定一个

监控MySQL主从同步脚本

#!/bin/sh#date:2015-12-07#filename:Check_MySQL-rep.sh#作者:linuxzkq #Email:[email protected]#version:v1.0 Mysql_cmd="mysql -uroot -poldboy"Error_num=(1158 1159 1008 1007 1062) while truedo    rep=($($Mysql_cmd -e "show slave status\G;"|e