问题现象
WordPress 网站出现“建立数据库连接时出错”的提示,通常是由于 MySQL 数据库服务意外停止导致的。
解决方案
可以通过编写一个监控脚本,定期检查 MySQL 服务状态,并在发现服务停止时自动重启它。以下是具体步骤:
1. 创建监控脚本
使用文本编辑器(如 vi)创建一个脚本文件:
vi /root/tools/mysql_check.sh
将以下脚本内容复制到文件中:
#!/bin/bash
# 检查 mysqld 进程是否存在
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]
then
# 记录日志并启动 MySQL 服务
echo "At time: `date` : MySQL is stopped, restarting." >> /home/wwwlogs/mysql_messages
service mysql start
else
# 可选:记录运行状态(生产环境建议注释掉以减少日志量)
# echo "MySQL server is running."
:
fi
保存并退出编辑器后,为脚本添加可执行权限:
chmod +x /root/tools/mysql_check.sh
2. 配置定时任务
使用 crontab -e 命令编辑当前用户的定时任务:
crontab -e
在打开的编辑器中添加以下一行,表示每 5 分钟执行一次监控脚本:
*/5 * * * * /bin/bash /root/tools/mysql_check.sh
保存并退出。定时任务将自动生效。
补充说明与建议
- 脚本路径:请确保
/root/tools/mysql_check.sh路径正确,且脚本具有可执行权限。 - 服务启动命令:示例中使用的是
service mysql start。根据你的系统和服务管理方式,也可能是systemctl start mysqld或/etc/init.d/mysql start,请根据实际情况调整。 - 日志文件:脚本会将 MySQL 停止和重启的时间记录到
/home/wwwlogs/mysql_messages文件中,便于后续排查。请确保该目录存在且有写入权限。 - 根本原因:此方法是一个“治标”的应急方案。MySQL 频繁自动关闭通常意味着存在更深层的问题,例如:内存不足、配置不当、遭受攻击或存在有问题的查询。建议在实施监控后,仍需检查 MySQL 错误日志(通常位于
/var/log/mysql/error.log或/var/log/mysqld.log)以定位并解决根本原因。 - 安全考虑:脚本存放在
/root/目录下,请妥善保管。如果服务器有多个用户,建议评估权限设置。
查看下日志文件看看具体什么原因导致卡死的,以前遇到过mysql日志文件把空间占满的情况。
就是没时间去搞,这段时间工作上都忙不过来了,没时间折腾网站
是不是内存不足?
具体原因我还在查,要去看日志,最近工作比较忙,就没有去从根本解决,暂时用了个脚本每隔五分钟监控mysql是否在运行,没有就启动。。。防止进程死掉后停止服务