一(yī)位操作(zuò)員(yuán)為(wèi)解決一(y↔™ī)個(gè)惡意攻擊的(de)問(wè>€n)題,在工(gōng)作(zuò)到(dào)深夜并極&••度疲勞的(de)狀态下(xià),誤删除了(≤↕le)主數(shù)據庫的(de)數(shù)據!在這(zhè)位操作(zuλ♠© ò)員(yuán)意識到(dào)問(wèn)題并立刻終止了(le)移除文(w β€↓én)件(jiàn)夾操作(zuò),但(dàn)是(shì)已經太遲了(le)——300<GB的(de)文(wén)件(jiàn)隻剩下(xià)4δ•←.5GB。
Gitlab随後試圖通(tōng)過可(kě)用(yòng)'♦✔的(de)備份文(wén)件(jiàn)用(yòng)于恢複生(shēng)産環境時(shí),•♣他(tā)們發現(xiàn),采用(yòng)的(de)五種備份方式居然鬼使神差地(dì)α✘在這(zhè)一(yī)刻都(dōu)失±™₽效了(le)!最終導緻Gitlab.com 官方網站(zhàn)宕機π$(jī)長(cháng)達十個(gè)小(xiǎo)時(shí)。
雖然Gitlab最終挽回了(le)部分(fēn)損失,但(dàn)仍然丢失了α§♥Ω(le)6個(gè)小(xiǎo)時(shí)的(de)數(shù)據。
非常值得(de)尊敬的(de)是(shì),Gitlab官方在y©€↑outube上(shàng)直播了(le)的(de)整個(g©₹α∞è)恢複過程,為(wèi)所有(yǒu)的≠∞§₽(de)IT運維人(rén)員(yuán✘€)敲響警鐘(zhōng):自(zì)己的(de)運維情況如(rú)何?如(rú)÷>±果這(zhè)件(jiàn)事(shì)情發生(shēng)在自(¶πzì)己身(shēn)上(shàng),會(huì)不(bù±δ)會(huì)做(zuò)得(de)更好(hǎo)?
GitLab使用(yòng)的(de)五種備份機(jī)制(zhì)分(f∞>ēn)别是(shì):
· LVM快(kuài)照(zhào)(24小(xiǎo)時(shí)做(zuò)一ε≥≈(yī)次);
· 日(rì)常備份(24小(xiǎo)時(shí)做(zuò)一(yī)次);
· S3備份;
· Azure備份(隻對(duì) NFS 啓用♣×(yòng),對(duì)數(shù)據庫無↑Ω∏效);
· 自(zì)動同步;
但(dàn)是(shì)當這(zhè)次事(shì)故發生(shēng)時(shí),所有(yǒu★ )備份全部無效!作(zuò)為(wèi)一(yī)個(gè)在數(shù)據保護領"π≥域工(gōng)作(zuò)多(duō)年(nián)的(de)老(lǎo)司機(jī),₹€ 這(zhè)件(jiàn)事(shì)引起了(le)我強✔α≤☆烈的(de)興趣。究竟寫備份是(shì)如(rú)何失效的(d✘↔<e)?對(duì)其他(tā)數(shù)據庫管理(lǐ)者,¥®♦α通(tōng)過這(zhè)件(jiàn)事(shì)情,我們能(néng)學到(dà™'σo)什(shén)麽?
首先,Gitlab将LVM的(de)複制(zhì)周期設置為(>×wèi)24小(xiǎo)時(shí)。作(zuò)為(±≤wèi)一(yī)個(gè)防止誤操作(zuò)的(de)屏障,這(zhè)個(gè)周期明(m πβíng)顯太長(cháng)了(le)。但(dàn)是(shì)好(hǎo)在這(zh'&è)個(gè)備份副本具有(yǒu)比較高€ (gāo)的(de)可(kě)靠性,在實在沒辦法的(de)β↕≥§時(shí)候還(hái)可(kě)以指望得(de)上(shàng)。實際上(shàng §)Gitlab最後就(jiù)是(shì)利用(yòng)了(le≠↑)LVM的(de)複本對(duì)數(shù)據實現(xiàn)了(® ×le)恢複。這(zhè)本應是(shì)最終的(ε←de)一(yī)道(dào)屏障,事(shì)實證明(míng),卻是( ∞βshì)可(kě)用(yòng)的(de)唯一(yī)屏障。≤≈
日(rì)常備份也(yě)是(shì)24小(xiǎo)時(shí)進行(xγ¥íng)一(yī)次,但(dàn)最後卻發現(xiàn)日(rì)常備份實際上(s↓↕hàng)并沒有(yǒu)生(shēng)效。“高(gāo)效運維”公衆号的(de)筆(bǐ)'€↓者認為(wèi),這(zhè)裡(lǐ)的(de)日(r←≥♠ì)常備份指的(de)是(shì)Gitlab官方提供的(d©©∞'e)命令行(xíng)腳本,每天打包一(yī)次。€∏很(hěn)多(duō)數(shù)據庫高(g™↑♥āo)手貌似都(dōu)喜歡使用(yòng)命令行(xíng)腳本★®,但(dàn)是(shì),一(yī)個(gè)備份作(zuò)業(yè)是(shì∑§÷)否完成是(shì)需要(yào)反饋的(de)。≥ δ命令行(xíng)指令沒有(yǒu)完成的(de)反饋,很(hěn)容易就(jiù)淹沒在各種交®σ互信息裡(lǐ)了(le),誰也(yě)不(bù←≤)知(zhī)道(dào)這(zhè)個(g∞è)日(rì)常備份已經有(yǒu)多(duō)久沒有(β∑yǒu)執行(xíng)了(le)。另外(wài),如±£(rú)果如(rú)推測所言,這(zhè)個(gè→≠ε₽)備份隻能(néng)保護數(shù)據庫本身(shēn),對(duì)整個(gè)計→☆ ∞(jì)算(suàn)系統是(shì)沒有(yǒu)保護的(de)。
原文(wén)還(hái)提到(dào)了(le)基于數(shù)據庫的≥♦φ(de)pg_dump命令的(de)備份,但(dàn)是(shì)因為(wèi)數(shù)據庫版£☆ 本的(de)問(wèn)題,已然失效。Gitlab利用(yòng)Azure進行( ₽xíng)備份,但(dàn)是(shì)備份隻針對(duì)了(le)NFS服務器(qì)而沒"©Ω∑有(yǒu)針對(duì)數(shù)據庫服務器(qì)。原文(wén)還(hái)提到(dào)↑"γ了(le)一(yī)個(gè)不(bù)能(néng)用(yò★¶♥βng)的(de)S3備份卻沒有(yǒu)說(shuō)明(míng)原因,此♣ ∑₽處不(bù)作(zuò)分(fēn)析。
管理(lǐ)員(yuán)們還(hái)急中生(shēng)智,想利用(yòng)一(yī)個(gδ★↑è)往預發布環境同步數(shù)據的(de)同步程序來(lái)恢複數(s∞€hù)據,但(dàn)是(shì)同步一(yī)旦完成,這(zhè)個(gè)空(§÷kōng)間(jiān)自(zì)動就(jiù₽®£λ)清空(kōng)了(le)。這(zhè)根本就(ji≤<ù)不(bù)是(shì),也(yě)不(b™∏≠ù)應該是(shì)一(yī)個(gè)數(shù)≈δ®據備份機(jī)制(zhì)的(de)一(yī)部分(fēn)。
從(cóng)數(shù)據庫管理(lǐ)員(yuán)的≥♦(de)角度來(lái)看(kàn),從(cóng)此次事(shì)Ω≥ 件(jiàn)中得(de)到(dào)的(de) ≈ε≥教訓包括:
1. 讓你(nǐ"★≠)的(de)備份機(jī)制(zhì)能(néng)¶≤♦α夠主動反饋結果,管理(lǐ)員(yuán)必須能(né£≤ng)夠至少(shǎo)知(zhī)道(dào)備份是(shì↔ )成功還(hái)是(shì)失敗;
2. 讓你(nǐ)的(deα )備份機(jī)制(zhì)能(néng)夠完整覆蓋數(shù)據庫和(hé)文(wén)件(ji☆★✔©àn)系統以及整個(gè)計(jì)算(suàn)環境,而不(bù)是(shì)僅§™Ωα僅針對(duì)數(shù)據庫本身(shēn);
3. 經常演練。上(sh≥£àng)面列舉的(de)第二、第三和(hé)第四個(gè)備份方式可φ←±(kě)行(xíng)不(bù)可(kě)行(xíng),哪怕隻進行(xíng)過一(y±★ ī)次演練就(jiù)應該發現(xiàn)漏洞≤σ€;
4. 做(zuò)一(yī)個(gè)應急預₽δ案。在這(zhè)次事(shì)故中看(kàn)到(dào)Gitlab的(d&≤♣ e)響應和(hé)修複措施幾乎無章(zhāng)可(kě)循,完全沒有(yǒu§✘←↓)事(shì)先的(de)規劃和(hé)設計(jì)σΩ→∑。
從(cóng)數(shù)據保護的(de)專業(yè)角度♥Ω←看(kàn),雖然Gitlab号稱采用(yòng)了(le)五$≥¥種備份機(jī)制(zhì),但(dàn)是(shì)仔細看(kàn)↔λ®σ來(lái),卻顯業(yè)餘。鑒于此次已經發生(shēng)的(de)G'≠∏♣itlab事(shì)故,以及未來(lái)即将發生(shēng)的(de)“Git¥≤α$lab”事(shì)故,企業(yè)和(hé)網站(zhàn)應該開(kāi)始思考:自(zì)己的(de)數(shù)據庫是(shì)否正在裸奔?其數(s'♠₽hù)據保護和(hé)容災機(jī)制(zhì)是(shì)否健全↔<₽™?應該向哪些(xiē)廠(chǎng)商尋求專業(yè)保™¥→<護?
在軟件(jiàn)定義存儲解決方案方面具有(yǒu)16年(nián)經驗的(de)飛(f© ēi)康軟件(jiàn)公司,針對(du'₽£ì)這(zhè)種情況為(wèi)客戶提供了(le)數(shù)據保護和(hé)容災≤©産品Continuous Data Protector(CDP)。
飛(fēi)康CDP可(kě)以對(duì)內(nèi)部<✔±數(shù)據中心和(hé)外(wài)部雲(如(rú)Gitlab的(de)S3和(hé)A¥€zure)進行(xíng)統一(yī)管理(lǐ±♣¶),充分(fēn)利用(yòng)外(wài)部雲的(de)高(gāo)性價比₩§$∏,并可(kě)以輕松在雲間(jiān)靈活跳(tiào)轉,實現(xiàn)更高(gāo)σ的(de)性價比和(hé)靈活性。
飛(fēi)康CDP是(shì)基于磁盤的(de)、新一(yī)代備份與&'>÷容災一(yī)體(tǐ)化(huà)解決方案,能(néng)夠幫客戶将±♦文(wén)件(jiàn)/數(shù)據庫/操作(zuò)系統實現(≠ xiàn)實時(shí)備份與瞬間(jiān)≈ε♠↓恢複,可(kě)以在系統出現(xiàn)問(wèn)題時(shí)迅速将數☆δ≥(shù)據恢複到(dào)數(shù)分(fēn)鐘(zh ≈ōng)以前,這(zhè)極大(dà)地(dì)保證了(le)業(yè)務的(de)連續性∏γ,同時(shí)避免出現(xiàn)Gitlab事(shì)故中"的(de)因備份恢複延遲導緻大(dà)量數(shù)據丢失的(de)現(xiàn®≤)象。
飛(fēi)康CDP備份/容災一(yī)體(t★♠ ★ǐ)化(huà)解決方案,真正以快(kuài)速恢複服務為(✘↑✔wèi)第一(yī)目标。無論用(yòng)戶的(de)應用(yòng)或者系統乃至數(shù)據中心發生(shēng)≥α何種意外(wài),例如(rú),惡意的(de)程序破壞、文(wσ∏én)件(jiàn)損毀、人(rén)為(wèi)誤删誤改、操作(zuò)系統宕機(jī)、£'$>硬件(jiàn)故障,甚至整個(gè)機(jī)房(fáng)毀≈ 于意外(wài),在飛(fēi)康CDP的(de)全面保護下(xià),都("ε→dōu)能(néng)最大(dà)程度地(dì)保證企業(yè)數(shù)據損失(RP™&←O)降到(dào)最低(dī),業(yè)務中斷時(shí)間(jiāα®≥n)(RTO)最短(duǎn)。
最後,一(yī)體(tǐ)化(huà)的(de)δ∑飛(fēi)康CDP 備份/容災技(jì)術(shù),☆ 使任何災難的(de)發生(shēng)都(dōu)不(bù)→¶≠™再是(shì)緻命的(de),用(yòng)戶很(hěn)輕松就(jiù)能(néng)獲得(d<₩★e)備份和(hé)容災的(de)雙重效果。
α