在云時(shí)代重新思考傳統(tǒng)的備份策略
云計(jì)算為IT環(huán)境及其備份策略和執(zhí)行帶來(lái)了技術(shù)轉(zhuǎn)變。依賴完善的本地備份規(guī)則和模式很方便,但存在風(fēng)險(xiǎn)。這些備份策略之所以流行,是因?yàn)樗鼈冇行У亟鉀Q了本地環(huán)境中的關(guān)鍵問(wèn)題。但是,無(wú)法保證將這些解決方案原封不動(dòng)地照搬到云環(huán)境中仍然有意義、適用并且經(jīng)濟(jì)高效。
讓我們來(lái)看看兩種廣泛使用的本地備份策略——“祖父-父-子”和“3-2-1”策略,并探討它們?cè)诠苍骗h(huán)境中是否還有意義。
“3-2-1”備份策略
備份領(lǐng)域中最著名的策略之一—— 3-2-1 模式由三個(gè)元素組成:
- 保留(至少)三份數(shù)據(jù)。
- 將備份存儲(chǔ)在(至少)兩種類型的備份介質(zhì)上。
- 在異地保留(至少)一份副本。
架構(gòu)師不應(yīng)該簡(jiǎn)單地將這種策略照搬到云設(shè)計(jì)之中,而是應(yīng)該問(wèn)問(wèn)自己:這種模式規(guī)則為什么在本地環(huán)境中至關(guān)重要?工程師和架構(gòu)師想要用它們實(shí)現(xiàn)什么目標(biāo)?
老式備份概念與云功能
老式備份概念與云功能反映了這些內(nèi)容:左列里列舉了模式的規(guī)則。中間列顯示的是導(dǎo)致這種模式規(guī)則產(chǎn)生的需求和要求。最后,最右邊一列對(duì)云時(shí)代很重要:它列舉了亞馬遜的AWS,谷歌的GCP或微軟的Azure等公共云的變化。
幾十年來(lái),服務(wù)供應(yīng)商和企業(yè)一直將自己的服務(wù)器安置在數(shù)據(jù)中心,這些數(shù)據(jù)中心的選址都經(jīng)過(guò)了精挑細(xì)選。他們希望降低洪水或者山體滑坡之類環(huán)境危害的風(fēng)險(xiǎn)。而很多中小型公共或私人組織以及中小企業(yè)可能仍然會(huì)把服務(wù)器放在辦公樓的地下室里。
火災(zāi)、地震或者卡車撞入建筑物——所有這些事件都可能毀壞整棟建筑物,包括服務(wù)器機(jī)房。這樣一來(lái),推薦的“一個(gè)異地備份副本”就成了唯一的救星。但是在云時(shí)代,這種備份是否還有意義?
“現(xiàn)場(chǎng)”與“異地”的概念在云時(shí)代發(fā)生了變化,但有一個(gè)風(fēng)險(xiǎn)始終存在:無(wú)論你如何仔細(xì)地選址,也無(wú)論你多么認(rèn)真地對(duì)待物理安全性,都可能有一架飛機(jī)撞上你選中的建筑物,或者一場(chǎng)大火(以及隨后的消防工作)依然可能摧毀數(shù)據(jù)中心。將生產(chǎn)工作負(fù)載放在一個(gè)數(shù)據(jù)中心并且至少在另一個(gè)數(shù)據(jù)中心有一個(gè)備份的做法仍然有意義。AWS跨區(qū)域復(fù)制(AWS Cross-Region Replication)或者Azure中的異地冗余存儲(chǔ)等功能甚至讓小型企業(yè)也能夠?yàn)閰^(qū)域性或者全國(guó)性的災(zāi)難做好準(zhǔn)備。
對(duì)“兩種類型的備份介質(zhì)”規(guī)則的需求不太明顯。但是,讓我們回顧一下公司將備份存儲(chǔ)在磁帶或光盤上的時(shí)代,看看可能出現(xiàn)的問(wèn)題。首先,為了方便起見,工程師可能會(huì)決定將所有備份保存在一個(gè)介質(zhì)上。如果此介質(zhì)有缺陷或丟失,所有備份就都丟失了。一個(gè)介質(zhì)顯然風(fēng)險(xiǎn)太大,但是如果使用三個(gè)磁帶,每個(gè)磁帶都可以工作數(shù)年或者數(shù)十年,會(huì)有什么風(fēng)險(xiǎn)?
為了便于解釋,我們假定一年內(nèi)丟失一個(gè)備份磁帶的概率為0.1%,并假設(shè)我們有三個(gè)備份。那么,丟失全部三個(gè)備份的可能性是0.1%*0.1%*0.1%=0.001%。如果覺得這個(gè)值太高,可以再增加三個(gè)備份。在一年之內(nèi)丟失所有六個(gè)備份的概率是0.000001%。相比之下,你此生被閃電擊中的概率是0.0065%。考慮到這些可能性,你是否會(huì)投資降低同時(shí)丟失三個(gè)或者六個(gè)磁帶的風(fēng)險(xiǎn)呢?
這是一個(gè)棘手的問(wèn)題,因?yàn)樗⒃谝粋€(gè)常見的錯(cuò)誤之上:假設(shè)這些事件彼此不相關(guān),但實(shí)際情況并非如此(統(tǒng)計(jì)中的因變量和自變量)。如果一盤磁帶因?yàn)椴牧先毕輷p壞,同一家工廠的同一臺(tái)機(jī)器上生產(chǎn)的所有磁帶都可能具有相同的缺陷。因此,在本地環(huán)境中,要求使用兩種類型的備份介質(zhì)是一種方便且易于實(shí)現(xiàn)的方法,可以降低所有介質(zhì)同時(shí)損壞的風(fēng)險(xiǎn)。但是這條規(guī)則能怎么幫助云備份呢?
答案是:這很復(fù)雜。S3 對(duì)象存儲(chǔ)的持久性服務(wù)水平協(xié)議為一年內(nèi) 99.9999999999%。但是,由于這是服務(wù)水平協(xié)議 (SLA),因此你必須信任服務(wù)提供商,并且無(wú)法驗(yàn)證技術(shù)設(shè)計(jì)和實(shí)現(xiàn)。如果云供應(yīng)商沒有兌現(xiàn)SLA,你的公司可能會(huì)破產(chǎn),但云供應(yīng)商可不會(huì)破產(chǎn)。云供應(yīng)商可能會(huì)給你的云服務(wù)帳單打一點(diǎn)折,但是如果你的數(shù)據(jù)丟失了,這點(diǎn)折扣完全無(wú)濟(jì)于事。我個(gè)人的觀點(diǎn)是:“兩種介質(zhì)”規(guī)則在云中幾乎是不可能實(shí)現(xiàn)的,但是如果你信任服務(wù)水平協(xié)議,這條規(guī)則也就沒有必要了。
“3-2-1”中的“3”指的是保留數(shù)據(jù)的三個(gè)版本;例如,在不同的時(shí)間點(diǎn)進(jìn)行兩次備份。該策略的一個(gè)流行的變種超出了這些要求,這就是另一個(gè)眾所周知的備份策略:“祖父-父-子”模式。
了解“祖父-父-子”策略
此數(shù)據(jù)備份模式的典型實(shí)現(xiàn):
- 每周進(jìn)行一次備份(父)
- 執(zhí)行每日備份(子)
- 每月保留一個(gè)備份(祖父)
祖父-父-子備份概念的月計(jì)劃示例
展示一個(gè)每周“父”備份、每月“祖父”備份以及每日“子備份”的計(jì)劃是個(gè)什么樣子。
“祖父-父-子”備份策略是一個(gè)復(fù)雜的概念,涵蓋了公司需要備份的各種場(chǎng)景。第一種情況關(guān)乎操作失誤。從理論上說(shuō),管理員永遠(yuǎn)不會(huì)錯(cuò)誤地刪除生產(chǎn)數(shù)據(jù)庫(kù)。
同樣,工程師在將測(cè)試系統(tǒng)配置更改應(yīng)用于生產(chǎn)系統(tǒng)之前,應(yīng)該仔細(xì)檢查。但是,如果現(xiàn)實(shí)偏離了理論,工程師們就必須將服務(wù)器和組件快速回滾到混亂發(fā)生之前的狀態(tài),解決方案就是使用最近的更新——例如前一天的備份。“子”備份可以滿足這個(gè)要求。
如果勒索團(tuán)伙或者政府資助的黑客滲透進(jìn)入IT環(huán)境之中,可能在幾天或者幾周之內(nèi)都不會(huì)被發(fā)現(xiàn)。因此,昨天的備份沒有多大幫助。相反,工程師們必須將配置和應(yīng)用程序(不是業(yè)務(wù)數(shù)據(jù))回滾到幾周之前滲透未發(fā)生時(shí)的狀態(tài)。在這種情況下,“祖父”備份是理想解決方案。
上面兩種示例方案對(duì)云環(huán)境也必不可少。不同之處在于云中新的數(shù)據(jù)備份功能,例如對(duì)象版本控制或者時(shí)間點(diǎn)恢復(fù)。
時(shí)間點(diǎn)恢復(fù)(PITR)在各種數(shù)據(jù)庫(kù)中已經(jīng)存在了一段時(shí)間了,但是公共云加速了推廣并將其集成到企業(yè)備份策略之中。PITR 是一種時(shí)間旅行工具,允許管理員和工程師將數(shù)據(jù)庫(kù)狀態(tài)回滾到某時(shí)間段內(nèi)(比如上周或者一個(gè)月內(nèi))的任何給定時(shí)間。如果可用并激活,PITR將讓每日備份和每周備份變得過(guò)時(shí)。根據(jù)特定云服務(wù)的具體要求、風(fēng)險(xiǎn)偏好和功能,企業(yè)在PITR 之外還需要“祖父”備份。
對(duì)象版本控制是另一個(gè)概念,對(duì)對(duì)象存儲(chǔ)特別有幫助。當(dāng)用戶、腳本或者應(yīng)用程序?qū)?duì)象替換為較新的版本時(shí),云會(huì)將舊版本按照定義保留一段時(shí)間。在此期間,不需要進(jìn)行額外的備份(例如每天或者每周),不過(guò)架構(gòu)師可能還要額外配置長(zhǎng)期備份。
高級(jí)云備份功能示例——Azure Cosmos DB(左)和 AWS S3(右)
傳統(tǒng)備份規(guī)則今天仍然適用
在云端配置備份前所未有地容易。只要點(diǎn)擊幾下,就完成了——然而,存儲(chǔ)的巨額賬單可能會(huì)毀掉你的業(yè)務(wù)案例。為了防止成本飆升,架構(gòu)師在制定云備份策略的時(shí)候必須考慮成本效益關(guān)系。將每月備份保留一年意味著你有十二個(gè)備份。將每周備份保留一個(gè)月還會(huì)增加四個(gè)備份。然后,如果你嚴(yán)格執(zhí)行每日備份并將其存儲(chǔ)一周,就還會(huì)增加七個(gè)備份。因此,備份存儲(chǔ)的體積是生產(chǎn)存儲(chǔ)的21倍。
既定的傳統(tǒng)備份規(guī)則(如“3-2-1”和“祖父-父-子”)在當(dāng)今的云架構(gòu)中仍然有意義。它們的意義更多地來(lái)自戰(zhàn)略背后的要求,而不是它們具體的規(guī)則和技術(shù)。然而,云也具有新的功能,包括冗余和云備份功能,這是大多數(shù)中小型公司幾年前做夢(mèng)都想不到的。
因此,云工程師的任務(wù)不是照搬以前的模式。他們應(yīng)該用今天的云功能來(lái)滿足以往要求中仍然有意義的部分。這樣,IT部門就可以定義并執(zhí)行兼具成本效益和前瞻性的云備份策略。