惨痛的教训呐

上午写了一个高cpu占用的程序,直接把服务器卡死了,本来想等它自己恢复,结果一直恢复不了,就直接登陆服务商那重启了服务器,重启之后,登陆控制面板,结果发现docker和mysql都停了,服务器已经四百多天没重启过了,正常情况下mysql应该会自动重启成功的,结果一直重启失败,查看状态,天塌了

[root@VM-12-4-centos ~]# systemctl status mysql
Omysqld.service - LSB:start and stop MySQL
Loaded:loaded (/etc/rc.d/init.d/mysqld;bad;vendor preset
:disabled)
Active: failed (Result: exit-code) since Sat 2025-07-0510:
35:14 CST;1min 50s ago
Docs:man:systemd-sysv-generator(8)
Process:14133 ExecStart=/etc/rc.d/init.d/mysqld start (code
=exited, status=1/FAILURE)
Jul 0510:35:11 VM-12-4-centos systemd[1]:Starting LSB:st..Jul 0510:35:14 VM-12-4-centos mysqld[14133]:Starting MysQ...Jul 0510:35:14 VM-12-4-centos systemd[1]:mysqld.service:...Jul 0510:35:14 VM-12-4-centos systemd[1]:Failed to start ...Jul 0510:35:14 VM-12-4-centos systemd[1]:Unit mysqld.serv...Jul 0510:35:14 VM-12-4-centos systemd[1]:mysqld. service f...Hint:Some lines were ellipsized, use -l to show in full.
[root@VM-12-4-centos ~]#

常用的修复操作都试了,MySQL 数据目录权限,配置文件,端口冲突,磁盘内存,这些都没啥问题,正一筹莫展的时候,觉得可能是重启服务器的时候,mysql被异常关闭导致的,由于实在是太难找根因,就想着直接把mysql重装得了,重装之前,直接找到了/www/server/data,把这个数据目录压缩了一下,也幸亏是先压缩备份了,不然后面数据就真丢了。

然后通过面板卸载mysql提示有数据库不为空什么的,不能一键删除,于是直接使用rm -rf /www/server/mysql强制删除,删完重装之后,把面板数据库同步到新装的mysql内,启动docker程序测试,连是连上了,但是报错,登陆到数据库里面一看,里面只有表名,没有任何数据,这真的炸了,之后把表重新全部删除,想着用程序自动初始化塞数据,重启程序后,仍然是只有表名,数据塞不进去,到这里已经搞了很久很久了。

最后无奈,直接在面板把数据库全部删了,再卸载mysql重新安装,安装后面板没有任何数据库,想到我当时备份了data目录,就直接把data目录恢复覆盖新装的mysql date目录中,回到面板同步数据库后,终于数据算是保住了,就是面板显示不了密码,不过这些问题就不大了,重设之前的密码之后就恢复正常了。

差不多是从上午10点折腾到下午2点才把数据全部恢复完

:upside_down_face:看来测试高cup或者内存占用的程序一定要做好备份,或者尽量不要在生产环境测试吧,也得亏了备份了data目录,我平时都不怎么备份数据库的,也没开自动备份,上次备份还是去年12月份的数据,看来以后还是得开一个自动备份,也不用天天备份,一个月备份一次就行。

还是想说一句,各位佬友要记得及时做数据备份和持久化存储,不然就是又一次惨痛的教训。

5 Likes

数据有备份吗

之前没,重装mysql的时候,压缩了data目录,也算是把数据全部备份了

生产环境不自动备份,数据丢了,等着被炒?

幸好数据没有丢

1 Like

我自己的服务器,所以数据备份这块也没当回事

我还以为公司的服务器,CPU核数少,没必要测能跑就行 :roll_eyes: