城市里的游牧民族

Menu

CentOS通过crontab定时检测MySQL状态

好久没有写点偏技术和实用的东西了,那么今天就来一篇实在的。

像我这样的博主大有人在,做着非技术的工作,却爱折腾自己这鲜有访问的博客。很多博主都是用的Wordpress,好坏不论。博客经常会遇到数据库跑死了的情况,当然我们这里就不去研究数据库为什么跑死,一般的解决方式都是重启一下MySQL数据库。可是我们都是很纠结,数据库是多久跑死的,我的网站已经多久访问不了?能不能在数据库跑死的时候,马上重启?这样大家就能随时访问我的网站呢?

答案当然是有的,方法原理就是:通过编写一个shell脚本,脚本的内容就是去检查MySQL数据库的状态,如果MySQL没有运行,则执行MySQL数据库启动命令,如果运行的好好的,则exit。然后通过crontab定时任务去执行这个脚本。这样就能满足我们这一颗爱折腾爱纠结的心了。

shell脚本是百度拔出来的,在此基础上做了一定修改,经过我的测试,大家可以不用在改什么了,照着下文一步一步的做就行了。祝你好运。

当然请大牛的你可以鄙视的飘过。

1、在路径/root目录下新建bin文件夹,如果你的root路径下面已经有了这个文件夹,你可以的忽略这步。

~]# mkdir /root/bin

2、在/root/bin文件夹下面新建一个shell脚本

~]# cd /root/bin/

bin]# vim mysql_listen.sh

3、在shell脚本里面ctrl+v下文代码,在ctrl+v之前,先按键盘字母“i”。粘贴后按键盘上的“ESC”,然后输入“:wq”就是保存退出的意思。

#!/bin/bash

pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]
then
echo "At time:$(date) :MySQL is stop .">> /var/log/mysql_messages
/etc/init.d/mysql start
else
exit
fi

当然,好奇的你可以已经发现了有这么一串代码“/var/log/mysql_messages”,这个是为了在执行这个脚本的时候如果发现数据库没有运行则输出日志进行记录,方便我们查询。所以我们要先增加mysql_messages这个文件。

~]# vim /var/log/mysql_messages

执行上面命令后按键盘上的“ESC”,然后输入“:wq”就是保存退出,即可。

4、通过crontab来增加定时任务,命令如下。如果你还没有安装crontab,那你自己百度去吧!

~]# crontab -e

同样ctrl+v下文代码,在ctrl+v之前,先按键盘字母“i”。粘贴后按键盘上的“ESC”,然后输入“:wq”

*/1 * * * * sh /root/bin/mysql_listen.sh > /dev/null 2>&1

上面代码的意思就是说,每隔一分钟执行以下/root/bin/mysql_listen.sh这个脚本。执行后不发送结果邮件。

5、做完上述步骤后,我们就要来见证奇迹的时刻了。(测试)

手动停止MySQL数据库

~]# service mysql stop

马上查看MySQL数据库的状态

~]# service mysql status
ERROR! MySQL is not running

等待。。。

~]# service mysql status
SUCCESS! MySQL running (38235)

已经自动起来了

然后我们再去日志里面查看相关记录的时间日志

~]# more /var/log/mysql_messages
At time:Fri Jan 15 15:35:01 CST 2016 :MySQL is stop .
At time:Fri Jan 15 16:17:01 CST 2016 :MySQL is stop .
~]#

 

很容易吧!

我总觉得吧!大家喜欢折腾,都不容易。

 

— 于 共写了1535个字
— 文内使用到的标签:
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可。

5条回应:“CentOS通过crontab定时检测MySQL状态”

  1. BABY说道:

    数据库怎么会跑死呢?

  2. 家具电商说道:

    [gbz饿晕] 新手报到,认真学习

  3. 春去春来说道:

    装逼遭雷劈

发表评论

电子邮件地址不会被公开。 必填项已用*标注