五重备份无一有效,还有哪些 rm -rf 和GitLab类似的忧伤?

DBA的悲伤,不是没有做备份,就是没有做有效的备份。日光之下,并无鲜事。

都说一个没有删过数据库的DBA,职业生涯是不完整的,不过当你删过之后,你的DBA生涯可能就完()了。

今天我们要讲一个做了五重备份但无一有效备份最终导致数据库恢复失败全面崩溃的故事。

今日,据GitLab.com官方网站发布声明称由于其产品数据库问题导致的网站无法正常访问。GitLab网站的主要功能如下:

GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。 它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

而针对此事件某国外媒体报道如下:

On Tuesday evening, Pacific Time, the startup issued a sobering series of tweets we've listed below. Behind the scenes, a tired sysadmin, working late at night in the Netherlands, had accidentally deleted a directory on the wrong server during a frustrating database replication process: he wiped a folder containing 300GB of live production data that was due to be replicated.

太平洋时间星期二晚上,该创业公司发布了一系列令人振奋的tweets, 幕后,一个疲惫的sysadmin,在荷兰深夜工作,在数据库复制过程中意外地删除了一个错误的服务器上的目录:他删除了一个包含300GB的实时生产数据的文件夹。

等到清醒过来紧急按下ctrl + c,只有4.5GB保留下来。然后恢复备份失败,网站已经宕了10个小时,现在还没恢复。其尝试过程如下:

300G的数据库被删成4.5G,这哥们也真是(过年喝)醉了。然而灾难却没有终止。

根据网上的信息,GitLab使用的应该是MySQL数据库,这也是300G的数据库还能够在中断删除后,剩余一部分的原因所在。现在恢复工作仍然在紧张的进行之中,他们在Twitter上正在同步信息,看起来没有到最后,就不会放弃最后的尝试,最新的信息显示,78%的数据库拷贝已经恢复出来,丢失的数据可能在6小时左右:

我的读者们可能会记得,我曾在《DBA手记4:数据安全警示录》中说过这样一句话,如果有什么事情能够让一个DBA深夜惊醒,那就是突然想起来没有做备份。果然,最需要备份的时候还真没有,据报道,Gitlab 当前所有的数据备份都是无效的。

由于没有有效的备份,目前尝试了所有5个恢复工具都没有完成恢复。在丢失数据并恢复失败后,服务器彻底崩溃。

我想每一个DBA都熟知这一条生存守则:rm是危险的。我们也多次苦口婆心地提醒,不过豪情万丈的DBA将士们并不在意。有无数的DBA们在一个草率的rm命令前栽倒。

关于数据安全的案例竟然屡见不鲜,比如1月份:炉石传说的数据回档 ,也不要以为rm不常发生,我再引用一下以前发布过的(引用自《那个删除整个网站的小伙应该知道rm是危险的》),在DBA的世界里真实发生过的一系列rm操作:

误删除Oracle软件 硬件维护人员删除归档日志的时候,把节点2的整个ORACLE_HOME都删除了。在删除的时候没有注意到目录改变了,还键盘做了一个向上的动作,刚好就是刚刚使用的 rm -rf *,然后一个下意识的动作回车就这么按下去了。 空格导致的误删除 我最难忘的:root用户在根目录下rm -rf abc *,abc和*之间有个空格,结果把OS删除了。已经成为佳话。什么事情都可能发生的。从此,整个人好像变了一样,做什么事情,都三思而后行了。 空格导致的误删除 偶的教训不是很深刻,不过意义很重大: 删除一些 trace 文件,然后就直接删除rm orcl*, 结果通过VPN到生产的,网络太慢,命令刚刚慢慢的显示出来,看都没看直接按回车,结果执行的命令却是rm orcl *,因为orcl和星号中间有个空格,所以把这个目录下面所有的内容全部删除了。出了一身冷汗,试想,如过是删除数据文件目录下的内容,那立马死翘翘了到现在为止,每次都要等命令完全显示出来,从头到尾看一遍再执行。不过大多数错误都是在很繁忙或者很疲劳的情况下发生的,呵呵,看来DBA应该多休息才是。 误删除数据文件 當時,那幾天都是很疲勞的。在開發環境作數據文件分佈調整時,先cp完某個表空間所有文件到其他地方,然後作*匹配rm了此表空間在此目錄的數據文件。但是rename時發現居然有一數據文件沒cp過來,忘了說了,此表空間是system表空間。沒辦法,開發人員明天還要使用這個環境。幸虧之前有一備份,不過當時磁盤空間不是很充裕,足足折騰了一夜才搞定!想起來都後怕哦,幸虧不是正式環境了!再以後,就很少用cp,rm了,特別是rm *,一般是此類操作用mv來完成。需要rm的東西,一般mv到一臨時目錄了,再rm了!呵呵,可能都有點謹慎過頭了哦。 脚本中误删除文件 自己写了个rman备份以及备份成功后rm旧log的shell脚本,log的目录赋值給变量,结果执行時目录赋值沒成功,该变量指向了另一個目录,结果下面的东东全没了,系统立即报错(把用户的home目录删了)。幸好当时头脑还很清醒,也没误删什么重要的数据,很快就搞定了。以后脚本中要rm某个目录的东东再也不敢用变量表示了,直接hardcode进去算了,这样也放心。另外出问题后一定要冷静,定位出问题原因后再动。  误删除目录中挂载 一次生产环境linux系统,做整个项目目录的移植,cp一份确认正常执行后直接rm原来的目录,没想到子目录中居然有mount到其他server的XX目录,结果可想而知...linux啊...... 误删除数据文件 刚进现在的公司不久时,做一个数据仓库项目,同事周日加了一天班把数据抽到一个大表空间里,大概 100G,第二天因为临时表空间增长很快,决定重建,这个 临时表空间的开头和那个大表空间名字是一样的,只是后面加了一个_temp,当时也是因为事情比较多,认为这是很简单的,结果输入名字就忘了输入_temp,把大表空间删除了,同事白加了一个星期天,虽然没影响什么进度(数据可以重抽),但这次教训是深刻的。

日光之下,并无鲜事。根据墨菲定律,可能发生的事情就一定会发生,这是一句说老了的话,然而每次在别人的事故面前我们都自以为是诸葛,到了自己都犯低级的错误。

今日的事件,由于损失严重,至今没有恢复。为了纪念这个事件,已经有人提议,将2月1日定为“世界备份日”。

我将以前写过的几篇文章再次分享出来,给大家一个警示:

DBA生存警示:防范频发的数据误删除操作 DBA生存警示:备份级误操作案例及防范建议 DBA生存警示:系统级误删除案例及防范建议 DBA生存警示:主备环境误操作案例及防范建议 DBA生存警示:误关闭生产库案例及防范建议 DBA生存警示:业务高峰误操作案例及建议

再次警示,愿大家都能提高数据安全意识。


原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-02-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

挖洞经验 | 如何参加众测项目发现美国国防部网站各类高危漏洞

美国国防部(DoD)于2016年11月21日首次与HackerOne合作,开展了“Hack the Pentagon”的漏洞众测项目,这将允许安全研究人员通过背...

3016
来自专栏FreeBuf

如何使用Airgeddon搭建基于软件的WIFI干扰器

Airgeddon是一款能够进行Wi-Fi干扰的多Bash网络审计工具,它可以允许你在未加入目标网络的情况下设置目标,并且断开目标网络中的所有设备。Airged...

35210
来自专栏大数据和云计算技术

大数据和云计算技术周报(第50期):NoSQL特辑

本期有 Redis、分布式、HBase、impala与hive、protobuf、Phoenix。 希望大家会喜欢!欢迎喜欢的同学打赏、转发支持社区!

933
来自专栏数据和云

【Windows最近肿么了】32TB的Win10源码遭泄露?

黑客泄露微软 Win 10 大量源代码,数据超过 32 TB 据 TheRegister 报道,已经有多达 32TB 的微软 Windows 操作系统的内部核心...

3418
来自专栏Seebug漏洞平台

【BlackHat 2017 议题剖析】连接的力量:GitHub 企业版漏洞攻击链构造之旅

作者:Orange (orange@chroot.org ) 知道创宇404实验室 独家授权翻译 原文地址:http://blog.orange.tw/201...

40916
来自专栏高性能服务器开发

(八)高性能服务器架构设计总结4——以flamigo服务器代码为例

二、架构篇 一个项目的服务器端往往由很多服务组成,就算单个服务在性能上做到极致,支持的并发数量也是有限的,举个简单的例子,假如一个聊天服务器,每个用户的信息是1...

5104
来自专栏FreeBuf

如何通过WIFI渗透企业内网?

介绍 黑盒渗透测试意味着白帽子对目标网络一无所知。模拟黑客攻击网络,并获取敏感信息。进一步,探索内网,识别内网中的漏洞,通过漏洞访问网络里的重要资源。 目的 在...

3378
来自专栏FreeBuf

Python渗透工具的架构探讨

本文原创作者:VillanCh,本文属FreeBuf原创奖励计划,未经许可禁止转载 在最近忙活的一些事情中,体会到:如果你写的不是一个脚本,那么作为一个有命令行...

2245
来自专栏程序人生 阅读快乐

Linux就该这么学

本书源自日均阅读量近万次火爆的线上同名课程,口碑与影响力俱佳,旨在打造简单易学且实用性强的轻量级Linux入门教程。

1063
来自专栏施炯的IoT开发专栏

Application Architecture Guide 2.0 - CH 19 - Mobile Applications(4)

本文翻译"Porting"、"Power"、"Synchronization"、"User Interface"和"Performance Considerat...

1975

扫码关注云+社区

领取腾讯云代金券