一、检测 MySQL 服务脚本
MySQL 自动重启的 Shell 脚本非常简单,整个逻辑就是检测是否有 MySQL 的进程,如果没有就重启并记录到日志文件中:
pgrep mysqld &> /dev/null
if [ $? -gt 0 ]
then
lnmp restart
echo “MySQL stopped at time: `date` ” >> /root/log/mysql_listen.log
fi
二、定时任务
定时检测的功能就是通过 crontab 实现的,具体的介绍可以参考:《Linux 利用 crontab 实现定时任务格式与用法简介》
例如我这里设置的是每 5 分钟检查一次 MySQL 服务:
*/5 * * * * /root/mysql.sh > /dev/null 2>&1 &
三、更多脚本
除了检测 MySQL 服务外,相应的还可以检测 PHP 服务、Nginx 服务等,在脚本上略微改动下就好了:
pgrep mysqld &> /dev/null
if [ $? -gt 0 ]
then
lnmp restart
echo “MySQL stopped at time: `date` ” >> /root/log/mysql_listen.log
fi
pgrep nginx &> /dev/null
if [ $? -gt 0 ]
then
lnmp restart
echo “Nginx stopped at time: `date` ” >> /root/log/mysql_listen.log
fi
pgrep php-fpm &> /dev/null
if [ $? -gt 0 ]
then
lnmp restart
echo “Php stopped at time: `date` ” >> /root/log/mysql_listen.log
fi
这样再也不要担心数据库莫名其妙宕机了,使用上述代码 Linux 会定时检测 MySQL 数据库服务是否宕机,如果出现数据库宕机则自动重启数据库服务。