Error establishing a database connection
问题描述
今天吓我一跳,只是为服务器换一个ssl
证书,使用腾讯云托管一键部署后,然后突然发现自己的博客界面登不上了,显示数据库连接中断。
"Error establishing a database connection"
问题排查
主要是前一秒还能正常访问,这个时候我脑海中浮现了一些最坏的情况,服务器被黑了,数据库被删了………但是仔细思考之后如果前一秒还在访问后一秒就被黑会不会过于巧合,或许是其他操作导致的原因?当然我也不能完全排查被删库的情况,于是我火急火燎地登录了云服务器,先使用指令
cat ~/.bash_history
查看历史操作记录,如果是后台被黑,会不会留下删除数据库删除的指令?
通过操作时间记录我们发现没有可疑操作,但是仍然不能排除是相关操作记录被人为删除的可能。事后证明这里我还在自己吓自己
接下来我直接步入正题,检查数据库是否正常运行
systemctl status mysql # Debian/Ubuntu
systemctl status mariadb # CentOS/RHEL
果然显示这里我就松了一口气了,mysql
似乎还在,只是被关闭了。
于是接下来我尝试重启数据库,输入以下指令
sudo systemctl start mysql
接着我再访问我的博客,发现可以正常访问了!!!
吓死我了www
当然虽然恢复了博客,但是我们仍然需要弄清楚发生了上面,既然数据库只是被关闭了,并没有被删除,所以我们合理怀疑是某个程序内存占用过高,系统只能把其他进程杀死了。
所以我们输入指令:查看有无系统强制kill
的记录
dmesg | grep -i kill
果然我们在记录中,发现了相关结束数据库进程的指令。
所以我们合理猜测是当时签发ssl
证书的时候,后台突然新增了某些服务,导致内存超限,mysql被意外关闭。
我们不妨查看内存情况,发现我们交换部分只有1g
free -h
这里我们不妨开大一点,执行如下指令
# 新增加 4G swap 文件
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
下次自动更新ssl
证书的时候,不知道还会不会出现相同的情况,这里博客待续……….
2025.8.25