宕机12小时的教训


就在几天前,我还在吃语雀(蚂蚁集团下的一个知识管理云软件)服务器宕机8小时的瓜,昨天一大早就收到了两条让我后背发凉的信息。


被服务器运营商背刺一刀

早上八点多的时候,我的邮件收到这样一条消息:

Dear Rolen,

Your xx instance has been suspended, access to the service was temporary disabled.

  • Suspended: VPS instance – xxx

This could be due to a billing or and administrative reason, to avoid confusion please contact us and discuss the problem facing with your account.

If your service has been suspended due to an unpaid invoice, please visit the client area and pay your due invoices to avoid service termination

随后的几十秒内我又收到另外一条消息,就是对方把我的服务器给erased了,我看到那个erased就觉得不对劲了,人突然紧张起来。

我马上去官网的服务器后台查看,发现搭载官网的那台服务器已经不见了,而我没有任何的镜像备份,所以没有机会进行服务器的恢复,所幸最重要的官网数据我前几天备份过。


移植网站数据+排查

来不及责怪服务商那边的骚操作,我随即开始往我的测试服务器上搬运网站,但是让我吃惊的是,当我把文件导入,导入数据库文件。。。在我一通流畅的操作下,打开网站的时候,发现还是最开始的界面,我的数据全不见了!

我突然神经紧绷起来,开始胡思乱想至最坏结果,就是网站要重新做,之前的努力全白费,但我也来不及想太多,只能寻找GPT的帮助,先把原因给找到先。

后来,我发现数据库在导入的时候,出现了备份文件大小与实际导入文件不一致的问题。然后我做了几个假设:

  1. 备份时候,备份文件出现了内部损坏
  2. 操作面板上的导入对文件大小进行了限制,导致无法完全导入
  3. 导入过程中出现了某种问题
  4. 权限问题
  5. 操作面板上的导入存在某种问题

针对每个可能存在的问题,我都针对性地进行了排查:

  1. 备份时候,备份文件出现了内部损坏 → 用cat 查看sql内部前几十行和后几十行的语句,扔给GPT分析
  2. 操作面板上的导入对文件大小进行了限制,导致无法完全导入 → 查看基本设置情况
  3. 导入过程中出现了某种问题 → 查看导入时候的日志文件
  4. 权限问题 → 查看基本权限
  5. 操作面板上的导入存在某种问题 → 直接进入服务器命令行下用source覆盖数据库

大概花了两个多小时,一通排查下来,除了第三个的日志文件报错,无法插入某些表格,但是部分表格又是可以插入的问题外,其它并没有发现什么异常。于是我从第三个问题进行排查,将第三个问题可能出现的原因进行了假设和排查:

  1. 备份文件有问题,之前用cat分析查看可能哪里疏漏了 → 既然是插入有问题,那么我就找跟INSERT有关的语句,后来也没发现什么问题
  2. 如果这个文件导入不行,那用其它之前的备份文件试试,后来发现还是同样的结果

后来,实在没招了,我直接告诉GPT,假设你是数据库方面的专家,你帮我分析分析,如何排查备份数据库文件导入不成功的潜在问题,结果GPT给了我跟之前很不一样的回答。有些是之前试过的,有些则太过于麻烦,我随即放弃了。


发现问题所在

就在我一筹莫展之时,我又来回折腾,用不同的备份文件进行来回测试,突然一条错误信息引起了我的注意,我随即意识到可能大概率是数据库的版本不兼容问题导致的,随即我翻看了下自己的备份文件版本和实际的导入数据库版本,发现果然有略微区别。

然后我马上又一通操作,临时调研其它服务器提供商(测试服务器还有其它服务运行,不敢乱来),然后购买服务器进行测试,结果发现在高级版本的数据库中顺利的导入成功了!

原来真的是版本的问题,唉,每次排查问题的时候,我都最容易疏忽版本兼容的问题,但每次结果大概率是兼容的问题,我又一次栽倒。

其实现在回想,我应该在导入的时候就应该注意版本的问题了,只是因为我之前用过这个服务器导出过数据库文件,一时麻痹大意了,导致我浪费了很多时间。

虽然最后还是经过一些坎坷,但最终还是顺利的恢复了网站,突然有种失而复得的喜悦感。


一些感悟和教训

其实,我在调研其它大型的服务器运营商和托管商的时候,发现服务和设置非常不合理。比如,

  1. 全球大型排名No.1的服务器托管商居然找不到联系的地方,contact us的页面是介绍自己企业文化的,却全没有售前的联系方式。登录付款后,中间出现手机号无法验证的问题,但是还是任何地方可以联系到对方团队,着实让我吃了一惊。
  2. 背刺我的这家服务商居然直接把我的服务商删除,事先没有任何提示,后来也没有任何道歉之意,针对我的疑问,居然直接漠视,我也吃了一惊
  3. 另外一家大型服务托管商价格不透明,官网包装很好,但在付款后发现其它一系列的简单服务都要收钱,售前跟客服沟通过,对方居然没有正视搪塞过去

我一直对国外有些服务蛮满意的,不过现在让我改变了一些看法。

我在想,如果是我作为提供服务的人,没有从客户的角度出发,给客户造成这样的困扰(找不到联系方式,漠视问题,没有反馈机制。。),我会感到极度羞耻。

所以,不禁让我思考,什么样的产品才算好的产品,什么样的公司才算好的公司。越大就越好吗?越有名就越好吗?

而我也从中获得了一些教训和启发:

  1. 贪小便宜吃大亏
  2. 条件受限未必是坏事
  3. 时刻有危机意识,时常进行危机演练
  4. 人在焦虑和高压下,工作效率很低
  5. 设计产品的时候,客户应该是第一位的
  6. 大方承认错误,哪怕错误可能会降低信任感,但掩饰一定会增加不信任感


  1. ben 的头像
    ben

    看得我后背发凉只冒冷汗啊。

    如果是suspend,那倒是正常;但如果是紧接着就erase,那就太恐怖和夸张了,简直就是滑天下之大稽,开international joke了。

    如果你没有备份,那数字资产就灰飞烟灭了;如果你有背景但不懂技术,我觉得就要掉几层皮掉好多钱了。

    索性有惊无险,我也从中获得了教训和启发。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注