宝塔面板设置mysql服务停止后自动启动的计划任务

服务器内存买小了,网站比较多,mysql经常停掉,每次手动启动mysql,很麻烦,关键是不能及时启动,找下看有没有mysql重启的脚本,用宝塔的计划任务来定时操作。

维护小型服务器时我们经常会遇到mysql服务器停止的情况。
一般情况是由于服务器内存不足,或者是非正常请求导致mysql服务器停止工作。
如果是半夜宕机,或者是我们不能及时发现的话,是很尴尬的一件事情。
解决方法:要么提高服务器配置,要么重新设置一下mysql参数。
或者mysql停止服务的情况不是很频繁的情况下,我们可以重启已停止的mysqld进程。
比如,每5分钟监测一下mysql的状态。如果已停止,重启一下就ok了。

在宝塔后台计划任务 里添加 mysql监测和启动脚本:

任务名称:listen.sh

脚本内容:

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

* 注意:上面的代码中if后面要有空格,获取时间用的date两边用的是Tab键上面的那个点,不是单引号。

其中:
pgrep mysqld 是监测 mysqld 服务的运行状态,
&> /dev/null 是将其结果输出到一个空文件,相当于不保存内容。
$? 是获取上一条命令的运行结果(值),
-gt 0 判断获取的值是否大于0。
如果是大于零,echo 内容“`date` mysql server is stoped.”,并且将此内容保存在/var/log/mysql_listen.log日志文件中,该日志文件事先不用特意创建。同时,启动 mysqld 服务。
如果是小于等于零,echo “`date` mysql server is running.” 将输出的内容保存到日志文件中。
 
文件创建完毕了,我们需要测试一下是否好用

点击执行该脚本任务:

执行完成 提示后,点开日志,就能看到 Successful。说明脚本执行成功。

然后我们可以试着停止mysqld服务。然后执行我们做的脚本,看看能不能启动服务。

去宝塔面板把 mysql 服务停止了,然后再执行该脚本。执行完成后查看日志,出现:Starting MySQL...就是执行成功了。

再去看看mysql页面,显示已经启动了。

然后编辑下执行周期,每10分钟执行一次。完美。