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

    文章

    3591

    浏览量

    63374
  • 资源管理
    +关注

    关注

    0

    文章

    20

    浏览量

    7840
  • 微软Azure
    +关注

    关注

    0

    文章

    9

    浏览量

    4467

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

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

收藏 人收藏

    评论

    相关推荐

    微软将为Win 10/11系统的记事本加入拼写检查与自动纠正功能

    此外,仅少数参与Windowsinsider测试计划的用户有机会体验到此版本应用。新的记事本可使出现在文本中的拼写错误字符突出显示并给出相应修正意见,同时,使用者亦可启用自动校正功能以避免错别字出现。
    的头像 发表于 03-21 10:02 129次阅读

    通过Modbus读写数据库中的数据

    本文是将数据库数据转为Modbus服务端/从站,实现数据库内的数据也可以走Modbus协议通过网口或串口读写的案例,下图是通过智能网关的参数软件(在附件中)配置的参数: 上图中的配置
    发表于 03-14 13:44

    SQL对象名无效的解决方法

    使用的对象名称,确保其有效性。本文将详细介绍SQL对象名无效的解决方法。 1. 检查对象名称的正确性 首先,需要检查使用的对象名称是否正确。常见的错误包括拼写错误、大小写错误、使用了无效字符等。请确保对象名称与
    的头像 发表于 12-29 14:45 907次阅读

    轻量级数据库有哪些类型

    轻量级数据库是指具有小巧、灵活、高效的特点,适用于小规模项目和嵌入式设备的数据库管理系统。下面是对轻量级数据库类型的详细介绍,包括关系型数据库、非关系型
    的头像 发表于 12-20 11:29 602次阅读

    数据库数据恢复—未开启binlog的Mysql数据库数据恢复案例

    。 mysql数据库故障: 工作人员使用Delete命令删除数据时未添加where子句进行筛选,导致全表数据被删除,删除后未对该表进
    的头像 发表于 12-08 14:18 385次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—未开启binlog的Mysql<b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复案例

    python写错了怎么更改

    你找到错误的来源。 2.检查代码:仔细检查可能存在错误代码部分。查看可能导致问题的语法错误、语义错误
    的头像 发表于 11-29 17:01 801次阅读

    invalid synrax是什么错误

    “invalid synrax” 是英语中的拼写错误,正确的拼法是 “invalid syntax”。语法错误是指程序代码中出现了不符合编程语言规则的语法结构,导致编译器无法理解和编译代码
    的头像 发表于 11-28 15:59 2857次阅读

    脚本错误scripterror怎么解决

    分析和排查。以下是一些常见的解决脚本错误的方法: 检查语法错误: 仔细检查脚本中的代码,看是否有拼写错误、缺少分号、括号不匹配等语法错误
    的头像 发表于 11-26 14:46 3071次阅读

    数据库数据恢复—MySQL数据库表误删除记录的数据恢复案例

    binlog。 数据库故障&分析: 工作人员在执行Delete命令删除数据时未添加where子句进行筛选,导致全表数据被删除,删除后
    的头像 发表于 11-09 15:16 671次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—MySQL<b class='flag-5'>数据库</b>表误删除记录的<b class='flag-5'>数据</b>恢复案例

    TinyDB :一个纯Python编写的轻量级数据库

    TinyDB 是一个纯 Python 编写的轻量级数据库,一共只有1800行代码,没有外部依赖项。 TinyDB的目标是降低小型 Python 应用程序使用数据库的难度,对于一些简单程序而言与其
    的头像 发表于 10-21 10:22 401次阅读

    关于PLC设备对接ORACLE数据库上传查询数据

    ;在断网、服务器维护上报数据有异常时,网关主动将数据缓存,待故障解除后自动重新上报到数据库;网关也支持多服务器冗余、异常未提交数据本地保存等
    发表于 10-12 15:34

    数据库数据恢复-数据库文件被删除/分区被格式化的SQL SERVER数据恢复方案

    数据库数据恢复-数据库文件被删除/分区被格式化的SQL SERVER数据恢复方案
    的头像 发表于 09-21 14:34 469次阅读

    轻量级数据库有哪些

    轻量级数据库有哪些 随着互联网和物联网等新一代信息技术的广泛应用,数据库系统也变得越来越重要。人们对于数据库数据库的可靠性、安全性和性能等要求也越来越高。与传统的关系型
    的头像 发表于 08-28 16:41 4307次阅读

    微软发布 Azure Linux 正式版

    服务(AKS)的开源容器主机操作系统,它针对 Azure 进行了优化,旨在使开发人员更容易使用微软的工具来部署和管理容器工作负载。Azure
    发表于 05-28 08:34

    常见的生产故障有哪些

      网络故障如何处理 服务器故障如何处理? 数据库故障如何处理 软件错误如何处理 安全漏洞如何处理 存储
    的头像 发表于 05-23 15:05 427次阅读