我删库跑路啦

Tch
Tch
发布于 2025-07-13 / 8 阅读
0
1

1. 网站无法访问

也就几个小时没看,网站(也就是本站)竟然无法访问了,如下图这样只报了一个HTTP ERROR 500

多余的信息一个也没有,不管怎么刷新,控制台什么也没有输出。

2. 开始调查

2.1 网络

因为刚连过VPN,首先怀疑是网络问题。但是VPN断掉了还不起作用,换到手机的浏览器上也还是不行,而且手机用的是流量。错怪你了。

2.2 域名

域名没过期,域名解析没问题,ssl证书前几天才更新过。

2.3CDN

本站使用了阿里云的CDN,有理由怀疑CDN。但是并没有改过配置,而且CDN运行状态正常,就算把CDN停用了直接访问源站还是报500。也错怪你了。

2.4 服务器

服务器用的腾讯云的,实例状态正常,实例监控也正常。

在服务器上用docker起了两个服务,在腾讯云控制台可以看到两个容器的状态都是运行中

一个容器是本站,现在访问报500;另一个容器的服务可以正常访问。

通过查看nginx的日志,除了从某个时间开始一直报500就再没有别的异常。那么问题到底出在哪?

3. 解决问题

重启能解决大部分的问题,刚刚说过了有两个容器,谁有问题就重启谁,试试重启完会不会好,先恢复网站访问最重要。

两个红红的大字——失败,刺痛了我的双眼。为什么运行状态正常,一重启就失败了,为什么要这样对我?

去看了容器的日志,你猜它怎么说——Unknown database 'halo2'

这是我的docker-compose.yaml配置,就是写的halo2,而且一直是通过docker启动服务的,也不会去改数据库的配置。

services:
  halo:
    省略...
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo2
      省略...

其实看到Unknown database 'halo2'的错误信息,我心里已经明白怎么回事了,这个库让我删了。

就在几个小时前,我发现和本站有关的数据库有两个,一个是halo,一个是halo2

在几个月前我给本站换过一个新的库halo2halo就闲置了,也没有想着去删它。然后就在对此事有些许遗忘的几个月之后,我把halo2当做闲置的库,随手就给删了。

好在每天都有备份,原因找到就很好恢复了,备份真的真的真的很有必要(但是为啥在删除halo2之前没想起备份呢)。

4. 反思

经过几个小时的排查,最后发现竟然是一个很搞笑又很低级的原因。

因为是个人的项目,这次的损失就是网站几小时无法访问。也因为是个人项目,就缺乏足够的警惕心和敬畏心,这是绝对不可以的。

如果是公司项目,这将是一个很严重很严重的事故,丢工作都是小意思的,虽然在公司不会有这么大的权限。

有以下两点反思:

  1. 任何操作,尤其是敏感操作,一定要小心再小心,不管是工作还是个人。

  2. 主动备份,只要有备份就还有救。

本次事故没有给任何人造成损失,就罚我晚上少吃一些吧。

以上。


评论