可不可以写一个脚本,让网站每次宕机都重启MySQL?

Can we write a script to restart MySQL every time the website is down?

我正在使用托管在 AWS 上的 Linux 服务器,由于可用 RAM 较少,网站出现故障,我收到 "Error establishing connection to database" 错误。

每次发生这种情况我都必须重新启动MySQL。

我们可以自动化这个过程吗?

我用来重启LAMPP服务器的命令是:

sudo /opt/lampp/lampp restart

使用bash脚本监控mysql端口,如果关闭则重启

只是为了演示它是如何工作的

nc 命令检查端口 3306(mysql 端口)是否可联系 如果是那么 $?设置为零,因此这算作 "up" 否则 $?下来了。您可能希望使用不同的命令而不是 "nc",例如 echo "select 1;" | mysql 尝试 运行 什么都不做 mysql 命令

while [ 1 ]
  do sleep 1
  nc -z localhost 3306
  if [ $? == 0 ]; then echo "up"
  else echo "down"
  fi
done

您可能使用的实际版本可能如下所示

while [ 1 ]
  do sleep 10
  nc -vz localhost 3306
  if [ $? != 0 ]; then /opt/lampp/lampp restart
  fi
done

您可以让 window 打开(也可以使用 "screens" 命令)并且 运行 这个 24x7

如果您可以将时间间隔增加到 1 分钟,那么 运行 就可以像这样退出 cron

在 crontab 中(每分钟 运行)

* * * * * /path/to/script

脚本

#!/bin/bash
  nc -vz localhost 3306 > /dev/null 2>&1 
  if [ $? != 0 ]; then /opt/lampp/lampp restart
  fi

AWS EC2 提供 IOPs 突发,因此我使用大型 SWAP / Cache 配置我的 Linux 服务器。我知道这与 MySQL 喜欢将其全部存储在内存中的 InnoDB 概念背道而驰。此外,假设您使用的是 LAMP.

,您应该扩展 PHP 的内存使用量

http://charmingwebdesign.com/how-to-add-swap-partition-on-ec2-linux-instance/

http://charmingwebdesign.com/wordpress-support-plugin-woocommerce-excelling-ecommerce-what-is-ideal-php-memory-for-woocommerce/