0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)代碼拼寫錯(cuò)誤引發(fā)微軟Azure故障,17個(gè)生產(chǎn)級(jí)數(shù)據(jù)庫被刪

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-06-12 16:12 ? 次閱讀

5 月 24 日,微軟 Azure DevOps 在巴西南部地區(qū)的一處 scale-unit 發(fā)生故障,導(dǎo)致宕機(jī)約 10.5 個(gè)小時(shí)。近日,微軟首席軟件工程經(jīng)理 Eric Mattingly 出面針對(duì)此次故障事件道歉,并透露了導(dǎo)致中斷的原因:即,一個(gè)簡單的拼寫錯(cuò)誤致使 17 個(gè)生產(chǎn)級(jí)數(shù)據(jù)庫被刪除。

事件背景起源于,Azure DevOps 工程師有時(shí)需要對(duì)生產(chǎn)數(shù)據(jù)庫的快照進(jìn)行保存,以調(diào)查報(bào)告的問題或測試性能改進(jìn)。為了確保這些快照數(shù)據(jù)庫得到清理,會(huì)有一個(gè)專門的后臺(tái)每天運(yùn)行,系統(tǒng)會(huì)在設(shè)定的時(shí)間段后刪除舊快照。

在 Sprint 222 期間,Azure DevOps 工程師升級(jí)了代碼庫,將已棄用的 Microsoft.Azure.Managment.* 包替換為受支持的 Azure.ResourceManager.* NuGet 包。此舉連帶了大量的 pull request 變更請(qǐng)求,以尋求將舊包中的 API 調(diào)用替換為新包中的 API 調(diào)用。而其中就隱藏了有關(guān)快照刪除作業(yè)中的一個(gè)拼寫錯(cuò)誤,它將刪除 Azure SQL 數(shù)據(jù)庫的調(diào)用換成了刪除托管數(shù)據(jù)庫的 Azure SQL Server 的調(diào)用。

Eric 稱,運(yùn)行此代碼的條件很少見,因此測試機(jī)制沒有很好地覆蓋。

我們使用我們的安全部署實(shí)踐 (SDP) 將 Sprint 222 部署到 Ring 0(我們的內(nèi)部 Azure DevOps 組織),其中不存在快照數(shù)據(jù)庫,因此作業(yè)沒有執(zhí)行。在 Ring 0 部署了幾天之后,我們接下來部署到 Ring 1,那里是受影響的巴西南部 scale-unit 所在的地方。其中快照數(shù)據(jù)庫的存在時(shí)間足以觸發(fā)錯(cuò)誤代碼,當(dāng)作業(yè)刪除 Azure SQL Server 時(shí),它還刪除了 scale-unit 中的所有 17 個(gè)生產(chǎn)數(shù)據(jù)庫。從那時(shí)起,該 scale unit 就無法處理任何客戶流量。

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

Azure DevOps 工程師在數(shù)據(jù)庫刪除開始后 20 分鐘內(nèi)檢測到中斷,并開始著手修復(fù)。目前數(shù)據(jù)已經(jīng)全部恢復(fù),但卻花費(fèi)了長達(dá)十個(gè)小時(shí)。對(duì)此 Mattingly 則解釋了幾個(gè)原因:

首先,客戶無法自己恢復(fù) Azure SQL Server,因此必須由 Azure SQL 團(tuán)隊(duì)來恢復(fù) Azure SQL Server?!按_定我們需要 Azure SQL 的值班工程師,讓他們參與進(jìn)來并恢復(fù)服務(wù)器,這個(gè)過程大約需要一個(gè)小時(shí)。”

其次,數(shù)據(jù)庫有不同的備份配置,一些被配置為 Zone 冗余備份,另一些則被配置為較新的 Geo-zone 冗余備份。協(xié)調(diào)這種不匹配情況給恢復(fù)過程增添了不少時(shí)間。

最后,在數(shù)據(jù)庫開始重新上線后,由于 Web 服務(wù)器出現(xiàn)了一系列復(fù)雜的問題,即使是數(shù)據(jù)位于這些數(shù)據(jù)庫中的客戶,也無法訪問整個(gè) scale-unit。

根據(jù)介紹,這些問題源于服務(wù)器預(yù)熱任務(wù),該任務(wù)通過測試調(diào)用遍歷可用數(shù)據(jù)庫列表。在恢復(fù)過程中的數(shù)據(jù)庫出現(xiàn)了一個(gè)錯(cuò)誤,導(dǎo)致預(yù)熱測試 “執(zhí)行指數(shù)級(jí)的 backoff retry,使得正常情況下只需不到 1 秒的預(yù)熱平均耗時(shí)了 90 分鐘?!?/p>

更復(fù)雜的是,這個(gè)恢復(fù)過程是交錯(cuò)進(jìn)行的,一旦有一兩臺(tái)服務(wù)器開始重新接受客戶的流量,它們就會(huì)過載并出現(xiàn)故障。最終,恢復(fù)服務(wù)需要工程師阻斷所有流向巴西南部 scale-unit 的流量,直到一切都準(zhǔn)備就緒后再重新加入負(fù)載平衡器和處理流量。

微軟方面表示,已經(jīng)實(shí)施各種修復(fù)和重新配置,以防止問題再次發(fā)生。

已經(jīng)修復(fù)了快照刪除作業(yè)中的錯(cuò)誤。

為快照刪除作業(yè)創(chuàng)建了一個(gè)新測試,它針對(duì)真實(shí)的 Azure 資源充分執(zhí)行快照數(shù)據(jù)庫刪除方案。

正在為關(guān)鍵資源添加 Azure 資源管理器鎖,以防止意外刪除。

確保所有的 Azure SQL 數(shù)據(jù)庫備份都配置為 Geo-zone-redundant。

確保所有未來的快照數(shù)據(jù)庫都在生產(chǎn)數(shù)據(jù)庫的不同 Azure SQL Server 實(shí)例上創(chuàng)建。

正在修復(fù) Web 服務(wù)器預(yù)熱任務(wù)中的邏輯,以便即使數(shù)據(jù)庫處于 offline 狀態(tài)也能成功啟動(dòng)。

正在創(chuàng)建一個(gè)新的 cmdlet 來恢復(fù)已刪除的數(shù)據(jù)庫,以確?;謴?fù)使用與刪除之前相同的設(shè)置(包括備份冗余)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3816

    瀏覽量

    64458
  • 資源管理
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    7875
  • 微軟Azure
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    4566

原文標(biāo)題:一個(gè)代碼拼寫錯(cuò)誤引發(fā)微軟Azure故障,17 個(gè)生產(chǎn)級(jí)數(shù)據(jù)庫被刪

文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    體驗(yàn)領(lǐng)禮啦!體驗(yàn)自建數(shù)據(jù)庫遷移到阿里云數(shù)據(jù)庫RDS,領(lǐng)取桌面置物架!

    本方案介紹如何將自建數(shù)據(jù)庫平滑遷移至云數(shù)據(jù)庫RDS,解決您隨著業(yè)務(wù)增長可能會(huì)面臨的數(shù)據(jù)庫運(yùn)維難題。通過使用RDS,您可以獲得穩(wěn)定、可靠和安全的企業(yè)級(jí)數(shù)據(jù)庫服務(wù),可以更加專注于發(fā)展核心業(yè)
    的頭像 發(fā)表于 01-03 17:12 ?63次閱讀
    體驗(yàn)領(lǐng)禮啦!體驗(yàn)自建<b class='flag-5'>數(shù)據(jù)庫</b>遷移到阿里云<b class='flag-5'>數(shù)據(jù)庫</b>RDS,領(lǐng)取桌面置物架!

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫表記錄丟失的數(shù)據(jù)恢復(fù)流程

    Mysql數(shù)據(jù)庫故障: Mysql數(shù)據(jù)庫表記錄丟失。 Mysql數(shù)據(jù)庫故障表現(xiàn): 1、Mysql
    的頭像 發(fā)表于 12-16 11:05 ?172次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—Mysql<b class='flag-5'>數(shù)據(jù)庫</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)流程

    數(shù)據(jù)庫事件觸發(fā)的設(shè)置和應(yīng)用

    數(shù)據(jù)庫無論對(duì)于生產(chǎn)管理還是很多的實(shí)際應(yīng)用都非常重要。小編這次聊數(shù)據(jù)庫事件觸發(fā)的應(yīng)用。示例使用了postgresql和Python。
    的頭像 發(fā)表于 12-13 15:14 ?147次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MYSQL數(shù)據(jù)庫ibdata1文件損壞的數(shù)據(jù)恢復(fù)案例

    mysql數(shù)據(jù)庫故障: mysql數(shù)據(jù)庫文件ibdata1、MYI、MYD損壞。 故障表現(xiàn):1、數(shù)據(jù)庫無法進(jìn)行查詢等操作;2、使用my
    的頭像 發(fā)表于 12-09 11:05 ?168次閱讀

    SQL錯(cuò)誤代碼及解決方案

    在SQL數(shù)據(jù)庫開發(fā)和管理中,常見的錯(cuò)誤代碼及其解決方案可以歸納如下: 、語法錯(cuò)誤(Syntax Errors) 錯(cuò)誤代碼 :無特定
    的頭像 發(fā)表于 11-19 10:21 ?1923次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—通過拼接數(shù)據(jù)庫碎片恢復(fù)SQLserver數(shù)據(jù)庫

    個(gè)運(yùn)行在存儲(chǔ)上的SQLServer數(shù)據(jù)庫,有1000多個(gè)文件,大小幾十TB。數(shù)據(jù)庫每10天生成個(gè)
    的頭像 發(fā)表于 10-31 13:21 ?247次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—通過拼接<b class='flag-5'>數(shù)據(jù)庫</b>碎片恢復(fù)SQLserver<b class='flag-5'>數(shù)據(jù)庫</b>

    Oracle數(shù)據(jù)恢復(fù)—異常斷電后Oracle數(shù)據(jù)庫報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

    Oracle數(shù)據(jù)庫故障: 機(jī)房異常斷電后,Oracle數(shù)據(jù)庫報(bào)錯(cuò):“system01.dbf需要更多的恢復(fù)來保持致性,
    的頭像 發(fā)表于 09-30 13:31 ?317次閱讀
    Oracle<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—異常斷電后Oracle<b class='flag-5'>數(shù)據(jù)庫</b>啟<b class='flag-5'>庫</b>報(bào)錯(cuò)的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    企業(yè)級(jí)數(shù)據(jù)庫的配置和管理要求匯總

    企業(yè)級(jí)數(shù)據(jù)庫配置需高性能硬件支撐,包括服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)及電源冗余,選用穩(wěn)定DBMS與操作系統(tǒng),注重索引與查詢優(yōu)化。管理上,強(qiáng)調(diào)數(shù)據(jù)安全,實(shí)施加密、訪問控制與審計(jì);確保高可用,配置容錯(cuò)機(jī)制與備份恢復(fù);監(jiān)控調(diào)優(yōu)性能,規(guī)劃容量與擴(kuò)展性;追求易用性,簡化日常管理與維護(hù),確保
    的頭像 發(fā)表于 09-27 10:50 ?207次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫出現(xiàn)823錯(cuò)誤數(shù)據(jù)恢復(fù)案例

    SQL Server數(shù)據(jù)庫故障: SQL Server附加數(shù)據(jù)庫出現(xiàn)錯(cuò)誤823,附加數(shù)據(jù)庫失敗。數(shù)據(jù)庫
    的頭像 發(fā)表于 09-20 11:46 ?363次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫</b>出現(xiàn)823<b class='flag-5'>錯(cuò)誤</b>的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫所在分區(qū)空間不足報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

    Server數(shù)據(jù)庫故障: 存放SQL Server數(shù)據(jù)庫的D盤分區(qū)容量不足,管理員在E盤中生成了個(gè).ndf的文件并且將
    的頭像 發(fā)表于 07-10 13:54 ?517次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—數(shù)據(jù)庫所在分區(qū)空間不足導(dǎo)致sqlserver故障數(shù)據(jù)恢復(fù)案例

    數(shù)據(jù)。服務(wù)器上部署sql server數(shù)據(jù)庫,數(shù)據(jù)庫存放在C盤。 數(shù)據(jù)庫故障: 工作人員發(fā)現(xiàn)服務(wù)器的C盤容量即將耗盡,于是將sql
    的頭像 發(fā)表于 05-22 13:16 ?473次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>數(shù)據(jù)庫</b>所在分區(qū)空間不足導(dǎo)致sqlserver<b class='flag-5'>故障</b>的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—raid5陣列上層Sql Server數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境: 5塊硬盤組建組RAID5陣列,劃分LUN供windows系統(tǒng)服務(wù)器使用。windows系統(tǒng)服務(wù)器內(nèi)運(yùn)行了Sql Server數(shù)據(jù)庫,存儲(chǔ)空間在操作系統(tǒng)層面劃分
    的頭像 發(fā)表于 05-08 11:43 ?522次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—raid5陣列上層Sql Server<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—ndf文件大小變?yōu)?KB的數(shù)據(jù)恢復(fù)案例

    存儲(chǔ)設(shè)備損壞導(dǎo)致存儲(chǔ)中SQL Server數(shù)據(jù)庫崩潰。對(duì)數(shù)據(jù)庫文件進(jìn)行恢復(fù)后,用戶發(fā)現(xiàn)有4個(gè)ndf文件的大小變?yōu)?KB。該SQL Server數(shù)據(jù)庫每10天生成
    的頭像 發(fā)表于 05-07 11:19 ?426次閱讀

    微軟將為Win 10/11系統(tǒng)的記事本加入拼寫檢查與自動(dòng)糾正功能

    此外,僅少數(shù)參與Windowsinsider測試計(jì)劃的用戶有機(jī)會(huì)體驗(yàn)到此版本應(yīng)用。新的記事本可使出現(xiàn)在文本中的拼寫錯(cuò)誤字符突出顯示并給出相應(yīng)修正意見,同時(shí),使用者亦可啟用自動(dòng)校正功能以避免錯(cuò)別字出現(xiàn)。
    的頭像 發(fā)表于 03-21 10:02 ?515次閱讀

    PostgreSQL數(shù)據(jù)庫連接報(bào)錯(cuò)故障分析

    數(shù)據(jù)庫的密碼設(shè)置錯(cuò)誤或未設(shè)置,在連接到本地服務(wù)后,重新設(shè)置即可。本次錯(cuò)誤就是大意將密碼錯(cuò)打了一個(gè)字母。
    的頭像 發(fā)表于 03-15 10:00 ?1552次閱讀
    PostgreSQL<b class='flag-5'>數(shù)據(jù)庫</b>連接報(bào)錯(cuò)<b class='flag-5'>故障</b>分析