Mysql总是不定时挂掉怎么办?

在菠菜园维护的客户里面有一个客户的服务器经常发现Mysql服务不知什么时候停止工作了,而这个客户的网站日交易额基本上接近200万/天,所以对于业务的影响非常大。

所以菠菜园就想写一个shell脚本,定时检查mysqld的服务状态,一旦发现停止工作,就立即执行重启。以下是处理过程。

1、在/root/bin目录下建立一个shell目录。(这是波波的习惯,文件按类别放在自己建的目录里,方便使用、查找、编辑、删除。这个习惯自己知道就好。)

  1. mkdir /root/bin
  2. cd /root/bin

mysqld shell监测

2、建立mysqld服务守护脚本。

  1. vim mysqld_protect.sh

脚本内容:

  1. #!/bin/bash
  2. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  3. export PATH
  4. pgrep -x mysqld &> /dev/null
  5. if [ $? -ne 0 ]
  6.  then
  7. echo "At time:$(date) :MySQL is stop .">> /var/log/mysql_messages
  8.  service mysqld start
  9.  else
  10. exit
  11.  fi

在上面的代码中你可能发现红色部分“/var/log/mysql_messages”,对此有些朋友会好奇。其实这个主要是将MySQL出问题时的相关信息记录下来,以备必要时进行查询。所以接下来我们还要建立一个空白的mysql_messages文件。上述脚本中紫色文字部分一定要加,否则crontab不执行,检查问题就麻烦了

  1. vim /var/log/mysql_messages

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

3、利用crontab增加一个定时任务(需要前提安装crontab)。

  1. crontab -e

在crontab里增加下面一行内容:

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

上面一句话的大体意思就是每隔5分钟就执行以下mysqld_protect.sh这个脚本,执行结果不发送结果邮件。

上述方法是通过shell脚本监测mysqld的状态,大家也可以延伸到监测其他系统进程。今天的分享就到这里,敬请关注菠菜园其他精彩内容。

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!