CentOS下用crontab设置自动重启MySQL计划(2)

之前写了一篇在每天凌晨2:30重启一次MySQL的文章:http://1vr.cn/?p=1818,用了一段时间感觉没什么异常,但今天又出现了数据库非正常关闭,真是头疼,看了下日志(终端输入:tail -f /var/log/mysqld.log),时间还在在2:30之前,不知道什么异常导致,看来有时间还是要彻底查查原因.

170703  0:41:54  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 0 22991466
170703  0:41:54  InnoDB: Started; log sequence number 0 22991466
170703  0:41:54 [Note] Event Scheduler: Loaded 0 events
170703  0:41:54 [Note] /usr/libexec/mysqld: ready for connections.

在彻底查到原因之前先打个速效针吧,找了一段bash shell脚本,判断mysql服务的状态,如果没有运行,则重启mysql.

脚本放哪无所谓,能找到就行,用”vim /etc/checkmysql.sh”创建个新文件,名为checkmysql.sh,放在了etc目录下.

#!/bin/bash
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]
then
echo "Time: `date` :MySQL is over .">> /var/log/mysql_messages
service mysqld start
else
echo "MySQL server is running."
fi

输入”:wq”保存并退出文件,测试一下文件效果,使用”./checkmysql.sh”或绝对路径”/etc/checkmysql.sh”,可以当前Mysql状态,如已停止,那么尝试启动它.如果脚本文件权限不对,改它权限为655,命令是”chmod -R 655 checkmysql.sh”.

接下来我们需要定时的执行这个脚本,让它帮助我们监测mysql状态.还是用到了crontab,之前的文章里有比较详细的用法,这里简单说明,我要做的是让脚本3分钟执行一次,那么打开crontab编辑(命令:vim /etc/crontab):

井号注释掉之前的每天2:30重启任务,添加下面这样

*/3 * * * * root /etc/checkmysql.sh

“*/3″代表每间隔三分钟执行一次,如果你要五分钟执行一次,那就是”*/5″喽.

保存后重启crontab即可(命令:service crond restart),如果你要测试效果,可以service mysqld stop,几分钟后看mysql是否自启.

原创文章,转账请注明来自 http://1vr.cn,By XK.

CentOS下用crontab设置自动重启MySQL计划(2)》有2个想法

  1. XK说:

    现在分析来看,是服务器配置不高,也没有额外设置虚拟内存.可用内存不满足mysql正常运行了.

发表回复

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