精心整理的mysql主从监控脚本,值得收藏

精心整理的mysql主从监控脚本,值得收藏

数据库2019-11-29 8:34:25251

分享下最近整理的一个MySQL主从监控脚本,仅供参考。

一、邮件配置

1、安装邮件服务

 yum -y install sendmail mailx

精心整理的mysql主从监控脚本,值得收藏 主从监控 MySQL 数据库 第1张

精心整理的mysql主从监控脚本,值得收藏 主从监控 MySQL 数据库 第2张

2、修改配置

# vi /etc/mail.rc 
--- 增加如下内容 ---
set from=yourname@your-domain.com
set smtp=mail.your-domain.com
set smtp-auth-user=yourname
set smtp-auth-password=yourpasswd
set smtp-auth=login

3、启动

精心整理的mysql主从监控脚本,值得收藏 主从监控 MySQL 数据库 第3张


4、测试

echo 内容 | mailx -s '标题' 接收人邮箱

注意!mailx -v 选项可以查看执行过程,对排错很有用!

二、mysql主从监控脚本

其实思路很简单,查看Mysql主从状态应该都会,就是进入MySQL,然后show master status和show slave status G,然后我要做的其实就是通过脚本定时进入MySQL然后查看状态得到信息,再通过grep和awk对文本进行解析,然后关键的slave_sql_running、slave_io_running和last_error判断后,异常则发送邮件。

1、配置密文

这里用mysql_config_editor的--login-path来解决明文密码的问题
mysql_config_editor命令使用:

mysql_config_editor set --login-path=mydb --host=localhost --user=root --password

完成配置后,生成一个mydb的登录点(login-path),密钥保存在$HOME/.mylogin.cnf。以后访问数据库只要指定login-path的名称即可

 mysql --login-path=mydb

精心整理的mysql主从监控脚本,值得收藏 主从监控 MySQL 数据库 第4张

2、脚本内容

#!/bin/bash
#copyright by hwb
#check MySQL_Slave Status
#crontab time 00:10
ip="xx.xx"
date=`date +"%y%m%d-%H:%M:%S"`
#这里要输出3306
port=`netstat -ntlp | grep 3306 | awk '{print $4}' | awk -F":" '{print $2}'`
num=`mysql --login-path=mydb -e "show slave status\G" | grep Seconds_Behind_Master | awk '{print $2}'`
array=($(mysql --login-path=mydb -e "show slave status\G"|egrep "Running|Seconds_Behind_Master" | awk '{print $2}'))
#echo ${array[0]}
#echo ${array[1]}
#echo ${array[2]}
#mysql服务状态监控
if [ "$port" == "3306" ];then
 echo "mysql is running"
 #主从复制存活状态监控
 #if [ "${array[0]}" == "Yes" ] && [ "${array[1]}" == "Yes" ] && [ "${array[2]} " == "0" ]; then
 if [ "${array[0]}" == "Yes" ] && [ "${array[1]}" == "Yes" ]; then
 echo "MySQL slave status is ok !"
 else
 echo "####### $date #########">> /home/check_mysql_slave.log
 echo "Slave is not running!" >> /home/check_mysql_slave.log
 echo "Slave is not running!" | mail -s "warn!$ip MySQL Slave is not OK!" huangwb@fslgz.com
 fi
 #主从复制延时时间监控
 if [ $num -eq 0 ];then
 echo "Master and slave replication is consistent" 
 else
 echo "Master and slave replication is inconsistent" | mail -s "WARN! $ip MySQL Slave is inconsistent" huangwb@fslgz.com
 fi
else
 echo "Mysql is not running!" | mail -s "warn! $ip mysql is not running" huangwb@fslgz.com
fi

精心整理的mysql主从监控脚本,值得收藏 主从监控 MySQL 数据库 第5张

3、设置定时任务

*/5 * * * * /bin/sh /home/scripts/mysql_check.sh > /dev/null 2&1

三、测试

1、执行脚本

精心整理的mysql主从监控脚本,值得收藏 主从监控 MySQL 数据库 第6张

2、邮件

当服务停止时收到邮件如下:

精心整理的mysql主从监控脚本,值得收藏 主从监控 MySQL 数据库 第7张

文章来源:波波说运维

点击这里复制本文地址 版权说明

以上内容由网友提供,聚米学院整理发布,本站不拥有此类资源的版权,如果侵犯了你的权益,请联系邮箱(zangcp@vip.qq.com) 我们将尽快处理。

支持Ctrl+Enter提交

聚米学院 © All Rights Reserved.