利用 Crontab 自动检测 MySQL 状态并重启的脚本
很多朋友从虚拟机转到 VPS 或独立主机基本上都会碰到内存不足,然后系统自动将 MySQL 进程关闭的情况。上次已经说过,一个是做系统优化,调整 php、MySQL 的配置文件。另外一个是加载 swap 分区文件。那么如果这些都做了,那么 MySQL 被 Kill 的情况就大大减少了,不过如果你还是不放心的话,可以再加一个无人值守的自动检测 MySQL 的脚本。MySQL 异常关闭,网页中一般会显示 500 Internal Service Error ,或者是 连接数据库错误。 一般手动重启 MySQL 即可。不过这是一个人工操作,最近学习了 Linux 的定时任务 crontab,正好做一个自动化的操作。主要功能就是定时检查 MySQL,如果 MySQL 关闭了,就重启该服务。
系统环境:我的服务器 VPS,系统安装的是 CentOS 7 , LNMP 安装包自动安装的 Nginx、PHP、MySQL。
1. 用 putty 连接 ssh 后进入 VPS
2. 下载检测脚本
1 | wget http://www.hostusvps.com/script/mysql_check.sh |
或者你自己做一个脚本然后上传到服务器上:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/bash pgrep -x mysqld &> /dev/null if [ $? -ne 0 ] then echo "At time: `date` :MySQL is stop .">> /home/wwwlogs/mysql_messages service mysql start #echo "At time: `date` :MySQL server is stop." else echo "MySQL server is running ." fi |
3. 加载计划任务
1 | crontab -e |
此时会进入 vi 模式,关于 vi 命令,大家自己查下吧,命令有点多。这里如果不会用的话,我就多说几句。
按 Insert 进入插入模式,然后就可以敲打命令了。打完命令后按 ESC ,然后键入 :wq 就可以保存退出。
键入命令:
1 | */3 * * * * /bin/bash /root/mysql_check.sh |
注意:这个mysql_check.sh的路径取决于你自己到底把这个检查文件放哪了。
另外再说一下吧,如果实在不会 vi 命令,那么 crontab 的路径是在 /var/spool/cron/ 里,自己在本地写完然后上传上去也可以。
附 crontab 两个常用命令:
重启:
service cron start 启动cron服务
service cron restart 重启cron服务
列出某个用户cron服务的详细内容:
crontab -l