用守护进程保护服务器上的 MySQL

问题背景

迁移到阿里云后,经常出现 MySQL 异常退出的问题。导致博客打不开。每次都是我发现之后,去服务器上重启 MySQL。

解决方案:用守护进程来监控 MySQL 的状态,如果发现它挂了,就自动重启。

编写守护进程代码

用 shell  脚本来写守护进程,比较方便。

代码如下(mysql-deamon.sh):

#!/bin/sh
while true;
do
  status=$(service mysqld status)
  if [[ "$status" != "MySQL running"* ]]; then
    echo $(date)
    echo "error, must restart"
    service mysqld start
  fi
  sleep 2
done

root 权限运行它就可以了。一旦检测到 MySQL 异常,就会执行 start 命令。

开机自启动

在 /etc/rc.local 中添加命令:

nohup bash /home/admin/deamons/mysql-deamon.sh > /home/admin/deamons/mysql-deamon.log &

搞定。