在菠菜园维护的客户里面有一个客户的服务器经常发现Mysql服务不知什么时候停止工作了,而这个客户的网站日交易额基本上接近200万/天,所以对于业务的影响非常大。
所以菠菜园就想写一个shell脚本,定时检查mysqld的服务状态,一旦发现停止工作,就立即执行重启。以下是处理过程。
1、在/root/bin目录下建立一个shell目录。(这是波波的习惯,文件按类别放在自己建的目录里,方便使用、查找、编辑、删除。这个习惯自己知道就好。)
- mkdir /root/bin
- cd /root/bin
2、建立mysqld服务守护脚本。
- vim mysqld_protect.sh
脚本内容:
- #!/bin/bash
- PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
- export PATH
- pgrep -x mysqld &> /dev/null
- if [ $? -ne 0 ]
- then
- echo "At time:$(date) :MySQL is stop .">> /var/log/mysql_messages
- service mysqld start
- else
- exit
- fi
在上面的代码中你可能发现红色部分“/var/log/mysql_messages”,对此有些朋友会好奇。其实这个主要是将MySQL出问题时的相关信息记录下来,以备必要时进行查询。所以接下来我们还要建立一个空白的mysql_messages文件。上述脚本中紫色文字部分一定要加,否则crontab不执行,检查问题就麻烦了。
- vim /var/log/mysql_messages
执行上面命令后按键盘上的“ESC”,然后输入“:wq”就是保存退出,即可。
3、利用crontab增加一个定时任务(需要前提安装crontab)。
- crontab -e
在crontab里增加下面一行内容:
- */5 * * * * sh /root/bin/mysqld_protect.sh > /dev/null 2>&1
上面一句话的大体意思就是每隔5分钟就执行以下mysqld_protect.sh这个脚本,执行结果不发送结果邮件。
上述方法是通过shell脚本监测mysqld的状态,大家也可以延伸到监测其他系统进程。今天的分享就到这里,敬请关注菠菜园其他精彩内容。