第七章-分布式恢復(fù)優(yōu)秀文檔_第1頁
第七章-分布式恢復(fù)優(yōu)秀文檔_第2頁
第七章-分布式恢復(fù)優(yōu)秀文檔_第3頁
第七章-分布式恢復(fù)優(yōu)秀文檔_第4頁
第七章-分布式恢復(fù)優(yōu)秀文檔_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第七章分布式恢復(fù)

基本概念集中式數(shù)據(jù)庫的故障恢復(fù)方法分布式事務(wù)的恢復(fù)

可靠性(Reliability)

Problem:Howtomaintain(1)atomicity

(2)durabilitySpecificreliabilityprotocolsrelatedinclude:(1)commitprotocols,and(2)recoveryprotocols.§7.1基本概念propertiesoftransactions

可靠性和可用性分布式數(shù)據(jù)庫系統(tǒng)本身的體系結(jié)構(gòu)可提高系統(tǒng)的可靠性和可用性;片段數(shù)據(jù)的重復(fù)存儲和系統(tǒng)采用的恢復(fù)措施等都可提高系統(tǒng)的可靠性和可用性。可靠性和可用性的具體描述如下:可靠性(Reliability)體現(xiàn)下面幾點:?一個系統(tǒng)符合其行為規(guī)范的量度;?系統(tǒng)在給定時間間隔內(nèi)不出故障的概率;?用來描述不可修復(fù)的或要求連續(xù)操作的系統(tǒng)的重要指標(biāo)??捎眯裕ˋvailability)體現(xiàn)下面幾點:?系統(tǒng)可滿足其規(guī)范的時間百分率;?系統(tǒng)在給定時間t上正常運(yùn)行的概率;§7.1基本概念③LRM向日志文件中寫事務(wù)結(jié)束記錄。2集中式數(shù)據(jù)庫的故障恢復(fù)方法因此,在分布式數(shù)據(jù)庫系統(tǒng)中,除了可能出現(xiàn)集中式數(shù)據(jù)庫系統(tǒng)可能出現(xiàn)的故障外,還可能出現(xiàn)分布式數(shù)據(jù)庫系統(tǒng)特有的故障,如:通信鏈路故障等。被提交的事務(wù)的更新數(shù)據(jù)都刷新到外存數(shù)據(jù)庫,處理過程為:①將日志緩沖區(qū)中的內(nèi)容寫入外存中的日志;通常,由于Fault(故障)引發(fā)Error(錯誤);2集中式數(shù)據(jù)庫的故障恢復(fù)方法通常,由于Fault(故障)引發(fā)Error(錯誤);則:undo(T):x=10;?若結(jié)果寫入外存結(jié)束,事務(wù)正確執(zhí)行結(jié)束,數(shù)據(jù)永久化;?用來描述不可修復(fù)的或要求連續(xù)操作的系統(tǒng)的重要指標(biāo)。根據(jù)分布式數(shù)據(jù)庫特點,其故障可歸納如下類型:恢復(fù):沒收到命令的參與者保持等待,協(xié)調(diào)者重新啟動后,

可靠性和可用性之間的差別§7.1基本概念比較項可靠性可用性用途衡量在某時間段內(nèi)系統(tǒng)符合其行為規(guī)范的概率衡量在某個時間點之前系統(tǒng)正常運(yùn)行的概率強(qiáng)調(diào)內(nèi)容系統(tǒng)的正確性系統(tǒng)的可運(yùn)行能力難易程度提高較難提高較容易影響因素數(shù)據(jù)冗余性系統(tǒng)魯棒性和易管理性數(shù)據(jù)庫的可靠性和可用性是相互矛盾的:一方面,提高系統(tǒng)的可靠性往往是以犧牲其可用性作為代價的。例如,我們一旦發(fā)現(xiàn)系統(tǒng)有出錯的危險時,為了提高可靠性,則立即停止系統(tǒng)的工作,使其變得不可用。另一方面,提高系統(tǒng)的可用性往往是以犧牲其可靠性作為代價的。例如,即使我們已經(jīng)預(yù)見了系統(tǒng)出錯的風(fēng)險,但仍然允許系統(tǒng)繼續(xù)工作以保證其可用性。系統(tǒng)出現(xiàn)暫時不一致的狀態(tài),隨后可以利用故障恢復(fù)機(jī)制使系統(tǒng)恢復(fù)正常。故障模型恢復(fù)是數(shù)據(jù)庫系統(tǒng)在系統(tǒng)出現(xiàn)故障的情況下采取的補(bǔ)救措施,使系統(tǒng)恢復(fù)到出錯前的正確狀態(tài),系統(tǒng)恢復(fù)正確后,可繼續(xù)運(yùn)行,不會因系統(tǒng)故障造成數(shù)據(jù)庫損壞和數(shù)據(jù)丟失。歸納系統(tǒng)可能出現(xiàn)的故障,可分為Fault(故障)、Error(錯誤)和Failure(失效)三種故障形式。故障模型(見圖)?!?.1基本概念說明:?刺激:來自外界的影響;?響應(yīng):來自于系統(tǒng)的信息;?內(nèi)部狀態(tài):系統(tǒng)內(nèi)部的狀態(tài);?外部狀態(tài):系統(tǒng)所處環(huán)境內(nèi)的系統(tǒng)的外部狀態(tài);§7.1基本概念下面介紹三種故障形式為:Fault(故障):指系統(tǒng)單元所處的內(nèi)部狀態(tài)發(fā)生的錯誤或系統(tǒng)內(nèi)設(shè)計錯誤。Error(錯誤):指出現(xiàn)了不正確的狀態(tài)。Failure(失效):指系統(tǒng)的外部狀態(tài)中的錯誤。通常,由于Fault(故障)引發(fā)Error(錯誤);由Error(錯誤)導(dǎo)致執(zhí)行失敗,即Failure(失效)。如下圖所示:FaultErrorFailure導(dǎo)致引起CausesResultsin故障類型系統(tǒng)故障常分為兩大類:硬故障和軟故障。硬故障通常是永久的,不能自動修復(fù)。如:系統(tǒng)硬件設(shè)備(永久存儲設(shè)備)的故障導(dǎo)致的系統(tǒng)數(shù)據(jù)丟失故障。硬故障導(dǎo)致的failure(失效),稱為硬失效。這種故障對數(shù)據(jù)庫系統(tǒng)是致命的,應(yīng)盡力避免。軟故障通常是臨時性或間歇性的。如:由于故障使數(shù)據(jù)庫數(shù)據(jù)丟失或出錯,使事務(wù)不能正確提交;系統(tǒng)死鎖或算術(shù)溢出、被零除等造成的系統(tǒng)錯誤等。這些故障大多是臨時性的,多是由于系統(tǒng)不穩(wěn)定造成的,較容易恢復(fù)。如:系統(tǒng)可通過恢復(fù)機(jī)制進(jìn)行恢復(fù)或重新啟動事務(wù)恢復(fù)。通常這些軟故障導(dǎo)致的failure(失效),稱為軟失效。系統(tǒng)的failure90%是軟失效。圖說明了故障的分類。§7.1基本概念§7.1基本概念

分布庫系統(tǒng)中的故障分布式數(shù)據(jù)庫系統(tǒng)主要由結(jié)點及結(jié)點間的通訊鏈路組成。因此,在分布式數(shù)據(jù)庫系統(tǒng)中,除了可能出現(xiàn)集中式數(shù)據(jù)庫系統(tǒng)可能出現(xiàn)的故障外,還可能出現(xiàn)分布式數(shù)據(jù)庫系統(tǒng)特有的故障,如:通信鏈路故障等。根據(jù)分布式數(shù)據(jù)庫特點,其故障可歸納如下類型:(1)

事務(wù)故障事務(wù)故障主要由系統(tǒng)單個事務(wù)或系統(tǒng)死鎖引起的,使事務(wù)被廢棄。如:算術(shù)溢出、被零除、超時、申請資源過多等。通常一個系統(tǒng)約有3%的事務(wù)被異常廢棄。這一類故障不會導(dǎo)致存儲介質(zhì)上的數(shù)據(jù)被破壞,是一種影響性較小的可排除性的局部故障,由系統(tǒng)恢復(fù)機(jī)制自動恢復(fù)或重新啟動事務(wù)來恢復(fù)?!?.1基本概念(2)系統(tǒng)(場地)故障系統(tǒng)(場地)故障主要由處理器、主存、電源、系統(tǒng)過載、系統(tǒng)崩潰等等造成的,往往涉及多個或全部事務(wù),造成系統(tǒng)局部或系統(tǒng)全部出現(xiàn)故障。這類故障使主存的內(nèi)容丟失,但外存的內(nèi)容是安全的。(3)介質(zhì)故障介質(zhì)故障是由于外存設(shè)備故障引起的,如:磁頭壞、驅(qū)動卡壞、扇區(qū)壞等。這類故障對數(shù)據(jù)庫系統(tǒng)是致命的,導(dǎo)致外存數(shù)據(jù)部分或全部丟失。(4)通訊故障通訊故障主要指報文丟失和網(wǎng)絡(luò)分割。報文丟失是指在傳送過程中由于報文丟失而導(dǎo)致的數(shù)據(jù)錯誤。網(wǎng)絡(luò)分割是指系統(tǒng)的一個場地與另一場地失去聯(lián)系,使兩場地間無法通訊。§7.1基本概念集中式數(shù)據(jù)庫的故障分為硬故障和軟故障兩類。故障主要體現(xiàn)在是事務(wù)永久性的,還是間歇性的;是導(dǎo)致了外存數(shù)據(jù)錯誤,還是使內(nèi)存數(shù)據(jù)發(fā)生錯誤。針對可能產(chǎn)生的不同故障,應(yīng)采用相應(yīng)的故障恢復(fù)方法。首先了解一下數(shù)據(jù)庫中數(shù)據(jù)的更新方法、緩沖區(qū)中數(shù)據(jù)更新方法等內(nèi)容。局部恢復(fù)系統(tǒng)的體系結(jié)構(gòu)盡管系統(tǒng)可能有各式各樣的故障,但故障恢復(fù)的系統(tǒng)體系結(jié)構(gòu)是一致的?!?.2集中式數(shù)據(jù)庫的故障恢復(fù)方法Fetch:Getapage.IfthepageisinDBbuffersthentheBufferManagerreturnsit;otherwisethebufferManagerreadsitfromtheStableDBandputsitinbuffers.Analgorithmisneededifthebufferisfull.Flush:ForcepagestobewrittenfrombufferstothestableDB.反做(undo)的冪等率表示為:undo(undo(…T)))=undo(T)(2)系統(tǒng)(場地)故障盡管系統(tǒng)可能有各式各樣的故障,但故障恢復(fù)的系統(tǒng)體系結(jié)構(gòu)是一致的?;謴?fù):沒收到命令的參與者保持等待,協(xié)調(diào)者重新啟動后,給所有參與者重發(fā)其決定的命令。②在參與者群中,若認(rèn)為協(xié)調(diào)者群出故障,則故障恢復(fù)同場地故障的(3)和(4)。緩沖區(qū)更新策略由固定/非固定(fix/non_fix)和刷新/非刷新(flush/no_flush)組合,共組成4種緩沖區(qū)更新策略。即fix/flush、fix/no_flush、non_fix/flush和non_fix/no_flush。10),有下面幾種情況此時沒有任何一個參與者已提交。局部恢復(fù)系統(tǒng)的體系結(jié)構(gòu)2集中式數(shù)據(jù)庫的故障恢復(fù)方法假設(shè)緩沖區(qū)執(zhí)行策略為no_fix/no_flush方式。在故障發(fā)生時,系統(tǒng)的恢復(fù)機(jī)制根據(jù)日志中的信息對系統(tǒng)進(jìn)行恢復(fù),保證數(shù)據(jù)庫狀態(tài)的正確性,維護(hù)系統(tǒng)的一致性??捎眯裕ˋvailability)體現(xiàn)下面幾點:終結(jié)協(xié)議要求所有參與者終結(jié)某事務(wù)的類型要完全一致(或者都提交,或者都廢棄),以保證事務(wù)的原子性。緩沖區(qū)更新策略由固定/非固定(fix/non_fix)和刷新/非刷新(flush/no_flush)組合,共組成4種緩沖區(qū)更新策略。

數(shù)據(jù)庫更新策略

數(shù)據(jù)庫數(shù)據(jù)的更新通常采用兩種更新方法,即原地更新和異地更新。原地更新是指數(shù)據(jù)庫的更新操作直接修改數(shù)據(jù)庫緩沖區(qū)中的舊值。異地更新是指數(shù)據(jù)庫的更新操作將數(shù)據(jù)項新值存在于舊值不同的位置上。如:采用影子頁面(shadowingpage)或采用差分文件方式存儲。影子頁面是指當(dāng)更新數(shù)據(jù)時,不改變舊存儲頁面,而是建一影子頁面,將新值存于新建的影子頁面上。而舊頁面用于故障恢復(fù)。差分文件(F)由只讀部分(FR)加上插入部分(DF+)和刪除部分(DF-)組成,即F=(FR(只讀)∪DF(插入)+)-DF-(刪除)。更新等價于刪除舊值,插入新值完成。

§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法

緩沖區(qū)更新策略緩沖區(qū)更新策略由固定/非固定(fix/non_fix)和刷新/非刷新(flush/no_flush)組合,共組成4種緩沖區(qū)更新策略。即fix/flush、fix/no_flush、non_fix/flush和non_fix/no_flush。固定/非固定(fix/non_fix)是指緩沖區(qū)管理器是否等到局部恢復(fù)管理器(LRM)發(fā)的命令后,才將緩沖區(qū)中修改的內(nèi)容寫到外存數(shù)據(jù)庫。刷新/非刷新(flush/no_flush)是指在事務(wù)執(zhí)行結(jié)束后,局部恢復(fù)管理器(LRM)是否強(qiáng)制緩沖區(qū)管理器將其中已修改的數(shù)據(jù)寫回外存數(shù)據(jù)庫。§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法

不同執(zhí)行策略的恢復(fù)要求

fix/flush方式廢棄事務(wù)時沒有將修改的數(shù)據(jù)寫入外存。因為在事務(wù)結(jié)束之前,所修改的數(shù)據(jù)頁面已被固定,直到事務(wù)提交時,才被釋放。同時需釋放所有被固定的頁面。被提交事務(wù)的更新數(shù)據(jù)都刷新到外存數(shù)據(jù)庫。其處理過程:①LRM向緩沖區(qū)管理器發(fā)flush命令,將更新數(shù)據(jù)刷新到外存;②LRM向緩沖區(qū)管理器發(fā)unfix命令釋放所有被固定的頁面;③LRM向日志文件中寫事務(wù)結(jié)束記錄。該種執(zhí)行策略對廢棄事務(wù)不需做任何恢復(fù)操作?!?.2集中式數(shù)據(jù)庫的故障恢復(fù)方法不同執(zhí)行策略的恢復(fù)要求fix/noflush方式廢棄事務(wù)沒有將修改的數(shù)據(jù)寫入外存。被提交的事務(wù)的更新數(shù)據(jù)可能沒有被刷新到外存數(shù)據(jù)庫。因為其處理過程為:①LRM向日志文件中寫事務(wù)結(jié)束記錄;②LRM向緩沖區(qū)管理器發(fā)unfix命令釋放所有被固定的頁面。該種執(zhí)行策略的事務(wù)恢復(fù)需執(zhí)行部分重做(redo),不需執(zhí)行全局反做(undo)處理。§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法no_fix/flush方式--廢棄事務(wù)的部分結(jié)果可能已被寫入外存。被提交的事務(wù)的更新數(shù)據(jù)都刷新到外存數(shù)據(jù)庫,處理過程為:①LRM向緩沖區(qū)管理器發(fā)flush命令,將更新數(shù)據(jù)刷新到外存;②LRM向日志文件中寫事務(wù)結(jié)束記錄。該種執(zhí)行策略的事務(wù)恢復(fù)操作應(yīng)需對事務(wù)全部進(jìn)行反做(undo)處理,不需要重做(redo)。§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法

no_fix/no_flush方式–

廢棄事務(wù)的部分修改的數(shù)據(jù)可能已寫入外存。被提交的事務(wù)的更新數(shù)據(jù)可能沒有被刷新到外存數(shù)據(jù)庫。因為其處理過程為:

LRM向日志文件中寫事務(wù)結(jié)束記錄。該種執(zhí)行策略的事務(wù)恢復(fù)操作過程為:①LRM對日志中只有“begin”,沒有“end”的事務(wù)全部進(jìn)行反做(undo)處理;②LRM對日志中既有“begin”,又有“end”的事務(wù)部分進(jìn)行重做(redo)處理;

§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法

數(shù)據(jù)庫日志文件(log)數(shù)據(jù)庫日志文件是用來保存恢復(fù)信息的數(shù)據(jù)文件。一個事務(wù)的完成,不僅僅是操作序列的執(zhí)行,還必需將事務(wù)執(zhí)行信息寫入日志文件。在故障發(fā)生時,系統(tǒng)的恢復(fù)機(jī)制根據(jù)日志中的信息對系統(tǒng)進(jìn)行恢復(fù),保證數(shù)據(jù)庫狀態(tài)的正確性,維護(hù)系統(tǒng)的一致性。如下圖所示:舊的穩(wěn)定的數(shù)據(jù)庫狀態(tài)更新操作新的穩(wěn)定的數(shù)據(jù)庫狀態(tài)數(shù)據(jù)庫日志在日志中,系統(tǒng)的運(yùn)行情況以運(yùn)行記錄的形式存放,日志中具體存放信息如下:(1)數(shù)據(jù)日志記錄內(nèi)容為:?事務(wù)標(biāo)識符;?操作類型;?操作的數(shù)據(jù)項;?數(shù)據(jù)項的舊值;?數(shù)據(jù)項的新值;(2)命令日志記錄內(nèi)容為:?事務(wù)標(biāo)識符;?命令(如:begin,abort,commit);§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法

(3)

檢查點日志記錄檢查點是在日志中周期設(shè)定的操作標(biāo)志,目的是減少系統(tǒng)故障后的恢復(fù)的工作量。在檢查點上,需要完成的操作:①將日志緩沖區(qū)中的內(nèi)容寫入外存中的日志;②在外存日志中登記一個檢查點記錄;③將數(shù)據(jù)庫緩沖區(qū)的內(nèi)容寫入外存數(shù)據(jù)庫;④把外存日志中檢查點的地址寫入重啟動文件。使檢查點以前的工作持久化。當(dāng)系統(tǒng)出現(xiàn)故障時,只對最近的檢查點以后的操作進(jìn)行恢復(fù)處理?!?.2集中式數(shù)據(jù)庫的故障恢復(fù)方法§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法

基本的恢復(fù)操作系統(tǒng)故障發(fā)生時,造成數(shù)據(jù)庫不一致狀態(tài)的原因為:①一些未完成事務(wù)對數(shù)據(jù)庫的更新已寫入外存數(shù)據(jù)庫;②一些已提交事務(wù)對數(shù)據(jù)庫的更新還沒寫入外存數(shù)據(jù)庫。因此,基本的恢復(fù)操作分兩類,即反做(undo)和重做(redo)。反做(undo)也稱撤消。(1)反做(undo)

反做(undo)是將一個數(shù)據(jù)項的值恢復(fù)到其修改之前的值,即取消一個事務(wù)所完成的操作結(jié)果(見圖所示)。當(dāng)一個事務(wù)尚沒提交時,如果緩沖區(qū)管理器允許該事務(wù)修改過的數(shù)據(jù)寫到外存數(shù)據(jù)庫,一旦此事務(wù)出現(xiàn)故障需廢棄時,就需對被這個事務(wù)修改過的數(shù)據(jù)項進(jìn)行反做(undo),即恢復(fù)到其前像。反做(undo)保持?jǐn)?shù)據(jù)庫的原子性?!?.2集中式數(shù)據(jù)庫的故障恢復(fù)方法(2)重做(redo)

重做(redo)是將一個數(shù)據(jù)項的值恢復(fù)到其修改后的值,即恢復(fù)一個事務(wù)的操作結(jié)果(見圖7.5所示)。當(dāng)一個事務(wù)提交時,如果緩沖區(qū)管理器允許該事務(wù)修改過的數(shù)據(jù)不立刻寫到外存數(shù)據(jù)庫,一旦此事務(wù)出現(xiàn)故障,需對被這個事務(wù)修改過的數(shù)據(jù)項進(jìn)行重做(redo),即恢復(fù)到其后像。重做(redo)保持?jǐn)?shù)據(jù)庫的永久性?!?.2集中式數(shù)據(jù)庫的故障恢復(fù)方法例7.2.2有數(shù)據(jù)項x,x值為10。設(shè)有一事務(wù)T,執(zhí)行操作x=20。若執(zhí)行過程中出現(xiàn)錯誤,則:undo(T):x=10; redo(T):x=20;(3)重做(redo)和反做(undo)基本特性如果在進(jìn)行反做(undo)處理時又發(fā)生了故障,則要重新進(jìn)行反做(undo)處理,所以對一事務(wù)的一次或多次反做(undo)處理應(yīng)是等價的,該特性稱為反做(undo)的冪等率。反做(undo)的冪等率表示為:undo(undo(…T)))=undo(T)同理,重做(redo)也有冪等率特性。重做(redo)的冪等率表示為:redo(redo(…T)))=redo(T)重做(redo)和反做(undo)冪等率說明,對一個事務(wù)T執(zhí)行任意多次redo/undo操作,其效果應(yīng)與執(zhí)行一次redo/undo操作的結(jié)果相同。§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法

先寫日志協(xié)議(WAL(Write_aheadlogging))系統(tǒng)的故障恢復(fù)是以日志文件為基礎(chǔ)完成的,因此,要求事務(wù)在執(zhí)行過程中滿足先寫日志協(xié)議(WAL)。當(dāng)系統(tǒng)發(fā)生故障時,可有效地采用重做(redo)和反做(undo)兩個基本恢復(fù)操作進(jìn)行恢復(fù)。先寫日志協(xié)議(WAL)含義:(1)

在外存數(shù)據(jù)庫被更新之前,應(yīng)將日志文件中的反做信息寫入外存文件;(2)

事務(wù)提交之前,日志文件中的有關(guān)重做信息應(yīng)在外存數(shù)據(jù)庫更新之前寫入外存文件?!?.2集中式數(shù)據(jù)庫的故障恢復(fù)方法對內(nèi)存信息丟失故障的恢復(fù)處理方法假設(shè)緩沖區(qū)執(zhí)行策略為no_fix/no_flush方式。no_fix/no_flush方式故障表現(xiàn)為:廢棄事務(wù)的部分修改的數(shù)據(jù)可能已寫入外存;被提交的事務(wù)的更新數(shù)據(jù)可能沒有被刷新到外存數(shù)據(jù)庫。因此,其恢復(fù)操作過程為:對日志中只有“begin”,沒有“end”的事務(wù)全部進(jìn)行反做(undo)處理;對日志中既有“begin”,又有“end”的事務(wù)部分進(jìn)行重做(redo)處理。(1)故障分析事務(wù)的執(zhí)行過程用樹型結(jié)構(gòu)圖(見圖)來說明。事務(wù)執(zhí)行過程為:?事務(wù)或執(zhí)行結(jié)束①或中斷即廢棄②。若廢棄,需反做(undo)處理,結(jié)束事務(wù);若執(zhí)行結(jié)束,進(jìn)行提交③或發(fā)生故障廢棄④。?若廢棄,反做(undo)處理,結(jié)束事務(wù);若正確提交,將結(jié)果寫入外存⑤或發(fā)生故障部分結(jié)果未寫入外存⑥。?若結(jié)果寫入外存結(jié)束,事務(wù)正確執(zhí)行結(jié)束,數(shù)據(jù)永久化;若部分結(jié)果未寫入外存,需重做(redo)處理,結(jié)束事務(wù)?!?.2集中式數(shù)據(jù)庫的故障恢復(fù)方法No-fix/no-flushflush(2)故障恢復(fù)當(dāng)事務(wù)執(zhí)行中出現(xiàn)故障時,需對事務(wù)進(jìn)行重做(redo)和反做(undo)恢復(fù)處理,具體恢復(fù)過程為:①

恢復(fù)子系統(tǒng)首先從重啟動文件中取得最近的檢查點的地址,然后建立兩個表:重做表和反做表。初始化兩表,重做表初態(tài)為空;反做表初態(tài)為檢查點上活動事務(wù)。活動事務(wù)指檢查點上還沒有結(jié)束的事務(wù)。②

確定反做事務(wù)表(undo表):在日志中從檢查點向前搜索,直到日志結(jié)尾。找出只有B記錄沒有C記錄的事務(wù),即在系統(tǒng)故障時未結(jié)束的事務(wù),寫入反做事務(wù)表。③

確定重做事務(wù)表(redo表):從檢查點向前搜索,找出既有B記錄也有C記錄的事務(wù)(將該事務(wù)從undo表刪除),直到日志結(jié)尾,即在系統(tǒng)故障時已經(jīng)提交但部分結(jié)果未寫入外存的事務(wù),寫入重做事務(wù)表。④

反做(undo)反做事務(wù)表中的所有事務(wù)。根據(jù)日志反向進(jìn)行撤消操作,直到相應(yīng)事務(wù)的B(begintransaction).④

重做(redo)重做事務(wù)表中的所有事務(wù)。根據(jù)日志從檢查點正向進(jìn)行重做操作,直到相應(yīng)事務(wù)的C(committransaction)。

§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法§7.2集中式數(shù)據(jù)庫的故障恢復(fù)方法

外存信息丟失故障的恢復(fù)外存信息丟失分兩種情況:(1)數(shù)據(jù)庫損壞,日志文件正常;(2)數(shù)據(jù)庫和日志都被破壞。對于數(shù)據(jù)庫損壞,而日志文件正常的恢復(fù)方法是首先恢復(fù)最近的數(shù)據(jù)庫備份與相應(yīng)的日志,然后根據(jù)日志文件重做(redo)所有提交的事務(wù)(見圖所示)。對數(shù)據(jù)庫和日志都被破壞的故障恢復(fù)是利用備份數(shù)據(jù)庫和相應(yīng)日志恢復(fù)到最近可用的數(shù)據(jù)庫狀態(tài)。數(shù)據(jù)庫當(dāng)前數(shù)據(jù)庫最新數(shù)據(jù)庫日志當(dāng)前日志圖7.7數(shù)據(jù)庫損壞、日志文件正常的故障恢復(fù)示意圖

通信故障通信故障有兩種:報文丟失和網(wǎng)絡(luò)分割。若存在兩個結(jié)點A和B,報文丟失指A最大延遲內(nèi)沒有收到B發(fā)來的報文。網(wǎng)絡(luò)分割指網(wǎng)絡(luò)被斷開或存在兩個以上不相聯(lián)接的子網(wǎng)。如果系統(tǒng)不存在通信故障,則應(yīng)表現(xiàn)如下情況:(1)收到的報文內(nèi)容及報文順序均正確;(2)無超時錯誤發(fā)生。無超時錯誤指在發(fā)送報文后,在規(guī)定的延遲時間內(nèi)應(yīng)收到返回的應(yīng)答信息。另外,除網(wǎng)絡(luò)分割可能造成報文丟失外,場地故障也可造成報文丟失。根據(jù)分布式數(shù)據(jù)庫系統(tǒng)的特征,分布事務(wù)的執(zhí)行是分解為若干個不同場地上的子事務(wù)的執(zhí)行。因此,分布事務(wù)提交的先決條件是分布事務(wù)的所有子事務(wù)必須全部提交,否則事務(wù)全部廢棄。為使分布式事務(wù)正確提交,通常采用兩段提交協(xié)議(2PC)即基本的兩階段提交協(xié)議?!?.3分布式事務(wù)的恢復(fù)

具有恢復(fù)功能的兩段提交協(xié)議(2PC)兩段提交協(xié)議(2PC)兩段提交協(xié)議(2PC)的思想概括地說是事務(wù)提交分兩個階段:決定階段和執(zhí)行階段。決定階段是作出提交/廢棄的決定;執(zhí)行階段實現(xiàn)決定階段的決定。具體可用下面流程圖描述(見圖)。為說明兩段提交協(xié)議,先介紹幾個擴(kuò)充的日志記錄:?Prepare記錄:內(nèi)容為事務(wù)標(biāo)識(tid),Prepare代碼;?Ready記錄:內(nèi)容為事務(wù)標(biāo)識(tid),Ready代碼;?Complete記錄:內(nèi)容為事務(wù)標(biāo)識(tid),Complete代碼。Prepare記錄、Ready記錄和Complete記錄簡稱P記錄、R記錄和C記錄。

§7.3分布式事務(wù)的恢復(fù)步驟1:選擇一個參與者作為新的協(xié)調(diào)者。2集中式數(shù)據(jù)庫的故障恢復(fù)方法?外部狀態(tài):系統(tǒng)所處環(huán)境內(nèi)的系統(tǒng)的外部狀態(tài);②

確定反做事務(wù)表(undo表):在日志中從檢查點向前搜索,直到日志結(jié)尾。在網(wǎng)絡(luò)分割故障中,采用的故障恢復(fù)思想是:先將網(wǎng)絡(luò)中所有場地結(jié)點分為兩大區(qū),包含協(xié)調(diào)者的分區(qū)和不包含協(xié)調(diào)者的分區(qū)。針對可能產(chǎn)生的不同故障,應(yīng)采用相應(yīng)的故障恢復(fù)方法。②在外存日志中登記一個檢查點記錄;通常一個系統(tǒng)約有3%的事務(wù)被異常廢棄。2有數(shù)據(jù)項x,x值為10。在故障恢復(fù)前,參與者的行為始終停留不前,子事務(wù)所占有的系統(tǒng)資源也不能被釋放,這時我們稱事務(wù)進(jìn)入了阻塞狀態(tài)。2集中式數(shù)據(jù)庫的故障恢復(fù)方法propertiesoftransactions則:undo(T):x=10;則:undo(T):x=10;(3)重做(redo)和反做(undo)基本特性為提高系統(tǒng)的可用性,提出了終結(jié)協(xié)議(Terminationprotocols)。fix/flush方式§7.3分布式事務(wù)的恢復(fù)場地故障的恢復(fù)處理兩段提交協(xié)議(2PC)具有恢復(fù)場地故障和通信故障的特性,下面以兩段提交協(xié)議(2PC)實現(xiàn)的概要圖(圖7.9),對場地故障的恢復(fù)進(jìn)行描述。§7.3分布式事務(wù)的恢復(fù)場地故障分析:(1)

故障:在參與者場地,參與者在寫R/A記錄之前出錯。此時,協(xié)調(diào)者發(fā)完P(guān)repare命令后在規(guī)定時間內(nèi)收不到應(yīng)答信息?;謴?fù):協(xié)調(diào)者發(fā)現(xiàn)超時,做Abort處理,即缺省認(rèn)為收到Abort應(yīng)答?!?.3分布式事務(wù)的恢復(fù)恢復(fù):故障場地重新啟動,向協(xié)調(diào)者或其它場地重新請求命令(C/A)。場地故障分析:(2)故障:在參與者場地,參與者在寫R/A記錄之后,寫C/A記錄之前出錯?;謴?fù):故障場地重新啟動,向協(xié)調(diào)者或其它場地重新請求命令(C/A)?!?.3分布式事務(wù)的恢復(fù)場地故障分析:(3)故障:在協(xié)調(diào)者場地,協(xié)調(diào)者在寫P記錄之后,寫C/A記錄之前出錯?;謴?fù):協(xié)調(diào)者重新啟動后,重新執(zhí)行2PC協(xié)議?!?.3分布式事務(wù)的恢復(fù)恢復(fù):協(xié)調(diào)者重新啟動后,重新執(zhí)行2PC協(xié)議。場地故障分析:(4)故障:在協(xié)調(diào)者場地,協(xié)調(diào)者在寫C/A記錄之后,寫Complete記錄之前出錯。恢復(fù):沒收到命令的參與者保持等待,協(xié)調(diào)者重新啟動后,給所有參與者重發(fā)其決定的命令?;謴?fù):沒收到命令的參與者保持等待,協(xié)調(diào)者重新啟動后,給所有參與者重發(fā)其決定的命令?!?.3分布式事務(wù)的恢復(fù)通信故障的恢復(fù)通信故障分報文丟失和網(wǎng)絡(luò)分割兩種。通信故障的直觀表現(xiàn)是造成傳輸信息的丟失。丟失的信息可分為命令信息、響應(yīng)信息及數(shù)據(jù)庫信息。當(dāng)命令或響應(yīng)信息丟失時,直接影響事務(wù)的實現(xiàn)。(1)報文丟失故障的恢復(fù)根據(jù)丟失的報文信息類型(見圖),有下面幾種情況:①丟失P命令報文;②丟失R/A響應(yīng)報文;③丟失C/A命令報文;④丟失ACK響應(yīng)報文;§7.3分布式事務(wù)的恢復(fù)根據(jù)丟失的報文信息類型(見圖7.10),有下面幾種情況①丟失P命令報文:協(xié)調(diào)者保持等待,發(fā)現(xiàn)超時,作“Abort”處理,即缺省收到Abort廢棄響應(yīng)。②丟失R/A響應(yīng)報文:同“丟失P命令報文”處理,既協(xié)調(diào)者保持等待,發(fā)現(xiàn)超時,作“Abort”處理。③丟失C/A命令報文:參與者利用超時機(jī)制,要求協(xié)調(diào)者重發(fā)C/A命令。④丟失ACK響應(yīng)報文:協(xié)調(diào)者利用超時機(jī)制,向參與者重發(fā)C/A命令,要求參與者給予應(yīng)答。§7.3分布式事務(wù)的恢復(fù)(2)網(wǎng)絡(luò)分割故障的恢復(fù)處理在網(wǎng)絡(luò)分割故障中,采用的故障恢復(fù)思想是:先將網(wǎng)絡(luò)中所有場地結(jié)點分為兩大區(qū),包含協(xié)調(diào)者的分區(qū)和不包含協(xié)調(diào)者的分區(qū)。包含協(xié)調(diào)者的分區(qū)稱協(xié)調(diào)者群;不包含協(xié)調(diào)者的分區(qū)稱參與者群。之后,分兩種情況進(jìn)行恢復(fù)處理:①在協(xié)調(diào)者群中,若認(rèn)為參與者群出故障,則故障恢復(fù)同場地故障的(1)和(2)。②在參與者群中,若認(rèn)為協(xié)調(diào)者群出故障,則故障恢復(fù)同場地故障的(3)和(4)?!?.3分布式事務(wù)的恢復(fù)在兩段提交協(xié)議執(zhí)行的過程中,如果出現(xiàn)協(xié)調(diào)者故障或網(wǎng)絡(luò)故障,使得參與者不能及時收到協(xié)調(diào)者發(fā)送的“提交”命令時,那么參與者將處于等待狀態(tài),直到獲得所需要的信息后才可以做出決定。在故障恢復(fù)前,參與者的行為始終停留不前,子事務(wù)所占有的系統(tǒng)資源也不能被釋放,這時我們稱事務(wù)進(jìn)入了阻塞狀態(tài)。處于阻塞狀態(tài)事務(wù)掛在相應(yīng)的執(zhí)行場地上,所占用的系統(tǒng)資源也不能被其它事務(wù)利用。由此可見,這種事務(wù)阻塞降低了系統(tǒng)的可靠性和可用性。為提高系統(tǒng)的可用性,提出了終結(jié)協(xié)議(Terminationprotocols)。它允許一個事務(wù)在故障情況下仍能正確地結(jié)束,從而減少事務(wù)阻塞時間。§7.4終結(jié)協(xié)議的提出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論