精心整理的mysql主从监控脚本,值得收藏
概述
分享下最近整理的一个mysql主从监控脚本,仅供参考。
一、邮件配置
1、安装邮件服务
yum -y install sendmail mailx
2、修改配置
# vi /etc/mail.rc --- 增加如下内容 --- set [email protected] set smtp=mail.your-domain.com set smtp-auth-user=yourname set smtp-auth-password=yourpasswd set smtp-auth=login
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
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!" [email protected] 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" [email protected] fi else echo "Mysql is not running!" | mail -s "warn! $ip mysql is not running" [email protected] fi
3、设置定时任务
*/5 * * * * /bin/sh /home/scripts/mysql_check.sh > /dev/null 2&1
三、测试
1、执行脚本
2、邮件
当服务停止时收到邮件如下:
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
相关推荐
emmm00 2020-11-17
暗夜之城 2020-11-11
疯狂老司机 2020-09-08
王艺强 2020-11-17
aydh 2020-11-12
世樹 2020-11-11
zry 2020-11-11
URML 2020-11-11
spurity 2020-11-10
yifangs 2020-10-13
Andrea0 2020-09-18
Ida 2020-09-16
ltd00 2020-09-12
tufeiax 2020-09-03
xjd0 2020-09-10
greatboylc 2020-09-10
adsadadaddadasda 2020-09-08
CoderToy 2020-11-16
ribavnu 2020-11-16