LNMPA监测MySQL进程终止时自动重启方法

更新时间:2018-10-06 分类:网络技术 浏览量:1694

LNMPA监测MySQL进程终止时自动重启方法

LNMPA 搭建服务器环境软件,有时候不知道是什么原因,会导致无法连接数据库的问题,网站无法正常访问,影响用户体验和蜘蛛爬虫。发现的时候,已经不知道停止了多久,而且只能手动重启。经过翻墙谷歌搜索,找到了一个博主写的Ubuntu Linux下定时监测MySQL进程终止时自动重启的方法,测试成功。至于是否有效,还需要后面做监测。

测试环境:CentOS 7.x LNMPA

编写Shell脚本

首先,我们要编写一个shell脚本,脚本主要执行的逻辑如下:

显示mysqld进程状态,如果判断进程未在运行,那么输出日志到文件,然后启动mysql服务,如果进程在运行,那么不执行任何操作,可以选择性输出监测结果。

可能大家对于shell脚本比较陌生,在这里推荐官方的shell脚本文档来参考一下

Ubuntu Shell 编程基础

shell脚本的后缀为sh,在任何位置新建一个脚本文件,可以在根目录下(例如:/etc/mysql 目录下)新建一个 listen.sh 文件。

执行如下命令:


touch listen.sh
vi listen.sh

然后,通过VI命令编辑Mysql_listen.sh文件

vi listen.sh

输入内容如下:


pgrep mysqld &> /dev/null
if [ $? -gt 0 ]
then
echo "`date` mysql is stop"
service mysql start
else
echo "`date` mysql running"
fi

pgrep mysqld 是监测mysqld服务的运行状态,&> /dev/null 是将其结果输出到空文件,也就是不保存输出信息

$? 是拿到上一条命令的运行结果,-gt 0 是判断是否大于0,后面则是输出时间到日志文件,然后启动mysql,否则不启动mysql

保存好了,那么我们执行如下的命令,来测试一下。


root@iZ28uogb3laZ:/etc/mysql# pgrep mysqld
3359
root@iZ28uogb3laZ:/etc/mysql# chmod 777 listen.sh
root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:44:58 CST 2015 mysql running
root@iZ28uogb3laZ:/etc/mysql# sudo service mysql stop
mysql stop/waiting
root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:45:17 CST 2015 mysql is stop
mysql start/running, process 4084
root@iZ28uogb3laZ:/etc/mysql# ./listen.sh
Sun Aug 16 16:45:24 CST 2015 mysql running
root@iZ28uogb3laZ:/etc/mysql#

编辑完了.sh文件之后,需要对其进行授权,增加可执行的权限。

sudo chmod 777 listen.sh

然后运行脚本测试一下,显示mysql正在运行。把mysql关掉,运行脚本,便会检测到mysql已关闭,然后重新启动了mysql,再次运行,便会发现mysql正常运行了。

增加日志输出

编辑listen.sh内容如下:


#!/bin/bash
pgrep mysqld &> /dev/null
if [ $? -gt 0 ]
then
echo "`date` mysql is stop" >> /var/log/mysql_listen.log
service mysql start
else
echo "`date` mysql running" >> /var/log/mysql_listen.log
fi

每执行一次脚本,输出结果都会被保存到 /var/log/mysql_listen.log

至此,基本完成了shell脚本。但是,如果需要监控服务器运行情况,则需要添加到定时计划中。

添加定时任务

输入命令:crontab -e 添加以下内容


*/5 * * * * /etc/mysql/mysql_listen.sh

/5代表五分钟执行一次,后面的四个点依次代表了,小时,日,月,星期。如果想要时间长一些,比如一小时调度一次,那就设置一下后面第一个*就好了。

然后重启一下定时计划服务,或者重启服务器。

这样,每五分钟系统就会调用一下刚才写的那个脚本。

如此,我们隔一个小时后可以查看脚本运行情况,通过分析脚本输出日志即可。

cat /var/log/mysql_listen.log

查看结果如下:


Thu Feb 16 10:32:55 CST 2017 mysql running
Thu Feb 16 10:40:28 CST 2017 mysql running
Thu Feb 16 10:50:01 CST 2017 mysql running
Thu Feb 16 11:00:01 CST 2017 mysql running
Thu Feb 16 11:10:01 CST 2017 mysql running
Thu Feb 16 11:20:01 CST 2017 mysql running
Thu Feb 16 11:30:01 CST 2017 mysql running
Thu Feb 16 11:40:01 CST 2017 mysql running
Thu Feb 16 11:50:01 CST 2017 mysql running
Thu Feb 16 12:00:01 CST 2017 mysql running
Thu Feb 16 12:10:01 CST 2017 mysql running
Thu Feb 16 12:20:01 CST 2017 mysql running
Thu Feb 16 12:30:01 CST 2017 mysql running
Thu Feb 16 12:40:02 CST 2017 mysql running
Thu Feb 16 12:50:01 CST 2017 mysql running
Thu Feb 16 13:00:01 CST 2017 mysql running
Thu Feb 16 13:10:01 CST 2017 mysql running
Thu Feb 16 13:20:01 CST 2017 mysql running
Thu Feb 16 13:30:01 CST 2017 mysql running
Thu Feb 16 13:40:01 CST 2017 mysql running

本文来源:静觅 转载请注明出处及链接