故障恢復(fù)(數(shù)據(jù)庫(kù))
時(shí)間:2022-12-25 06:30:01 | 來(lái)源:信息時(shí)代
時(shí)間:2022-12-25 06:30:01 來(lái)源:信息時(shí)代
故障恢復(fù) : 將系統(tǒng)恢復(fù)到發(fā)生故障之前狀態(tài)的過(guò)程。對(duì)于數(shù)據(jù)庫(kù)系統(tǒng)來(lái)講,由于承載著支撐信息系統(tǒng)的數(shù)據(jù)管理的重任,其穩(wěn)定可靠是最重要的,數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)具備很強(qiáng)的抗故障和容錯(cuò)的能力。因此,故障恢復(fù)子系統(tǒng)是數(shù)據(jù)庫(kù)系統(tǒng)最重要的組成部分之一。
設(shè)計(jì)故障恢復(fù)系統(tǒng)必須從分析故障入手。故障可分為事務(wù)級(jí)故障、系統(tǒng)級(jí)故障和介質(zhì)級(jí)故障。所謂事務(wù)級(jí)故障是指故障的影響范圍被限制在該事務(wù)本身。例如,數(shù)據(jù)庫(kù)事務(wù)中某個(gè)操作失敗了,這個(gè)事務(wù)就需要回滾,但是數(shù)據(jù)庫(kù)系統(tǒng)還是好的,可以繼續(xù)運(yùn)行,這個(gè)故障就是事務(wù)級(jí)的故障。所謂系統(tǒng)級(jí)故障是指這個(gè)故障導(dǎo)致了整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的停止,造成系統(tǒng)中全部事務(wù)的終止。例如,數(shù)據(jù)庫(kù)代碼的異常,操作系統(tǒng)的崩潰,停電事故等就是典型的系統(tǒng)級(jí)故障。所謂介質(zhì)級(jí)故障是指保存數(shù)據(jù)的磁盤介質(zhì)發(fā)生了故障,造成數(shù)據(jù)庫(kù)中數(shù)據(jù)的丟失和損壞。例如,地震、火災(zāi)等災(zāi)難造成磁盤損毀就是介質(zhì)級(jí)的故障。這幾類故障的影響面、發(fā)生頻率和恢復(fù)代價(jià)如下:
故障 | 影響面 | 發(fā)生頻率 | 恢復(fù)代價(jià) |
事務(wù)級(jí) | 小 | 高 | 小 |
系統(tǒng)級(jí) | 中 | 中 | 中 |
介質(zhì)級(jí) | 大 | 低 | 大 |
故障恢復(fù)的基本思路就是利用數(shù)據(jù)的“冗余”,也就是當(dāng)數(shù)據(jù)庫(kù)中的部分?jǐn)?shù)據(jù)被破壞或者損毀的時(shí)候,系統(tǒng)能夠從其他冗余存儲(chǔ)的數(shù)據(jù)中重建。但是,冗余是有代價(jià)的,會(huì)帶來(lái)性能的下降和成本的增加,因此,故障恢復(fù)設(shè)計(jì)也是一個(gè)尋找故障可能帶來(lái)的損失和增加冗余所帶來(lái)的成本之間的最佳平衡點(diǎn)的過(guò)程。基本的依據(jù)就是應(yīng)用系統(tǒng)對(duì)于故障的承受能力。比如,像銀行等重要的信息系統(tǒng),數(shù)據(jù)庫(kù)通常要采用異地災(zāi)備中心來(lái)備份數(shù)據(jù)。顯然這種冗余備份的日常維護(hù)代價(jià)是很大的,不是普通企業(yè)能夠承受的。但是,它在災(zāi)害發(fā)生時(shí)給企業(yè)帶來(lái)的好處也是明顯的。據(jù)媒體報(bào)道,遭受美國(guó)“911”恐怖襲擊而倒塌的世貿(mào)大廈里,有一些金融機(jī)構(gòu)在事件的數(shù)小時(shí)后就恢復(fù)了業(yè)務(wù),主要就是得益于其完備的數(shù)據(jù)災(zāi)備系統(tǒng)。
因此,故障恢復(fù)系統(tǒng)設(shè)計(jì)時(shí)還要考慮對(duì)系統(tǒng)可用性(system availability)的要求。評(píng)價(jià)一個(gè)系統(tǒng)的可用性程度,通常采用平均無(wú)故障時(shí)間以及平均故障恢復(fù)時(shí)間這兩個(gè)指標(biāo)。平均無(wú)故障時(shí)間是指從上次故障修復(fù)開(kāi)始到本次故障發(fā)生之間無(wú)故障的時(shí)間長(zhǎng)度的平均值。平均故障恢復(fù)時(shí)間是指從故障開(kāi)始到故障修復(fù)為止的時(shí)間的平均值,這兩個(gè)參數(shù)是不一樣的。在實(shí)際應(yīng)用中經(jīng)常會(huì)使用更綜合的一個(gè)指標(biāo),例如,系統(tǒng)的可靠性可以用若干個(gè)“9”來(lái)表示(就像黃金的純度一樣),這是指系統(tǒng)在一年的時(shí)間里最多可以允許的故障總時(shí)間的度量。比如,我們說(shuō)系統(tǒng)的可靠性達(dá)到5個(gè)“9”(也就是99999),意思是一年中最多可發(fā)生故障的總時(shí)間不超過(guò): 一年的總分鐘數(shù)乘上(1-0.99999)=5.256分鐘,也就是在一年中故障總時(shí)間不能超過(guò)5.256分鐘左右。
對(duì)于不同的故障類型以及不同的系統(tǒng)可用性要求,采用的數(shù)據(jù)冗余技術(shù)方案是不一樣的。對(duì)于事務(wù)級(jí)的故障,主要就是采用日志作為數(shù)據(jù)冗余存儲(chǔ)的方案。對(duì)于系統(tǒng)級(jí)的故障,如果允許系統(tǒng)有一段時(shí)間的停機(jī),也可以采用日志作為數(shù)據(jù)冗余的方案。如果不允許系統(tǒng)停機(jī),可以采用備份數(shù)據(jù)庫(kù)(standby database)的方案,即保持一個(gè)具有相同狀態(tài)的數(shù)據(jù)庫(kù)。具體的可以有兩種方案: 一是物理備份數(shù)據(jù)庫(kù)方案,即每一個(gè)主數(shù)據(jù)庫(kù)的數(shù)據(jù)塊都有一個(gè)對(duì)應(yīng)的備用數(shù)據(jù)塊??梢圆捎靡罁?jù)重做日志執(zhí)行重做操作的方法來(lái)實(shí)現(xiàn)。另一個(gè)是邏輯備份數(shù)據(jù)庫(kù)方案,即在備份數(shù)據(jù)庫(kù)上執(zhí)行相同的SQL語(yǔ)句。對(duì)于介質(zhì)級(jí)的故障,最重要的也是要保持一個(gè)數(shù)據(jù)庫(kù)備份。
關(guān)于數(shù)據(jù)庫(kù)備份(也稱數(shù)據(jù)庫(kù)復(fù)制),目前已經(jīng)發(fā)展成為一個(gè)相對(duì)獨(dú)立的、在很多領(lǐng)域有應(yīng)用的技術(shù)分支。例如,在移動(dòng)數(shù)據(jù)庫(kù)中,手持終端上的數(shù)據(jù)其實(shí)是主數(shù)據(jù)庫(kù)的一個(gè)備份,可根據(jù)應(yīng)用需要進(jìn)行單向或者雙向的數(shù)據(jù)復(fù)制(同步)。在分布式數(shù)據(jù)庫(kù)系統(tǒng)或者數(shù)據(jù)網(wǎng)格中,經(jīng)常采用數(shù)據(jù)復(fù)制來(lái)提高系統(tǒng)的整體效率和容錯(cuò)能力。因此,主流數(shù)據(jù)庫(kù)廠商都提供獨(dú)立的數(shù)據(jù)復(fù)制工具選項(xiàng)。