【摘要】對(duì)于每一個(gè)企業(yè)來講,數(shù)據(jù)備份恢復(fù)是企業(yè)IT運(yùn)維當(dāng)中非常重要的一部分。如何保障必要的數(shù)據(jù)在必要的時(shí)間完成必要模式的備份,并且能在需要的時(shí)刻將正確的數(shù)據(jù)在正確的位置恢復(fù),這是數(shù)據(jù)備份恢復(fù)運(yùn)維工作必然的考核指標(biāo)。本文通過大量的運(yùn)維實(shí)踐總結(jié)出備份系統(tǒng)運(yùn)維工作當(dāng)中遇到的一些關(guān)鍵問題,并且按照實(shí)際解決方案提煉解決思路。希望能給企業(yè)日常的備份系統(tǒng)運(yùn)維帶來一些啟示和幫助。
【關(guān)鍵字】備份介質(zhì);備份作業(yè);備份系統(tǒng)
【作者】趙海
1.如何解決平衡數(shù)據(jù)庫歸檔頻度和數(shù)據(jù)恢復(fù)完整性
1.1數(shù)據(jù)庫恢復(fù)的基本原理
對(duì)于數(shù)據(jù)庫的恢復(fù)來說有很多種,我們只討論需要介質(zhì)恢復(fù)的情況。在這種場合下,首先我們需要找到一個(gè)最近時(shí)刻點(diǎn)的全量備份進(jìn)行恢復(fù);然后需要從備份介質(zhì)上找到這個(gè)時(shí)刻點(diǎn)之后的重做日志進(jìn)行數(shù)據(jù)追平,最后我們需要找到本地沒有丟失的重做日志進(jìn)行再次追平直到?jīng)]有可用日志。如下圖所示:
圖1數(shù)據(jù)庫恢復(fù)原理示意圖
如圖所示,在時(shí)刻A,我們開始做在線全庫備份,在B時(shí)刻全庫備份結(jié)束。當(dāng)數(shù)據(jù)庫運(yùn)行到E時(shí)刻之后數(shù)據(jù)庫發(fā)生了重大介質(zhì)故障,只能通過介質(zhì)恢復(fù)。那么在A~C時(shí)間段內(nèi),大部分REDO日志文件都已經(jīng)歸檔到備份介質(zhì)池當(dāng)中,服務(wù)器本地存儲(chǔ)目錄當(dāng)中只剩下C~E(小于一個(gè)歸檔備份時(shí)間間隔)的歸檔日志和沒有來得及歸檔的REDO日志文件。假設(shè)發(fā)生的故障嚴(yán)重到服務(wù)器本地存儲(chǔ)目錄也無法恢復(fù)的時(shí)候,那么相當(dāng)于在C-E這段時(shí)間產(chǎn)生的重做日志就丟失掉了。相當(dāng)在這種極端場合下,數(shù)據(jù)丟失的最大窗口就是一個(gè)歸檔間隔時(shí)間段。當(dāng)然如果把這個(gè)間隔設(shè)置的足夠小的話,那么另外的問題就產(chǎn)生了,備份作業(yè)隨著系統(tǒng)增加會(huì)呈爆發(fā)式并發(fā)啟動(dòng)狀態(tài),最終會(huì)影響到整個(gè)備份系統(tǒng)的健康運(yùn)行導(dǎo)致歸檔無法及時(shí)轉(zhuǎn)儲(chǔ),最終還是可能會(huì)導(dǎo)致數(shù)據(jù)庫的宕機(jī)。這就是一個(gè)矛盾,需要我們?nèi)ズ芎玫钠胶狻?/p>
1.2平衡數(shù)據(jù)庫歸檔頻率的方法
數(shù)據(jù)庫歸檔備份的頻率是指一天24小時(shí)內(nèi)間隔多長時(shí)間進(jìn)行一次歸檔日志的備份,一方面是要保障增量數(shù)據(jù)備份的完整性,另外一方面是要避免因?yàn)榛謴?fù)空間不足導(dǎo)致數(shù)據(jù)庫的宕機(jī)時(shí)間。要平衡這個(gè)頻率窗口需要采集以下幾類數(shù)據(jù):
1)單位時(shí)間內(nèi)不同數(shù)據(jù)庫系統(tǒng)平均的歸檔日志量。
采集這個(gè)數(shù)據(jù)的目的在于詳細(xì)分析不同業(yè)務(wù)系統(tǒng)在不同時(shí)間段的寫操作頻繁程度。對(duì)于日志歸檔速度較快的系統(tǒng),我們需要提高其恢復(fù)區(qū)的空間大小,同時(shí)加快歸檔備份的頻率,使得數(shù)據(jù)庫既能處于安全運(yùn)行狀態(tài)又能保障極端故障場合下數(shù)據(jù)丟失的量在較小范圍之內(nèi)。
2)業(yè)務(wù)系統(tǒng)類型。
所謂業(yè)務(wù)系統(tǒng)類型即OLTP或者是OLAP,因?yàn)閷?duì)于OLAP來講,每次的讀寫操作都會(huì)是批量的執(zhí)行,它的歸檔速度是正常OLAP系統(tǒng)的幾十倍甚至上百倍。最麻煩的是兩者皆有的業(yè)務(wù)系統(tǒng),比如說銀行業(yè)中的交易系統(tǒng),白天跑聯(lián)機(jī)交易,晚上跑核算批量,白天和晚上的日志歸檔速度有著巨大的反差。那么我們就需要在批量作業(yè)時(shí)間段內(nèi)將備份頻率調(diào)快,將恢復(fù)區(qū)空間設(shè)置提高。
3)備份系統(tǒng)可以容忍的最大并發(fā)量。
備份系統(tǒng)可以容忍的最大并發(fā)Jobs,不僅僅取決于備份軟件系統(tǒng)可以并發(fā)調(diào)度的作業(yè)數(shù)目和備份作業(yè)服務(wù)器的數(shù)目,還要取決于備份介質(zhì)池可以容忍的資源消耗限制。及時(shí)我們可以同時(shí)調(diào)度幾百個(gè)作業(yè),但是當(dāng)幾十個(gè)作業(yè)同時(shí)寫入備份介質(zhì)池時(shí)就會(huì)把備份介質(zhì)池的計(jì)算資源或者是IO資源使用殆盡。那么最終整個(gè)備份系統(tǒng)的并發(fā)數(shù)取決于短板因素。
4)不同數(shù)據(jù)庫系統(tǒng)恢復(fù)區(qū)能夠支撐最小時(shí)間窗口。
這個(gè)最小時(shí)間窗口是我們用數(shù)據(jù)庫的恢復(fù)區(qū)可用空間大小/單位時(shí)間內(nèi)的最大歸檔速度來估算出來的時(shí)間窗口。因?yàn)槲覀冊(cè)诎惭b數(shù)據(jù)庫或者是做變更的時(shí)候不可能按照每一個(gè)系統(tǒng)的特點(diǎn)詳細(xì)計(jì)算出其日志存儲(chǔ)空間的大小,只能按照有限的幾個(gè)規(guī)格來做初始規(guī)劃。
有了以上數(shù)據(jù)之后,我們需要根據(jù)以下幾個(gè)原則來詳細(xì)設(shè)計(jì)我們的歸檔作業(yè)頻率。
首先,根據(jù)4當(dāng)中采集到的數(shù)據(jù),將時(shí)間窗口較小的幾個(gè)系統(tǒng)進(jìn)行存儲(chǔ)空間調(diào)整,使其日志存儲(chǔ)空間能夠滿足我們期望的最小時(shí)間標(biāo)準(zhǔn)。
然后,將一天24小時(shí)定義為幾個(gè)時(shí)間段,批量業(yè)務(wù)集中的時(shí)間段、聯(lián)機(jī)業(yè)務(wù)集中的時(shí)間段、特殊任務(wù)集中的時(shí)間段等。當(dāng)然這個(gè)定義主要是根據(jù)1&2中采集到的詳細(xì)數(shù)據(jù)來定義的。
接著,我們需要根據(jù)1中數(shù)據(jù)估算出一個(gè)歸檔作業(yè)大概持續(xù)的時(shí)間長度。為保障每一個(gè)時(shí)刻點(diǎn)的并發(fā)執(zhí)行備份作業(yè)數(shù)目遠(yuǎn)小于3中估算出來的數(shù)據(jù)。
最后,需要把備份作業(yè)的頻度根據(jù)不同的時(shí)間段特點(diǎn)調(diào)整到以上條件都滿足的狀態(tài),并在此前提條件下可以為了保障極端情況下的數(shù)據(jù)完整性而適當(dāng)調(diào)快歸檔作業(yè)的備份頻率。下圖是一個(gè)根據(jù)以上采集數(shù)據(jù)進(jìn)行多維分析的實(shí)例,僅僅是一個(gè)方法示意,歸檔頻率根據(jù)數(shù)據(jù)重要性分級(jí)、歸檔速度、業(yè)務(wù)時(shí)間段分類等前提進(jìn)行的粗略分析,最下面的一行數(shù)字表示每一個(gè)時(shí)刻點(diǎn)并發(fā)的歸檔備份數(shù)目,其目標(biāo)在于平衡每一個(gè)時(shí)間間隔內(nèi)的平均備份作業(yè)數(shù)。實(shí)際情況會(huì)比以下情況復(fù)雜很多,我們可以將時(shí)間間隔劃分的更小,涉及的因素更多,分析的更加細(xì)致。
圖2數(shù)據(jù)庫歸檔頻率規(guī)劃分析案例
2.如何評(píng)估數(shù)據(jù)庫全量備份的策略
數(shù)據(jù)庫的全量備份來講,隨著數(shù)據(jù)量的不斷增加,其備份作業(yè)耗費(fèi)的時(shí)間也就會(huì)越長,耗費(fèi)的數(shù)據(jù)庫資源也越多,對(duì)在線業(yè)務(wù)的影響也就越大。另外同一個(gè)時(shí)間段內(nèi)發(fā)起的全量備份越多,那么其占用的備份系統(tǒng)整體資源(備份服務(wù)器、備份介質(zhì)池、鏈路帶寬等)也就會(huì)越多,其影響范圍也會(huì)越廣。
首先,這個(gè)問題是一個(gè)需要不斷優(yōu)化的問題。對(duì)于每一個(gè)應(yīng)用系統(tǒng)來講,根據(jù)業(yè)務(wù)服務(wù)的特點(diǎn),其備份的時(shí)間窗口也是不同的??赡艹跗趥浞葑鳂I(yè)能夠在備份窗口內(nèi)完成,但是隨著數(shù)據(jù)量的增長,后期的備份作業(yè)就會(huì)超過備份時(shí)間窗口。所以我們需要定期監(jiān)控?cái)?shù)據(jù)庫的全量備份作業(yè)時(shí)間,在事件窗口范圍內(nèi)盡量通過調(diào)整合適的調(diào)度時(shí)間來完成全量備份。但是當(dāng)數(shù)據(jù)量增長到完全沒辦法在備份窗口完成的時(shí)候,那么我們就需要進(jìn)行調(diào)整全量備份的頻度和具體調(diào)度時(shí)間點(diǎn)了。
其次,這個(gè)問題是一個(gè)跟業(yè)務(wù)特點(diǎn)密切相關(guān)的的問題。有些人喜歡把所有的業(yè)務(wù)系統(tǒng)都按照一個(gè)標(biāo)準(zhǔn)去定義其數(shù)據(jù)庫全量備份的策略。比如說TB以下的數(shù)據(jù)庫,每天一次全量備份;比如說業(yè)務(wù)等級(jí)屬于重要的系統(tǒng),每天一次全量備份;比如說只要能備份的系統(tǒng),全部進(jìn)行每天一次的全量備份等等策略。這些都是不科學(xué)的策略。應(yīng)該從業(yè)務(wù)系統(tǒng)的數(shù)據(jù)重要性去評(píng)估數(shù)據(jù)庫全量備分的頻率,在現(xiàn)有備份系統(tǒng)有限的處理能力內(nèi)保障數(shù)據(jù)重要性高的系統(tǒng)完成相應(yīng)的全量備份。
最后,這個(gè)問題是一個(gè)需要從各個(gè)方面著手去解決的問題。從備份網(wǎng)絡(luò)的帶寬和隔離性考慮,應(yīng)該用單獨(dú)的告訴備份網(wǎng)絡(luò),備份客戶端應(yīng)該設(shè)置區(qū)分于業(yè)務(wù)的單獨(dú)網(wǎng)絡(luò)通道及配置。從備份作業(yè)服務(wù)器的配置層面,我們應(yīng)該配置相對(duì)合理的資源(內(nèi)存、磁盤)來保障備份片在作業(yè)服務(wù)器層沒有瓶頸。從備份介質(zhì)池層面,我們需要保障備份介質(zhì)的IO處理能力不能成為備份作業(yè)底端的性能瓶頸。
3.如何解決備份作業(yè)分布合理性問題
其實(shí)這個(gè)問題很簡單,目的就是要保障備份時(shí)間窗口內(nèi)調(diào)度起來以及運(yùn)行過程中的備份作業(yè)處于一種平衡狀態(tài),不能使其作業(yè)調(diào)用或者是并發(fā)運(yùn)行過于集中。但是當(dāng)系統(tǒng)數(shù)目非常多,系統(tǒng)特點(diǎn)復(fù)雜,數(shù)據(jù)重要性級(jí)別有很多種,數(shù)據(jù)量以及數(shù)據(jù)增速各不相同時(shí),這個(gè)問題就變得比較復(fù)雜。我們很難有一種精確的計(jì)算方法來實(shí)現(xiàn)其做到絕對(duì),但是我們可以根據(jù)以下的方法進(jìn)行定性的分析和調(diào)整。
假設(shè)我們定義一個(gè)系統(tǒng)的備份作業(yè)在備份體系當(dāng)中必須具備的屬性為:
P1-應(yīng)用系統(tǒng)數(shù)據(jù)的重要性級(jí)別屬性,可以通過業(yè)務(wù)分析劃分為有限的幾個(gè)級(jí)別。
P2-應(yīng)用系統(tǒng)在不同時(shí)間段內(nèi)的數(shù)據(jù)增量屬性,需要通過梳理歷史數(shù)據(jù)來評(píng)估。
P3-應(yīng)用系統(tǒng)當(dāng)前的備份作業(yè)的時(shí)間長度屬性,需要通過歷史數(shù)據(jù)結(jié)合數(shù)據(jù)量來評(píng)估。
P4-應(yīng)用系統(tǒng)是否是具備雙重業(yè)務(wù)特性,比如兼?zhèn)渑亢吐?lián)機(jī)業(yè)務(wù)特性。
通過以上幾個(gè)屬性的加權(quán)計(jì)算或者其他方法的定性分析,計(jì)算出每一個(gè)系統(tǒng)的不同備份作業(yè)的定性矢量,然后我們可以將這些矢量根據(jù)其具體備份窗口設(shè)置初始的調(diào)度時(shí)間點(diǎn),然后分析其具體分布圖是否均衡穩(wěn)定并且進(jìn)行微調(diào)。例如下圖是一個(gè)粗略的分析實(shí)例,可以提供相關(guān)的參考思路:
圖3備份作業(yè)分布定性分析案例
以上案例僅僅是一個(gè)相對(duì)粗略的分析方式,僅僅是一個(gè)基于某一特定案例的分析思路。我們可以根據(jù)業(yè)務(wù)系統(tǒng)特點(diǎn)結(jié)合更好的專業(yè)工具進(jìn)行更加細(xì)節(jié)的分析。但是總體目標(biāo)是讓我們的備份作業(yè)分布達(dá)到一定范圍內(nèi)的平衡,另外在某些特定的業(yè)務(wù)場合或者特定的設(shè)備場合下,可能會(huì)有一些特殊的時(shí)間窗口需要和備份作業(yè)適當(dāng)分割開來,比如說基于文件系統(tǒng)技術(shù)實(shí)現(xiàn)的備份介質(zhì)存儲(chǔ)池,由于我們的周期性歸檔配置,它會(huì)定期去做文件系統(tǒng)的清理作業(yè),而且時(shí)間段比較長,耗費(fèi)資源比較高。我們盡量要講備份作業(yè)的分布策略與這些時(shí)間段保持適當(dāng)?shù)姆指?。這樣才會(huì)保證備份系統(tǒng)運(yùn)行的長久安全穩(wěn)定。
4.如何解決業(yè)務(wù)發(fā)展與備份系統(tǒng)有限性瓶頸
所謂的業(yè)務(wù)發(fā)展在備份體系建設(shè)過程中包括幾個(gè)方面的影響。一方面業(yè)務(wù)量的增長會(huì)導(dǎo)致備份作業(yè)的不斷增加,另外一方面業(yè)務(wù)量的增長會(huì)導(dǎo)致現(xiàn)有備份作業(yè)負(fù)載的不斷加劇,再有就是各種新業(yè)務(wù)的增加會(huì)帶來新型模式數(shù)據(jù)備份的挑戰(zhàn)。這幾方面的因素不但會(huì)對(duì)現(xiàn)有備份系統(tǒng)的負(fù)載擴(kuò)展能力提出巨大挑戰(zhàn),也會(huì)對(duì)現(xiàn)有備份系統(tǒng)功能擴(kuò)展能力提出巨大挑戰(zhàn)。
解決以上問題,本文認(rèn)為唯一可行的方法就是從單一傳統(tǒng)的備份系統(tǒng)逐漸過渡到完善的備份體系。傳統(tǒng)的備份軟件形成的格局只是這個(gè)體系的一個(gè)元素,基于快照的備份接口、基于軟件加速的接口、基于異構(gòu)平臺(tái)轉(zhuǎn)儲(chǔ)的模塊兒都應(yīng)該成為這個(gè)體系當(dāng)中的擴(kuò)展元素;同時(shí)備份介質(zhì)也應(yīng)該從單一的帶庫、DD等傳統(tǒng)備份介質(zhì)擴(kuò)展到由現(xiàn)有備份介質(zhì)池和分布式存儲(chǔ)池、對(duì)象存儲(chǔ)池、云端備份池等多種元素組成的廣義備份介質(zhì)池;單一的備份恢復(fù)模式也應(yīng)該轉(zhuǎn)換為多級(jí)數(shù)據(jù)一體化模式,既包括多級(jí)數(shù)據(jù)的轉(zhuǎn)儲(chǔ)歸檔機(jī)制,又包括數(shù)據(jù)自動(dòng)化下沉和上浮的機(jī)制,數(shù)據(jù)流向?qū)崿F(xiàn)自動(dòng)化平滑軌跡。
目前可以實(shí)現(xiàn)以上體系的軟硬件產(chǎn)品組合有很多,各家都有各家的特點(diǎn)和局限。關(guān)鍵是要靠規(guī)劃者根據(jù)自己的業(yè)務(wù)特點(diǎn)和長遠(yuǎn)的發(fā)展預(yù)測來選擇和集成合適的解決方案。