Centos7 定时检测Mysql进程停止后自动启动
网站用的是一个配置比较低的服务器而且放了几个没啥流量的站点。
但是最近发现,Mysql的内存占用变高了,可能是因为数据多了的原因,然后1核的CPU居然时不时的100%,具体原因也没排查,不过问题是今天CPU在下午6点半的时候占用100%持续了五分钟,然后Mysql就挂了,我的技术博客也503了,连不上数据库了。
怪不得我今天看到我的统计里面还有谷歌快照的记录,上网站一看发现网站挂了。遇到这种情况我觉得应该写一个脚本来应对mysql宕机的情形。这个脚本我认为还是非常实用的,必须安排上!
实现方法:
定时检测mysql的进程,一旦发现进程终止立刻启动Mysql。
cd /etc/mysql
vi listen.sh
第一行代码,进入目录。第二行代码直接创建编辑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
不多解释上述代码,复制粘贴就行了,mysql的脚本监控日志输出在/var/log/mysql_listen.log
写完脚本给它权限:
chmod 777 listen.sh
添加定时任务:
vi /etc/crontab
或者
crontab -e
然后在最后一行加句代码:
*/5 * * * * root /etc/mysql/listen.sh
上面代码是5分钟自动执行一次这个脚本,下面代码是一小时执行一次:
* */1 * * * root /etc/mysql/listen.sh
间隔时间自己想改多久就多久,保存退出重启crond
systemctl restart crond.service
不想写入日志的话,删掉>> /日志路径就行了。