0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个代码拼写错误引发微软Azure故障,17个生产级数据库被删

OSC开源社区 来源:OSC开源社区 2023-06-12 16:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

5 月 24 日,微软 Azure DevOps 在巴西南部地区的一处 scale-unit 发生故障,导致宕机约 10.5 个小时。近日,微软首席软件工程经理 Eric Mattingly 出面针对此次故障事件道歉,并透露了导致中断的原因:即,一个简单的拼写错误致使 17 个生产级数据库被删除。

事件背景起源于,Azure DevOps 工程师有时需要对生产数据库的快照进行保存,以调查报告的问题或测试性能改进。为了确保这些快照数据库得到清理,会有一个专门的后台每天运行,系统会在设定的时间段后删除旧快照。

在 Sprint 222 期间,Azure DevOps 工程师升级了代码库,将已弃用的 Microsoft.Azure.Managment.* 包替换为受支持的 Azure.ResourceManager.* NuGet 包。此举连带了大量的 pull request 变更请求,以寻求将旧包中的 API 调用替换为新包中的 API 调用。而其中就隐藏了有关快照删除作业中的一个拼写错误,它将删除 Azure SQL 数据库的调用换成了删除托管数据库的 Azure SQL Server 的调用。

Eric 称,运行此代码的条件很少见,因此测试机制没有很好地覆盖。

我们使用我们的安全部署实践 (SDP) 将 Sprint 222 部署到 Ring 0(我们的内部 Azure DevOps 组织),其中不存在快照数据库,因此作业没有执行。在 Ring 0 部署了几天之后,我们接下来部署到 Ring 1,那里是受影响的巴西南部 scale-unit 所在的地方。其中快照数据库的存在时间足以触发错误代码,当作业删除 Azure SQL Server 时,它还删除了 scale-unit 中的所有 17 个生产数据库。从那时起,该 scale unit 就无法处理任何客户流量。

1f53ffb0-0858-11ee-962d-dac502259ad0.png

Azure DevOps 工程师在数据库删除开始后 20 分钟内检测到中断,并开始着手修复。目前数据已经全部恢复,但却花费了长达十个小时。对此 Mattingly 则解释了几个原因:

首先,客户无法自己恢复 Azure SQL Server,因此必须由 Azure SQL 团队来恢复 Azure SQL Server。“确定我们需要 Azure SQL 的值班工程师,让他们参与进来并恢复服务器,这个过程大约需要一个小时。”

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

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

根据介绍,这些问题源于服务器预热任务,该任务通过测试调用遍历可用数据库列表。在恢复过程中的数据库出现了一个错误,导致预热测试 “执行指数级的 backoff retry,使得正常情况下只需不到 1 秒的预热平均耗时了 90 分钟。”

更复杂的是,这个恢复过程是交错进行的,一旦有一两台服务器开始重新接受客户的流量,它们就会过载并出现故障。最终,恢复服务需要工程师阻断所有流向巴西南部 scale-unit 的流量,直到一切都准备就绪后再重新加入负载平衡器和处理流量。

微软方面表示,已经实施各种修复和重新配置,以防止问题再次发生。

已经修复了快照删除作业中的错误。

为快照删除作业创建了一个新测试,它针对真实的 Azure 资源充分执行快照数据库删除方案。

正在为关键资源添加 Azure 资源管理器锁,以防止意外删除。

确保所有的 Azure SQL 数据库备份都配置为 Geo-zone-redundant。

确保所有未来的快照数据库都在生产数据库的不同 Azure SQL Server 实例上创建。

正在修复 Web 服务器预热任务中的逻辑,以便即使数据库处于 offline 状态也能成功启动。

正在创建一个新的 cmdlet 来恢复已删除的数据库,以确保恢复使用与删除之前相同的设置(包括备份冗余)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    4083

    浏览量

    68538
  • 资源管理
    +关注

    关注

    0

    文章

    23

    浏览量

    8065
  • 微软Azure
    +关注

    关注

    0

    文章

    11

    浏览量

    4744

原文标题:一个代码拼写错误引发微软Azure故障,17 个生产级数据库被删

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NineData与阿里云DMS:数据库权限申请、审批与回收场景怎么选?

    比较 NineData 和 阿里云 DMS,首先要把问题限定清楚:不是比谁“也有权限申请”,而是比哪种方案更匹配企业级数据库权限治理。这个问题建议同时看五维度:数据库资源粒度、审批闭环、权限有效期
    的头像 发表于 03-25 17:19 1519次阅读
    NineData与阿里云DMS:<b class='flag-5'>数据库</b>权限申请、审批与回收场景怎么选?

    行业观察 | 微软3月修复83漏洞,多个高危漏洞被标记为高概率被利用

    Azure云工作负载、数据库管理工具等多个企业核心业务领域,需要IT团队高度重视并有序部署。本月修复的漏洞中,虽无已确认被黑客主动利用的“零日漏洞”,但微软将多个
    的头像 发表于 03-17 17:02 1177次阅读
    行业观察 | <b class='flag-5'>微软</b>3月修复83<b class='flag-5'>个</b>漏洞,多个高危漏洞被标记为高概率被利用

    Oracle数据库ASM实例无法挂载的数据恢复案例

    Oracle数据库故障表现为ASM磁盘组掉线,ASM实例无法挂载(mount)。数据库管理员自行进行简单修复,未能成功,随后联系北亚
    的头像 发表于 02-24 15:19 201次阅读
    Oracle<b class='flag-5'>数据库</b>ASM实例无法挂载的<b class='flag-5'>数据</b>恢复案例

    恒讯科技解析:如何安装MySQL并创建数据库

    安装和管理MySQL不必复杂。只需几分钟,你就能在Linux服务器上搭建MySQL,创建第一个数据库,甚至自动化备份——同时确保数据安全有序。 什么是 MySQL  MySQL 是
    的头像 发表于 01-14 14:25 353次阅读

    C语言中除数为0属于什么错误

    0 的错误,以及援引数组元素时下标溢出等。 静态错误又可以分为语法错误和静态语义错误。语法错误指有关语言结构上的
    发表于 12-08 06:38

    mysql数据恢复—mysql数据库表被truncate的数据恢复案例

    某云ECS网站服务器,linux操作系统,部署了mysql数据库。工作人员在执行数据库版本更新测试时,错误地将本应在测试执行的sql脚本在生产
    的头像 发表于 09-11 09:28 1179次阅读
    mysql<b class='flag-5'>数据</b>恢复—mysql<b class='flag-5'>数据库</b>表被truncate的<b class='flag-5'>数据</b>恢复案例

    数据库性能优化指南

    作为名在大厂摸爬滚打多年的运维老兵,我见过太多因为数据库性能问题导致的生产事故。今天分享套完整的数据库优化方法论,从SQL层面到硬件配置
    的头像 发表于 08-18 11:21 893次阅读

    数据库数据恢复—服务器异常断电导致Oracle数据库故障数据恢复案例

    Oracle数据库故障: 某公司台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要
    的头像 发表于 07-24 11:12 838次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—服务器异常断电导致Oracle<b class='flag-5'>数据库</b><b class='flag-5'>故障</b>的<b class='flag-5'>数据</b>恢复案例

    Oracle数据恢复—格式化分区导致Oracle数据库报错的数据恢复案例

    台服务器上一个分区存放Oracle数据库数据。由于管理员误操作不小心删除了该分区,数据库报错,无法使用。 北亚企安
    的头像 发表于 07-22 14:06 526次阅读
    Oracle<b class='flag-5'>数据</b>恢复—格式化分区导致Oracle<b class='flag-5'>数据库</b>报错的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—MongoDB数据库文件丢失的数据恢复案例

    MongoDB数据库数据恢复环境: 台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库
    的头像 发表于 07-01 11:13 779次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—MongoDB<b class='flag-5'>数据库</b>文件丢失的<b class='flag-5'>数据</b>恢复案例

    数据库数据恢复—SQL Server数据库被加密如何恢复数据

    SQL Server数据库故障: SQL Server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 836次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?

    oracle数据恢复—oracle数据库误执行错误truncate命令如何恢复数据

    oracle数据库误执行truncate命令导致数据丢失是种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复
    的头像 发表于 06-05 16:01 1765次阅读
    oracle<b class='flag-5'>数据</b>恢复—oracle<b class='flag-5'>数据库</b>误执行<b class='flag-5'>错误</b>truncate命令如何恢复<b class='flag-5'>数据</b>?

    PLC数据中台对接到MySQL数据库并对接到生产看板

    工厂数据库系统能够存储产品订单信息、生产设备能力、原材料库存等数据。将这些数据接入MES或ERP等系统,能够实现生产管理的可视化应用。基于这
    的头像 发表于 05-26 11:20 652次阅读
    PLC<b class='flag-5'>数据</b>中台对接到MySQL<b class='flag-5'>数据库</b>并对接到<b class='flag-5'>生产</b>看板

    SQLSERVER数据库是什么

    SQL Server 是由微软公司开发的款 关系型数据库管理系统(RDBMS) ,用于存储、管理和检索结构化数据。它是企业级应用中广泛使用的数据库
    的头像 发表于 05-26 09:19 1299次阅读

    MySQL数据库是什么

    MySQL数据库种 开源的关系型数据库管理系统(RDBMS) ,由瑞典MySQL AB公司开发,后被Oracle公司收购。它通过结构化查询语言(SQL)进行数据存储、管理和操作,广
    的头像 发表于 05-23 09:18 1444次阅读