站长图库

Linux 定时检测 MySQL 数据库是否宕机并自动重启

 发布时间 2020-06-25 13:12:49 热度 87

 Tag标签:  LinuxMySQL数据库

我们建站初期都会选择一台小内存的 VPS 服务器,这样降低建站初期的成本,再说初期访问量很小没有必要使用高配服务器,但是使用过程中不知道是不是内存不够的原因,MySQL 数据库服务总是会自动停止,就是说数据库都宕机了。那么有没有什么办法在 Linux 上定时检测 MySQL 服务是否宕机,并自动重启服务 Linux 上定时检测 MySQL 服务是否宕机,并自动重启服务呢?本文分享个基于 Shell 脚本和 crontab 命令的定时检测 MySQL 服务是否宕机,并自动重启服务的方案,如果你也遇到了这种问题,可是尝试用这种解决办法。

一、检测 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 数据库服务是否宕机,如果出现数据库宕机则自动重启数据库服务。



评论(0)条

    站长图库

    站长素材 - 建站资源分享平台

    猜你喜欢
    CSS3 SVG房屋交易流程图特效

    CSS3 SVG房屋交易流程图特效

    其他 188 2020-01-10

    CSS3 SVG房屋交易流程图特效是一款房屋流程购买步骤图,合作,签署,付款,填写,交付等五步骤布局样式代码。支持黑白两...

    抽象卡通小恐龙矢量素材下载

    抽象卡通小恐龙矢量素材下载

    UI元素 96 2020-03-28

    抽象卡通小恐龙矢量素材,适用于小恐龙设计使用。

    物理化学元素设计矢量素材下载

    物理化学元素设计矢量素材下载

    UI元素 175 2020-02-21

    物理化学元素设计矢量素材,适用于教育教学元素设计使用。

    白菜cms双端影视APP源码/全开源/无授权/无后门

    白菜cms双端影视APP源码/全开源/无授权/无后门

    其他源码 663 2020-02-08

    白菜cms双端影视APP源码/全开源/无授权/无后门,内附安装教程轻量级原生APP开发语言:后端thinkphp PHP...