问题背景

迁移到阿里云后,经常出现 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 &

搞定。