今天老王有一个基于 Word Press 搭建的网站,一直报错建立数据库连接时出错(Error Establishing a Database Connection),重启了 MySQL 后恢复正常,但是一会又出错了。下面分享下整个错误的解决过程。
起因是一位朋友私聊告诉老王某个网站打不开了,老王自己去访问了下,确实的数据库挂了,报错建立数据库连接时出错(Error Establishing a Database Connection),当时没多想,还以为 MySQL 出 bug 了,就直接 lnmp mysql restart
重启了 MySQL 服务器,然后看了下网站正常了就没再管。
后来过了个把小时,这个网站又宕机了,还是数据库报错,连上服务器重启数据库后又正常了。短时间内出现了 2 次同样的错误,那肯定是服务器或者网站哪里出问题了,于是老王排查了下:
- 先用 WordPress 自带的数据库修复功能修复了下,发现所有表都是正常的;
- 用 top 看了下 CPU 和内存,发现并没有占用过高的情况;
- 以为是数据库哪里损坏了,但是 WordPress 自带的数据库修复功能发现不了,于是想用备份的数据直接恢复网站,结果报错了:空间不够,这才发现居然是硬盘满了。
接下来就是按照《记录几个分析 Linux 磁盘空间与使用情况的常用命令》看了下什么东西占用了那么多的硬盘,后来发现是网站日志文件太大了,删除了,再重启 MySQL,全部恢复正常。
总结下这次故障处理经验:
- 监控服务器状态很重要:上次《记录一次腾讯云服务器 Nginx 502 Bad Gateway 的解决过程》就是服务器硬盘满了,所以找一个靠谱的工具实时监控服务器 CPU、硬盘、内存等信息还是非常重要的,之前用的 NodeQuery、EHEH 都倒闭了,看来要找找其他合适的工具;
- 备份数据最重要:这次在恢复数据时因为对脚本使用不熟悉,直接用 2021 年的数据替换了最新数据,恢复完网站后打开发现 2 年多的数据都没了,当时真的是心中一惊,冷汗都差点吓出来了(因为担心服务器硬盘满了之前的备份也没成功),不过后来去备份服务器上看了下,之前的备份还在,数据没有丢失。所以数据备份真的非常非常重要,做网站最重要的就是数据,一定要采取各种措施保证数据安全!