Redian新闻
>
因一个代码拼写错误,17 个生产级数据库被误删、瘫痪 10 小时!

因一个代码拼写错误,17 个生产级数据库被误删、瘫痪 10 小时!

公众号新闻

转自:CSDN(ID:CSDNnews)

5 月 24 日,微软 Azure DevOps 在巴西南部(SBR)区域内一处 scale-unit(微软 Azure 部署架构中最小的容量单元)设施发生瘫痪,持续了 10 个小时。

6 月 2 日,微软首席软件工程经理 Eric Mattingly 为这次故障出面道歉,并透露了具体原因:一个简单的错误拼写,导致了整整 17 个生产级数据库被删除。 


隐藏”着一条拼写错误

Mattingly 解释道,Azure DevOps 工程师偶尔会对生产级数据库的快照进行保存,以查看报告上的问题或测试性能改进。为清理这些快照数据库,会有专门的后台每天运行,系统会在一段设定的时间后删除旧快照。

在最近的一波 sprint (敏捷开发术语中的迭代开发周期)中,Azure DevOps 工程师执行了一次代码升级,将已弃用的 Microsoft .Azure. Management.* 软件包换成受支持的 Azure.ResourceManager.* NuGet 软件包。

这个操作,连带着大量 pull request 变更请求,会将旧包中的 API 调用替换为新包中的 API 调用——而引发此次事件的拼写错误,就出现在 pull request 内,导致后台快照删除作业删掉了整个服务器。

Mattingly 表示:“这条 pull request 中的快照删除作业中,隐藏着一条拼写错误,它会删除 Azure SQL 数据库调用,并替换成删除托管数据库的 Azure SQL Server 调用。”

按理来说,Azure DevOps 有一系列测试可发现这类问题。但 Mattingly 称,该错误代码只在某些条件下运行,因此没有被现有的测试机制及时发现。 

Mattingly 表示,Azure DevOps 工程师使用安全部署实践(SDP)将 Sprint 222 部署到了 Ring 0(微软内部部署),那里不存在快照数据库,所以删除作业不会执行。但几天后,Azure DevOps 工程师又将其部署至 Ring 1(客户环境),也就是巴西南部的 scale-unit 设施。该环境中有一个比较旧的快照数据库,因此触发这个错误代码,于是它在删除 Azure SQL Server 的同时,还删掉了 scale-unit 设施中的 17 个生产级数据库。 

好在,据 Mattingly 介绍,此次事件并未引发数据丢失。为了防止问题再次发生,Mattingly 称微软已采取了各种修复和重置措施,并向所有受此中断影响的客户道歉。


为何花费了 10 个小时才全部恢复?

据微软官方介绍,这 17 个生产级数据库被删后 20 分钟不到,其工程师就检测到了中断并立即开始抢修,但依旧花费了 10 个小时才完全恢复。

Mattingly 表示,这其中有几个原因:

▶ 首先,客户无法自己恢复 Azure SQL Server,因此必须由 Azure 团队来处理这项工作,这个过程对许多人来说大约需要一个小时。

▶ 其次,数据库有不同的备份配置,一些数据库被配置为 Zone 冗余备份,另一些数据库被配置为最新的 Geo-zone 冗余备份。协调这种不匹配情况给恢复过程增添了不少时间。

▶ 最后,在数据库开始重新上线后,由于 Web 服务器出现了一系列复杂的问题,即使是数据位于这些数据库中的客户,也无法访问整个 scale-unit 设施。 

这些问题是服务器预热任务引起的,该任务会通过测试调用遍历可用的数据库列表。但恢复过程中的数据库抛出了一个错误,导致预热测试“执行指数级的 backoff 重试“,结果导致正常情况下只需不到 1 秒的预热过程,平均耗时了 90 分钟。

更复杂的是,整个恢复过程是交错进行的,一旦其中一两台服务器重新开始接收客户流量,就会因过载而再次停运。最终,工程师只能阻断所有流向巴西南部 scale-unit 的流量,确保一切准备就绪后,再重新加入负载均衡器并处理流量。 

目前,为防止此次事故再次发生,微软方面已实施各种修复和重新配置。Mattingly 说:“我们再次向所有受到这次故障影响的客户道歉。” 


网友:微软只是继续“贴膏药”

尽管如此,但此次微软的道歉并没有得到网友的谅解:

▶ 看来 Azure 变得越来越复杂了,而频繁变化加上日益增加的复杂性,最终只会走上一条路:更多的灾难以及可靠性降低。听起来微软对此事故的解决方案是继续“贴膏药”,但我认为在某个阶段,还是有必要对方法进行更根本的重新思考,避免最终分崩离析。”

甚至因为这个简单的 Bug 导致 10 小时宕机的结果,不少网友也开始讨论“云”的必要性:

▶ “关于云和 DevOps 最可怕的事情是,其实大多数文件都相当简洁,但其中总是有许多神奇的键/值,而实际上它们在代码审查中并没有任何意义。”

▶ 这就是我讨厌云的众多原因之一。十多年来,我一直没有与 IaaS 打交道的乐趣,我的本地内容非常完美,我还成功地抵御了过去十年中那些想要一次又一次将云带回来的人。

对此,你又有哪些看法呢? 

参考链接:

https://www.theregister.com/2023/06/03/microsoft_azure_outage_brazil/

https://status.dev.azure.com/_event/392143683/post-mortem

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604215

Linux技术交流群:3861509

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
在遗嘱库,一个字都不能写错被Morgan Stanley挂在官网吐槽的面试最大错误,留学生看完笑了…可以睡踏实了!墨尔本东区火车站近百年的错误,终于改正了!《可能》第80摩步旅指挥所被炸!大型军火库被炸:爆炸持续6个小时,比击毁俄军一个营坦克还重要轰20问世最多生产多少架?歼20最多生产500架,运20最多生产300架一个简单的代码拼写错误导致17个生产数据库被删!微软Azure DevOps宕机10小时始末法国约会app上的爱情绊脚石居然是…拼写错误?摩根大通,因误删4000多万条电子记录遭美国SEC罚款逾3100万误删聊天记录,下了个“数据恢复”App,交了199元后才发现……全国唯一写错字的火车站,几十年不改正,是写错字还是另有深意?图与代码不一致,Transformer论文被发现错误,网友:早该被指出1000次不写代码,一句提示生成整个代码库,GPT-Engineer项目火了国产替代重大进步!华为发布核心代码100%自主研发的数据库,国内属唯一GPT-Engineer一夜爆火!一个提示生成整个代码库,GitHub狂飙19k星陈向东:我创业中犯的所有错误,都是关于人的自述海外洋人华人做爱彼迎(Airbnb)民宿的酸甜苦辣和奇葩经历:简直上了一堂文化人类学大课澳洲各大机场瘫痪!护照处理系统故障,国际航班大范围延误,乘客排队长达4小时没做实验!3个月发6分+SCI,这13个生信数据库快速搞定生信SCI!趣图:当误删部分代码后,系统居然没崩数据库er的夏日盛宴 | 2023 可信数据库发展大会演讲议题征集限时开启!复现2.8分生信文章,TCGA数据库挖掘,0代码搞定6张图女教授,抓破了我的头院长被误诊误治后瘫痪,这病误诊率高达80%涨知识 | 写错频率最高的100个汉字,建议收藏!中国的“贝尔实验室”:我们的数据库从内核的第一行代码写起临床应用白蛋白的5个常见错误,建议收藏!指出遛狗男子错误,6岁男孩被打成脑震荡!警方出手了洛杉矶亚裔女LAX飞越南登机被拒,仅因一个小错误将浮云姐的散文做成了一个小视频,请大家欣赏为了你走遍草原 第六章三中一华某家招股书:笔误、引用错误、计算错误、统计错误……连代码都没写就敢要融资:被ChatGPT带火的向量数据库,带来了一大波造富神话不写代码,一句提示生成整个代码库,它在 GitHub 爆火“三伏天”要来了!5省局地可达40℃以上,多地限制灯光秀...这个生意早已火爆,厂家:一天生产50吨,当天卖完!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。