Linux中利用shell脚本定时检测mysql状态,实现自动重启

最近几个月网站服务器老是半夜挂掉,罪魁祸首就是 mysql 自动停止导致的,那就头痛医头,想办法让Mysql 自动启动起来。
要解决这个mysql无规律自动停掉的问题,首先给服务器加个定时执行任务,每分钟去检测一下数据库服务的运行状态,要是down 掉了,就立马启动起来。

我真是太机智了。(别问我怎么不去解决mysql 死掉的真正诱因)
开干。
第一步,添加定时任务,使用crontab。
crontab -e
*/1 * * * * /目录/文件名.sh
#表示每分钟执行一次 sh 文件
 
第二步,编写shell执行文件,代码如下:
#!/bin/bash
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]
then
echo “At time: `date` :MySQL is stop .”>> /日志路径
/etc/init.d/mysqld start
else
echo “MySQL server is running .”
fi
这里要注意,不能用service mysqld/mysql start 命令来启动,会导致mysql启动不了,应使用绝对路径,/etc/init.d/mysqld start来启动。
另外,也可以不写入日志。删掉>> /日志路径即可。
 
完成。
 
就是这么简单。如发现这样操作了,还没有得到期望的结果,可排查crontab是否执行了相应的任务,脚本权限是否够,脚本内部命令或格式是否正确等方面。
如写入*/1 * * * * echo “test” >> /var/log/test
检测cron是否正确执行。
再看看crontab的执行历史记录:
cd /var/log
tail -100 cron
若权限不够,则加上权限。
chmod 777 ./shell文件.sh
 
转载请注明来源:Linux中利用shell脚本定时检测mysql状态,实现自动重启 | 临春阁