#假设,当前Mysql服务的root密码为Aa123456##,写脚本检测mysql服务是否正常
## 比如,可以正常进入mysql执行show processlist,并检测一下当前的mysql服务是主还是从,
## 如果是从,请判断它的主从服务是否异常。如果是主,则不需要做什么。
#!/bin/bash
## 把这串命令直接赋值到变量里,方便后面多次调用
Mysql_c="mysql -uroot -p123456##"
## 将登陆MYSQL并执行命令的正确和错误输出分别指向不同的文件
$Mysql_c -e "show processlist" >/tmp/mysql_pro.log 2>/tmp/mysql_log.err
# 将已知警告信息删除
sed -i '/mysql: \[Warning\] Using a password on the command line interface can be insecure./d' /tmp/mysql_log.err
num=`cat /tmp/mysql_log.err |wc -l`
echo "文件mysql_log有$num行"
if [ $num -ne 0 ]
then
echo "MYSQL服务不正常,错误信息为:"
cat /tmp/mysql_log.err
rm -f /tmp/mysql_pro.log /tmp/mysql_log.err
exit 1
else
## 将show slave status 的输出信息写入到临时文件
$Mysql_c -e "show slave status\G" >/tmp/mysql_s.log 2>/dev/null
## 如果临时文件内容不为空,则认为是从,否则就是主
if [ -s /tmp/mysql_s.log ]
then
## 判断主从状态是否正常,主要就是看Slave_IO_Running和Slave_SQL_Running这两行是不是Yes
y1=`grep 'Slave_IO_Running:' /tmp/mysql_s.log|awk -F : 'print $2'|sed 's/ //g'`
y2=`grep 'Slave_SQL_Running:' /tmp/mysql_s.log|awk -F : '{print $2}'|sed 's/ //g'`
## 只有两个全部为YES,主从状态才是正常的
if [ $y1 == "Yes" ] && [ $y2 == "Yes"]
then
echo "从状态正常"
else
echo "从状态不正常"
fi
fi
fi
检查mysql主从状态是否正常
转载上一篇:判断是否开启mysql服务
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
MySQL主从同步延迟解决
mysql主从同步延迟解决
MySQL 主从同步 mysql主从同步 -
检查MySQL的Slave是否正常
下午写了一个的检查MySQL REPLICATION的SLAVE是否正常的脚本,比较简单。如果想和CRONTAB一块运行,去掉Read部分即可。
职场 mysql 数据库 休闲 replication