与时间赛跑:微盟的数据恢复为什么需要这么长时间

作者| 茹炳晟

责编 | Carol

出品| CSDN云计算(ID:CSDNcloud)

微盟“删库跑路“事件已经过去好几天了,据悉,微盟的服务已经全部恢复,对于新用户,已经能够正常开始所有相关的业务活动了,但是对于老用户,数据依然没能全部恢复,根据其官网的信息,目前恢复了商家账户和权益数据,截止到2月28日晚上,大约会有七成的数据完成恢复。

 

作为B端用户以及广大吃瓜群众,都会有这样的好奇,现在的云计算,容器化部署,弹性扩缩容,数据备份技术等技术已经非常先进了,为什么整个恢复周期还会需要这么长时间?那么今天我就从技术的维度来聊聊我的理解。

 

当你觉得一件事很简单时

很可能是因为你不懂

正式聊技术前,我想先说说今年罗胖的跨年演讲《时间的朋友》,罗胖谈到“躬身入局”让我这个常年和IT技术打交道的”我辈中人“深有感触,很多时候当我们站在局外,会感觉很多事情都不复杂,但是当你投入其中之后,就会发现原来我们只是看到了冰山一角,很多事情要远远比你想的要复杂和困难。

 

举个很形象例子,人们通常喜欢采摘低垂的果实,因为就大脑的反馈来讲,低垂的果实是很容易采摘的,但是一个果实看起来低,它未必是真的低,很有可能是你离它太远了,当你走进一些,你会发现它比你最初看起来要高,当你再走进一些,你会发现根本高不可及。

 

这就像一座山,当你离它很远的时候,会觉得山不高,只有当你亲自走到山脚下,才会认识到自己更本不可能爬上去。我有一张在珠穆朗玛峰北坡登山大本营的照片,当时的海拔是5300米左右,我的身后就是传说中海拔8848的世界之巅珠穆朗玛峰,也许看起来觉得似乎不高啊,那是因为我离得还足够远。换句话说,当你觉得一件事情很简单的时候,往往不是真的简单,而很可能是因为你不懂

回到这次微盟事件,也是一样的道理,现代的大型互联网产品,无论是toC的还是toB的,站在用户的角度来看,使用都很简单,但是其背后的架构复杂性就是属于冰山下面的部分其复杂程度会远远超过你的想象,我就常说一句话“认知限制了你的想象力”。所以,我相信,此时此刻,微盟一定在冰山下面尽着自己最大的努力来推动数据早日恢复。

 

全上云、不上云和假上云

好了,接下来聊聊偏技术的话题。很显然,目前微盟的主要问题是在数据库的恢复上,由于官方并没有公布具体的技术细节,我在网上也只找到一张非常顶层的架构示意图,并没有能获得系统基础架构,尤其是数据库架构方面的详细信息,所以只能从个人经验的角度做一些可能的猜想,目的是想让你能够理解其中的技术复杂程度。

 

首先让我们了解一下数据库的运行环境,简化来讲主要有以下三种:

 

“不上云”:建立在自己的数据中心,完全自己管理硬件、软件和数据,这是云平台普及以前的主流实践。在这种模式下,所有相关的数据库高可用性,容量扩展,数据备份都要有自己非常专业的团队(DBA团队和运维团队)来管理和维护,对企业的技术要求是比较高的。

 

“全上云”:完全建立在云端环境之上。注意,这里的云可以是公有云,也可以是私有云。云厂商会提供全套的解决方案来支持高可用性,容量扩展和数据备份等特性。可以说,随着云计算的普及以及泛数据库类服务( DBaaS)的快速发展,越来越多的新兴企业会选择这个方案。

 

“假上云”:这种方案是最奇葩的,有点像用Louis Vuitton的包来装菜,但在行业内也不在少数,应该说这是一个过渡阶段的产物。这种方式就是把云方案当做虚拟机来使用。这种方式和上面的“不上云”很类似,完全没有用好云端的优势,只是把数据中心的机器移到了云端而已。云方案所能提供的容灾、扩容等功能都被阉割了。

 

对于上面三种方式,“不上云”和“假上云”对于数据的风险相比“全上云”会更大,运维人员在“不上云”和“假上云”的情况下更容易有机会去执行类似“rm -rf /*”和“fdisk”类型的极端操作,而“全上云”,就比较难有机会从操作系统层面执行此类命令,数据库数据也就不会被rm -rf /给删掉。

如果删除操作不是发生在操作系统的数据文件层面(备份通常是以文件形式存在的),那么我们利用数据库自身的特性来恢复误删数据的效率会大大提高。

 

同样,面对数据的误操作问题(比如,错误地批量update表中数据的某个字段),“全上云”也比“不上云”和“假上云”有明显的优势。这个我是有切身经历的,以前有个项目使用自建数据库,由于某个DBA的误操作,在生产环境的数据库上执行了一条没有加where条件的update语句,直接造成竞拍商品的出价记录字段全部丢失,而后就是艰难的全量回滚和binlog重放,最终耗时4个多小时才恢复。后来同样的误操作发生在了云端数据库,回滚恢复的时间只花了几分钟。

 

从之前腾讯云对外的回应中,我们可以大概看到微盟被删的数据不在腾讯云上,再结合目前数据恢复的速度来看,我们几乎可以判定很大概率微盟没有采用“全上云”的架构,或者是只有部分数据在云端,而且很可能发生了比较极端的“rm -rf /*”和“fdisk”情况。

那么在这种情况下,所有的主从库文件,全量备份文件,增量备份文件以及binlog都一起丢失了。这里的技术挑战主要在于传统IT厂商如何进行磁盘恢复,已经不是任何一个云厂商的技能点所在。

 

要在这种情况下恢复全部数据,可想而知技术难度是很大的。根据我的粗略理解,至少要跨过下面这些技术的槛。

  • 获取全量备份,如果存在异地的冷备或者灾备,那是比较理想的情况,但是由于全量备份通常非常庞大,所以需要较长的时间完成文件的传输和校验。如果没有异地的全量备份可供使用,那么就必须采取更耗时,而且不能保证一定100%全量成功的磁盘恢复手段。为什么说磁盘恢复会更加耗时,我一会儿来解释。这里还有一个问题就是全量备份可能太“旧”了,这也给后面的恢复带来了更多的时间成本。

  • 获取增量备份,很多时候增量备份没有来得及做异地容灾备份,所以很大概率要从磁盘恢复,这又是大量的时间消耗,而且同样不能保证100%完全恢复。

  • 获取binlog,binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE等)以及表数据修改(INSERT、UPDATE、DELETT等)的二进制日志文件,通常以索引文件(后缀为.index)和日志文件(后缀为.00000*)的形式存在磁盘上,通常为了保证binlog记录数据变更的准确性,一般都是采用row格式的binlog,因此文件尺寸也不小,而且文件个数也很多。

有了上面这些作为基本的输入,才能开始数据库层面的数据导入和恢复工作,这个过程也需要花费大量的时间,而且这是基于上述文件都可以100%得到为前提的,如果上述备份文件中出现数据问题,那由此带来的额外时间成本将会变得更大。

 

磁盘文件的恢复

最后来说说磁盘文件的恢复。当我们对磁盘等存储介质上的文件进行删除操作,甚至是格式化操作(低级格式化除外)时,磁盘上的数据并没有真正从磁盘上消失,而只是在文件分配表中标注了一下而已,位于数据区的数据本身并没有被立即抹掉。只要文件的数据区没有被后面写入的信息覆盖,那么这些被删除的文件就是可以恢复的,这就是磁盘文件在删除后可以恢复的理论基础。

 

但是数据库的数据文件和备份文件往往很大,那么只要有个别数据区出现了重写,那么恢复出来的文件就是不完整的,这个时候就需要人为介入来进行修正,这个工作量以及技术难度就会很大,有时还会需要借助专用的仪器设备。在更复杂的情况下,还会采用数据雕刻技术(File Carving),数据雕刻技术是数字取证研究中频繁使用的一种文件恢复技术,它从表面上无差别的二进制数据集即原始磁盘映象中提取文件,而不利用磁盘的文件系统类型。

 

除此之外,像微盟如此庞大的系统,各个垂直事业部可能都有各自的业务数据库,这些数据库甚至可能采用了不同的方案,这种架构上的异构性也会给恢复过程带来极大的挑战。另外,即使部分数据恢复完成之后,也不能立即上线,而要等其他相关数据恢复,并且做好数据的的交叉校验,确保数据的万无一失,这些都需要大量的时间。

这些只是我能想到的一些情况,我站的也很远,也是从旁观者的维度在看问题,所以,我相信实际情况会比我所描述的更为复杂。我们还没法对最终的恢复结果作出推断,能够做的只有等待。

 

作者简介:

茹炳晟,业界知名实战派软件质量和研发工程效能专家,中国商业联合会互联网应用技术委员会智库专家,畅销书《测试工程师全栈技术进阶与实践》的作者,现任Dell EMC中国研发集团资深架构师,历任eBay中国研发中心测试基础架构技术负责人,HP软件中国研发中心资深架构师、性能测试专家,Alcatel-Lucent高级技术主管,Cisco中国研发中心资深工程师等职位,具有超过16年的软件研发经验和技术管理经验。

《原力计划【第二季】- 学习力挑战》

正式开始

即日起至 3月21日

千万流量支持原创作者

更有专属【勋章】等你来挑战

推荐阅读:多场景下的AI疫情防控“天网”:解读云边端联动下的全栈 AI 技术
AWS还是Firebase?在移动应用后端应该使用哪个?
Rust 编译模型之殇
4600万英镑的“比特币鱼竿”!爱尔兰毒贩遗失藏有巨额比特币密钥的渔具
漫话:手机很早就有飞行模式了,为什么最近几年坐飞机才不用关机?
CVPR 2020 | 南大提伪监督目标定位方法,弱监督目标定位的最新SOTA
真香,朕在看了!点击“阅读原文”,参与报名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里开发者招聘节 | 面试题08:NAS(Network Attached Storage)协议NFS和SMB相关问题

为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次将陆续放出(面试题官方参考答案将在专辑结束后统一汇总分享,点此进入答题并围观他…

android studio n3710,英特尔奔腾N3710性能跑分和评测 | ZMMOO

英特尔奔腾N3710 是针对入门级笔记本电脑,它的频率为1.1- 2.56 GHz。由于采用三栅极晶体管的新型14纳米低功耗工艺(P1273),与其前代Bay Trail(例如奔腾 N3520)相比,能效得到了显着提升 。除了CPU内核之外,SoC还提供支持DirectX 11…

淘宝千万级并发架构的十四次演进

责编 | Carol来源 | 架构师技术联盟概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原…

linux 15秒 搭建VSFTPD文件服务器

文章目录1. 在线安装2. 创建用户3. 限制用户活动范围4. 添加用户管制5. 关闭匿名访问6. 编辑一个安全文件7. 重新启动vsftpd8. 客户端测试9. 本机测试10. 再次本机测试1. 在线安装 yum install vsftpd2. 创建用户 useradd ftpuser passwd ftpuser3. 限制用户活动范围 vim vs…

阿里开源!轻量级深度学习端侧推理引擎 MNN

AI科学家贾扬清如此评价道:“与 Tensorflow、Caffe2 等同时覆盖训练和推理的通用框架相比,MNN 更注重在推理时的加速和优化,解决在模型部署的阶段的效率问题,从而在移动端更高效地实现模型背后的业务。这和服务器端 TensorRT 等推…

冰雪复古鸿蒙碎片哪里出,冰雪复古:玩法攻略,如何高爆率搞回收!

原标题:冰雪复古:玩法攻略,如何高爆率搞回收!冰冻传说这个手游游戏刚内部测试的时候我就开始玩这个游戏了,第一方面这个游戏全部的装备都是靠打野怪获取的,这点很符合我的喜好,现在分享一些在个…

与时间赛跑:微盟的数据恢复为什么需要这么长时间?

作者| 茹炳晟 责编 | Carol 出品| CSDN云计算(ID:CSDNcloud) 微盟“删库跑路“事件已经过去好几天了,据悉,微盟的服务已经全部恢复,对于新用户,已经能够正常开始所有相关的业务活动了&#x…

X-Pack Spark归档POLARDB数据做分析

简介 POLARDB数据库是阿里云自研的下一代关系型云数据库,100%兼容MySQL,性能最高是MySQL的6倍,但是随着数据量不断增大,面临着单条SQL无法分析出结果的现状。X-Pack Spark为数据库提供分析引擎,旨在打造数据库闭环&am…

阿里云Kubernetes服务上使用Tekton完成应用发布初体验

Tekton 是一个功能强大且灵活的 Kubernetes 原生开源框架,用于创建持续集成和交付(CI/CD)系统。通过抽象底层实现细节,用户可以跨多云平台和本地系统进行构建、测试和部署。 本文是基于阿里云Kubernetes服务部署Tekton Pipeline&…

在线教育如何应对流量洪峰?阿里云专家:上云+云数据库是最佳路径

2月中下旬原本是全国各地春季学期开学的日子,但这场突如其来的疫情使得1.8亿中小学生只能纷纷在家开启“停课不停学”的学习生活,而线上教育也顺势成为了这一特殊时期首选的学习方式。 但突如其来的流量洪峰,却让许多线上教育平台力不从心。…

会 SQL 就能搞定 AI!蚂蚁金服重磅开源机器学习工具 SQLFlow

5 月 6 日,在QCon 全球软件开发大会(北京站)2019上,蚂蚁金服副 CTO 胡喜正式宣布开源机器学习工具 SQLFlow,他在演讲中表示:“未来三年,AI 能力会成为每一位技术人员的基本能力。我们希望通过开…

什么是 CD 管道?一文告诉你如何借助Kubernetes、Ansible和Jenkins创建CD管道!

作者 | Magalix翻译 | 火火酱,责编 | Carol来源 | 架构师技术联盟封图 | CSDN付费下载于IC photoCI/CD要解决的是什么问题?CI/CD(CI全名Continuous Integration,持续集成;CD全名Continuous Deployment,持续…

使用kettle导入数据到ADB for PostgreSQL

Kettle简介 Kettle(现也称为Pentaho Data Integration,简称PDI)是一款非常受欢迎的开源ETL工具软件,主要用于数据整合、转换和迁移。Kettle除了支持各种关系型数据库,HBase MongoDB这样的NoSQL数据源外,它还支持Excel、Access这类…

Android11vivox21刷机包,vivo x21旧版官方固件rom系统刷机包

这是vivo x21旧版官方固件rom系统刷机包,可以做备用,降级可用!!vivo x21已经提示更新了,如果你的手机更新之后系统没有之前好用的,可以选择降级用,直接完整版的固件rom包下载,解压出…

集结阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看

2019年5月8日-5月10日,由国内知名IT技术社区主办的数据库技术交流盛会——DTCC 2019将在北京新云南皇冠假日大酒店召开。数据风云,十年变迁,DTCC见证并铭记了国内数据库技术的关键成长历程。作为DTCC的老朋友和全球领先的云计算厂商&#xff…

行!看到抖音上Python程序员晒得工资条,我沉默了......

Python上抖音热搜了?作为短视频爱好者最近刷到了一个Python工程师的工资条然后我默默的打开看了然后我默默的关闭了我想这个工资算下来好像也不算高我就去其他渠道搜索了一下相关的Python工作岗位的工资好吧,都是比这个工资更高的(拉勾网3.2日…

为什么强烈禁止开发人员使用isSuccess作为变量名

在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的。 关于这个"本次请求是否成功"的字段的定义,其实是有很多种讲究和坑的&am…

现代IM系统中的消息系统架构 - 模型篇

前言 在架构篇中我们介绍了现代IM消息系统的架构,介绍了Timeline的抽象模型以及基于Timeline模型构建的一个支持『消息漫游』、『多端同步』和『消息检索』多种高级功能的消息系统的典型架构。架构篇中为了简化读者对Tablestore Timeline模型的理解,概要…

必看!Spark 进阶之路之「SparkSQL」入门概述 | 博文精选

作者 | Alice菌责编 | Carol来源 | CSDN 博客封图 | CSDN付费下载于视觉中国在之前的文章中,我们已经完成了对于Spark核心SparkCore的详细介绍。而今天想为为大家介绍的是SparkSQL的概述。什么是Spark SQL?Spark SQL是Spark用来处理结构化数据的一个模块…

Discord 公司如何使用 Cassandra 存储上亿条线上数据

Discord 是一款国外的类似 YY 的语音聊天软件。Discord 语音聊天软件及我们的 UGC 内容的增长速度比想象中要快得多。随着越来越多用户的加入,带来了更多聊天消息。2016 年 7 月,每天大约有 4 千万条消息;2016 年 12 月,每天超过亿…