腾讯云“抢救”微盟!766次在线会议、调拨100多台服务器、闹钟只定2H-冯金伟博客园

  受访者腾讯云技术人员

  记者胡巍巍

  出品 CSDN(ID:CSDNnews)

  766 次在线会议、临时调拨 100 多台服务器,“调兵”四地工程师,这是腾讯云“救援”微盟的付出。

  3 月 1 日,“微盟删库”事件收尾,并制定 1.5 亿元赔付计划。这,不啻于一场血的教训。

  此次灾难,对于有着 300 万注册用户、超 7 万的付费用户的上市公司微盟,后果非同小可。

  金钱上如此,时间上更是成本巨大。作为国内开发界的佼佼者,即便是腾讯云工程师出马,也花费整整 7 天 7 夜才搞定。

  那么这次删库到底有多复杂?腾讯云又是如何做完这场堪称技术界的“心脏手术”?

  CSDN 采访本次参与救援的腾讯云工程师,力图为读者复原“抢救”全过程,也希望能为开发者和企业,带来以此次事件为圆心的建设性建议。

  事发后,三方组队救援

  事故发生于 2 月 23 日周日晚上六点多,腾讯云基本和微盟同时发现,随后双方立马建立虚拟团队商量对策。

  腾讯云投入大约三十多位来自服务器技术、IDC 现场、售后专家、安全、存储、数据库、网络、基础 IaaS 研发运维等团队工程师,这些工程师分别来自北上广深四地。7 天 7 夜中,他们时刻在和时间赛跑。

  由于任务十万火急,大家睡觉只敢定 2 小时的闹钟,闹钟一响就接着战斗。腾讯云副总裁王慧星,也多次连夜进行技术指导,有次一直忙到凌晨 6 点多。

  而这次救援的总指挥——腾讯云运维中心和客户服务部门负责人徐勇州,在事件发生后,连续工作至少 36 个小时,才去稍微睡一会。

  微盟 CTO 黄骏伟,7*24 小时全天在线,为的就是及时和腾讯云团队,沟通修复过程中的技术问题。

  救援很火急,在分工上需要做更专业的规划,故此腾讯云、微盟以及数据恢复公司技佳瑞康,以最快的时间排查原因、并制定出一套完整的数据恢复方案。

  排查原因:微盟账号被执行高危操作

  在排查到底哪个环节出问题时,工程师们发现所有服务器,都处于服务无法响应的状态,是的,所有!

  然后,他们选其中一台服务器进行重启。重启后,发现系统所有数据都不见了,这说明数据库要么被入侵,要么就是被故意破坏。

  此时,腾讯云鼎实验室应急专家团队与微盟技术团队随即联合排查,很快就溯源到微盟部署在自建 MySQL 数据库上的核心业务数据,被微盟某运维人员用一种让程序员闻风丧胆的 Linux 系统下文件删除命令,整体进行了不可逆的删除。 

  后续在对外公告中,微盟也披露了该细节。确定原因后,腾讯云开始制定救援方案。

  方案分三个步骤:

  第一,控制受损面。不能让还有机会找回数据的服务器,再出现任何闪失。

  第二,把数据找回来。这个过程非常耗时,首先要去看到底还有多少数据在,找到数据后再把它恢复出来。恢复之后,还要给微盟验证数据是否完好、导入到数据库是否正常、以及加载到服务器上是否正常。

  第三,调试数据。数据验证结束后,微盟要根据数据,进行业务上线和联调演练。

  但是,恢复过程也并非一帆风顺,因为以往没有任何可参考的案例,只能摸着石头过河。

  数据恢复:行走在危险的边缘

  找出原因后,就是艰难的数据恢复过程。

  腾讯云先是把微盟服务器上的源数据镜像,拷贝一份出来,以便保护好源数据。

  微盟有接近数百T的数据,数据拷贝很花费时间,因此工程师们想了两种拷贝方式。

  第一种方式,是通过两台机器网络来对拷。他们计算了一下,正常情况下,大概得两天左右,优点是相对安全。

  第二种方式,是把硬盘挂载。把硬盘从服务器里拔出来,插到有更多盘的设备上,即用多台服务器并行的方式,把每个硬盘数据复制出来,虽然速度快、但是风险大,任何一步细微失误,数据可能就彻底没了。

  两难之下,在征得微盟同意后,团队做了一个大胆决定:越过镜像拷贝的步骤,同时不把微盟的数据盘,从原有服务器上拔下来。而是将另外一块系统盘,安装到原有服务器上,通过新系统盘加载 OS 和数据恢复软件,直接扫描提取数据盘中的“隐藏”数据。

  确定数据拷贝方式后,腾讯云立即组织团队,进行设备准备。

  由于是远程结合现场的方式来进行救援,难免要进行远程沟通。远程连线的工程师们,一直用腾讯会议来开会、现场指导、以及战况汇报。

腾讯云“抢救”微盟!766次在线会议、调拨100多台服务器、闹钟只定2H-冯金伟博客园

腾讯云数据中心硬件工程师,通过腾讯会议远程展示操作细节。

  在一些关键操作上,往往是几十双眼睛盯着会议直播画面,因为任何失误,都会带来不可逆的后果。

  7 天 7 夜里,他们随时起会,腾讯会议也默默记录着事态的进展,开远程会议的账号7*24 无中断。各业务团队通过腾讯会议,累积进行 766 次会议沟通。而这个会议号,也将作为这场战斗的番号永久保留。

  最担心的事情发生!

  好在前期进展很顺利,但进行到最后三块系统盘安装时,团队最担心的事情还是发生了——新系统盘安装后,数据硬盘出现掉线。

  庆幸的是,经过排查,挂载不上的原因,是由于新加的系统盘,触发了原来服务器中的硬件保护机制。

  确定故障后,工程师们迅速施策,并对全部数据进行读取。相比通常的数据镜像进程,节省 70% 以上的时间。

  这其中遇到的最大难题是,当肇事者把数百T数据删除后(含备份数据),工程师们再在这么短的时间内恢复起来,其数据量之大、难度之高,远超他们的经验。

  正式进入数据提取过程时,微盟的大文件未能提取出来,这意味想要获得完整数据,就得进行拼接。

  这好比整块拼图,被打散扔进大海,不仅得打捞出碎片,还得一片片重新拼图。

  并且,数据越大,拼接难度也越大。好在微盟的备份机制比较完整,数据类型也比较统一,所以很容易就能判断出哪块是开头,拿着开头去找剩下的块,就会比较容易。

  这其中,最大的一个文件,由 6 块原始碎片组成。找到开头后,腾讯云开始扫描其他相似的块。运气好的时候,打捞出来的数据,只有一块和原始碎片相似(那肯定就是它了),运气不好的时候 ,有二三十块都是相似的。

  所以,每进行一次拼接,都要把数据块从头到尾扫描一遍,目的就是验证一下是否匹配。

  扫描需要大量的计算力,为此腾讯云从上海机房临时调拨 100 多台服务器来支持扫描和运算。

  团队的心情,也好比坐过山车,每当一个难题被打败,大家就觉得数据恢复有望,立马就嗨起来。但是又出现问题时,心情又跌到谷底。

  好在最后恢复了 100% 的数据,所有辛苦和付出都值得。

  7 天 7 夜一百多个小时,这对于所有救援者的体力和意志力,都是巨大的考验。而经此一役,腾讯云工程师的能力再次得到验证,同时参与救援的工程师,也想借 CSDN 表达一些肺腑之言。

  养兵千日,用兵一时

  实际上,无论企业把业务部署在自有 IDC(Internet Data Center,互联网数据中心),还是放在外部托管 IDC 里,只要暴露在公网下,都会存在威胁。

  所以,建议企业从整体上梳理风险点,进行统筹和联动防御,并对外部、内部、大数据等不同场景,准备出相应的解决方案。

  如果企业已经上云,就要做好云主机的定期快照、云账号权限管控,并对重要数据实施分级管理,同时还要做好加密,从而建立全生命周期的数据安全防护。

  如果企业使用自建数据库,建议把通过 Binlog 或其他备份文件进行恢复的详细步骤制定成预案,并且定期演练,毕竟养兵千日,用兵一时。

  对于开发者,可以多关注云计算领域的最新进展,包括云安全、数据防护、加密、恶意攻击等知识,还可以多关注数据恢复的案例实践。

  上云的紧迫性和必要性

  此外,没上云的企业,也可以考虑上云。

  以腾讯云硬盘来说,其采用分布式块存储架构,每个数据块在可用区有个 3 副本,因此可以规避物理磁盘故障和宕机故障导致的数据损坏。

  另外,通过云硬盘的快照技术,可实现数据“秒级”恢复到一小时内的状态。

  更重要的是,腾讯云还有数据安全产品,能对安全事件实现全面监控、告警和事后审计等功能。

  而腾讯云堡垒机,其结合人工智能技术,可以为企业提供运维人员操作审计,还能对异常行为进行告警,进而防止内部数据泄密。

  坦白讲,过往很多企业,对于安全重视不足。而“微盟事件”依然在鸣叫的警钟,正是为我们敲响。

  人常说,吃一堑长一智,但最省心的,难道不是他人吃堑你长智吗?可以说,微盟的天价学费,不只是为自己而交,更是为全行业而交。

  最后,也为所有参与救援的工程师点赞,如果没有他们,微盟的损失可能会更大。7 天 7 夜不间断工作,他们像极了“救火队员”。

  每一次互联网事故的修复,网友能看到的,是产品又能重新使用,看不到的则是工程师们在背后的废寝忘食。

  这位工程师,可能是你的家人,可能是你的同事,也可能是你的朋友……我们身边从来不缺乏这样的“救火队员”,所以以后对程序员们少些调侃(秃头),多些爱护吧!