酒后写代码,DBA删了生产数据库...

全栈开发者社区

共 2626字,需浏览 6分钟

 ·

2020-11-05 16:02

点击上方[全栈开发者社区]右上角[...][设为星标⭐]

近日,国外在线记分牌网站 KeepTheScore 的数据库管理员(DBA)几杯红酒下肚后,意外删除了他们的生产数据库,导致超过 30 万个记分牌和相关数据瞬间灰飞烟灭。
 
经历了 5 分钟的绝望,技术人员将网站置于维护模式,开始竭力恢复。


万幸该网站采用了云托管数据库,云提供商每天都会进行一次自动备份。到当天晚间 23:15 左右, 即发生灾难的 30 分钟之后,网站顺利恢复上线。

然而过去 7 个小时的数据却彻底蒸发,更确切地讲,是 2020 年 10 月 17 日下午 15:47 至 23:21(CET 时间)之间创建的任何记分牌或添加的任何分数统统丢失。

据悉,虽然本次事件的导火索是 DBA 醉酒误删,但 KeepTheScore 坦诚表示,删除数据库的函数是在完全严肃清晰的情况下编写而成的—— 功能是删除本地数据库,并从头创建所有必须表的功能。

▼删库代码
def database_model_create():"""Only works on localhost to prevent catastrophe"""database = config.DevelopmentConfig.DB_DATABASEuser = config.DevelopmentConfig.DB_USERNAMEpassword = config.DevelopmentConfig.DB_PASSWORDport = config.DevelopmentConfig.DB_PORTlocal_db = PostgreSQLDatabase(database=database, user=user, password=password, host='localhost', port=port)local_db.drop_tables([Game, Player, Round, Score, Order])local_db.create_tables([Game, Player, Round, Score, Order])print('Initialized the local database.')

然而该函数在在当天晚上意外连接到了生产数据库,结果引发了如上所示的惊魂半小时。

更具戏剧性的是,事件发生几天前,他们刚刚在 Twitter 上转发过有关“删库跑路”的段子。


谁料玩笑话竟一语成谶,经过本次事件,想必各技术人员们是不敢再随便玩这样的梗了。

本次失误的代价,是长达 7 个小时(15:47 - 23:21)的记分牌数据一去不返,KeepTheScore 已明白,拥有便于快速恢复的备份有多么重要。计算机系统太过复杂,没有快速响应的恢复机制,总有一天小毛病会再次引发连锁反应

但纵观近年来的删库事件,原因多种多样。

有些是误删,有些是介质故障,还有的是恶意删除,所导致的后果也不尽相同。

国外有思科离职 5 个月的程序员为了报复公司,删库跑路,一行 rm-rf/* 的代码删掉了思科 456 台虚拟机,导致思科损失 240 万美元,相当于人民币 1650 万

无独有偶,今年 2 月份的时候,国内微盟删库事件传遍全网,微盟研发中心一运维人员通过 VPN 登入服务器,几行代码恶意删库,直接让上市公司微盟的市值一天之内蒸发超 10 亿元,数百万用户受到直接影响。

千防万防家贼难防,面对删库事件,企业的数据备份与快速恢复建设非同儿戏,需在外部流程和内部建设两方面进行综合完善。

外部流程上,专家建议:
1. 完善故障演练流程,作为一项共同目标来协作完成,做到忙而不乱;
2. 完善故障响应流程,不同等级的问题系统由具体的负责人介入;
3. 运维操作需要报备;
4. 引入审计流程,实现独立的服务审计机制;
5. 业务异常预警,需要同步相关链路层。

就算外部流程尽善尽美,KeepTheScore 删库事件也无法追究,创始人不会解雇 DBA ,因为他们是同一个人。

因此,在事件发生后,如何快速恢复数据接管业务才是重中之重。

此次事件中,KeepTheScore 得幸于云供应商的定时备份,能够在半小时内恢复运行。将数据放在云端的保险系数相对较高,因为云端有足够多的公共资源作为支撑。

但定时备份的弊端也相伴而生——长达 7 个小时(15:47 - 23:21)的记分牌数据恢复无门。外部建设全线崩塌,再尖端的技术人才也没辙了。

这时候,如果云服务供应商可以提供快照和异地远程复制灾备服务,补救及时也不至于有这样的“乌龙”,反而还会向外界展示出企业的远见,完成一场完美的“危机公关”。

CDP,比云平台更细粒度的数据恢复。

行业流行的 CDP(Continuous Data Protection,持续数据保护)技术,可以使用快照迅速恢复或者回滚到某个历史时刻,然后再依照 CDP 技术快速恢复到最新数据状态。异地灾备服务也是比较成熟的技术,CDP 持续数据保护技术加上异地容灾架构强强联合,使得恢复能够可控、高效,具体恢复指南请看 信息化劫匪:Clop病毒勒索德国巨头2000万美金

CDP 技术将实时备份功能与快照技术相结合,在操作系统层监控,实时记录每一个 IO 变化,并在每个时间周期后自动进行快照,快照在线完成无备份窗口,不消耗主机资源。数据灾难发生后可根据数据变化日志快速定位到需要恢复的时间点,将数据一键恢复到异常点之前,把住数据安全最后一关

简而言之,备份恢复体系的建设是企业 IT 系统的基座,在危机当头,这一基础建设却是力挽狂澜于既倒的“最后一根稻草”。如果 KeepTheScore 能拥有 CDP 技术,那长达 7 个小时的记分牌数据便不至于丢失,所谓“删库跑路”的段子也只是茶余饭后的笑谈。

觉得本文对你有帮助?请分享给更多人

关注「全栈开发者社区」加星标,提升全栈技能


本公众号会不定期给大家发福利,包括送书、学习资源等,敬请期待吧!

如果感觉推送内容不错,不妨右下角点个在看转发朋友圈或收藏,感谢支持。


好文章,留言、点赞、在看和分享一条龙吧❤️

浏览 10
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报