第7章-故障恢復(fù)課件_第1頁
第7章-故障恢復(fù)課件_第2頁
第7章-故障恢復(fù)課件_第3頁
第7章-故障恢復(fù)課件_第4頁
第7章-故障恢復(fù)課件_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章故障恢復(fù)學(xué)習目的和要求◆事務(wù)管理概況◆故障恢復(fù)導(dǎo)論◆日志結(jié)構(gòu)◆更新事務(wù)的執(zhí)行與恢復(fù)◆消息的處理◆失效的類型及恢復(fù)對策7/23/20231DesignedbyTaoHongcai7.1事務(wù)管理概況

事務(wù)概念:有時,某個工作的完成要分若干步驟。只有所有步驟都成功做完,則該項工作才完成;否則,其中任一步失敗,該工作亦失敗。針對此類工作特點,引入“事務(wù)”(Transactoin)概念。在DBMS中,定義此類工作為事務(wù),并保證其執(zhí)行特點。一.事務(wù)基本概念

事務(wù)的執(zhí)行保證:DBMS應(yīng)保證事務(wù)執(zhí)行特點以及數(shù)據(jù)庫的數(shù)據(jù)完整性。如果事務(wù)執(zhí)行成功,DBMS應(yīng)保證事務(wù)中所有步驟對數(shù)據(jù)的更新有效;若事務(wù)失敗,DBMS應(yīng)撤銷“已執(zhí)行步驟”對數(shù)據(jù)的更新。

事務(wù)典型事例:銀行A、B兩個帳戶間的轉(zhuǎn)帳工作。該工作分二步來完成,第一步,從A帳戶劃出X款項,第二步,向B帳戶劃入X款項。只有這兩步都完成了,該轉(zhuǎn)帳工作才完成。否則,任一步失敗,則該轉(zhuǎn)帳工作失敗。7/23/20232DesignedbyTaoHongcai

事務(wù)的組成及執(zhí)行:事務(wù)是DBMS的最小執(zhí)行單位,由有限的數(shù)據(jù)庫操作序列組成,也是最小的故障恢復(fù)單位和并發(fā)控制單位。

DBMS中的事務(wù)控制:

(1)

隱式的事務(wù)控制:默認情況下,DBMS一般將一個數(shù)據(jù)庫操作(如一條SQL語句)當作一個事務(wù)來控制執(zhí)行。

(2)

顯式的事務(wù)控制:對涉及多步操作的(一般含多條SQL語句)、有事務(wù)特點的工作,則需要人為地、顯式地將這些操作“界定”組合成一個事務(wù)交DBMS控制執(zhí)行。

說明:事實上,有時一條SQL語句的工作也有事務(wù)特點,例如一條刪除多行數(shù)據(jù)的SQL語句。

說明:對數(shù)據(jù)庫的操作必須自成/組合為一個事務(wù)單位,以事務(wù)為最小的單位執(zhí)行之;在并發(fā)執(zhí)行時,亦是以事務(wù)為單位進行;在事務(wù)不完整、需要恢復(fù)數(shù)據(jù)時,仍然是以事務(wù)為單位進行。7/23/20233DesignedbyTaoHongcai

事務(wù)的地位:是DBMS中并發(fā)執(zhí)行(ConcurrentExecution)和故障恢復(fù)(Recoveryfromsystemfailure)的基礎(chǔ)。有關(guān)概念:

DB對象:程序R/W信息的單位(如頁、記錄等);

讀DB對象:從磁盤讀入內(nèi)存,再送程序變量中;

寫DB對象:修改內(nèi)存中對象副本,后寫入磁盤。

SYBASE/SQLSERVER提供的界定事務(wù)的常用語句:

①BEGIN{TRANSACTION|TRAN|WORK}[事務(wù)名]

②ROLLBACK{TRANSACTION|TRAN|WORK}[事務(wù)名]

③COMMIT{TRANSACTION|TRAN|WORK}[事務(wù)名]7/23/20234DesignedbyTaoHongcai二.事務(wù)的ACID準則

(1)原子性(Atomicity):事務(wù)中的所有操作要么成功執(zhí)行,要么都不執(zhí)行(NothingorAll)。其保證由事務(wù)管理器(TransactionManager)負責,“提交(Commit)”和“回退(Rollback)”操作是其中的關(guān)鍵。

①COMMIT表明事務(wù)成功結(jié)束:告訴事務(wù)管理器事務(wù)成功完成,DB又處于一致狀態(tài),該事務(wù)的所有更新操作現(xiàn)可被提交或永久保留。

DBMS為保證在并發(fā)訪問和故障情況下對數(shù)據(jù)的維護,要求事務(wù)有如下四個重要特征或準則(ACID):

②ROLLBACK表明事務(wù)不成功結(jié)束:告訴事務(wù)管理器出現(xiàn)故障,DB可能處于不一致狀態(tài),該事務(wù)中已做的所有更新操作必須回退或撤銷(Undo)。事務(wù)回退后,DB又處于一致狀態(tài)。

說明:7/23/20235DesignedbyTaoHongcai

(2)一致性(Consistency):在無其它事務(wù)并發(fā)執(zhí)行時,單獨運行的事務(wù)應(yīng)保證DB從一個一致狀態(tài)轉(zhuǎn)到另一個一致狀態(tài),但事務(wù)內(nèi)勿需保證一致性。該特性的一部分需由用戶負責。

(4)持久性(Durability):一旦DBMS告訴用戶事務(wù)成功執(zhí)行,其對數(shù)據(jù)庫的影響應(yīng)是持久的,即使事務(wù)導(dǎo)致的變化在寫盤之前系統(tǒng)崩潰仍應(yīng)如此。該特性和第一個特性由故障恢復(fù)通過日志負責。

(3)隔離性(Isolation):DBMS為改善性能要交錯執(zhí)行幾個事務(wù)的操作,但要求這些并發(fā)執(zhí)行的事務(wù),對用戶而言象是單獨執(zhí)行一樣。該特性由并發(fā)控制負責。7/23/20236DesignedbyTaoHongcai三.事務(wù)管理的內(nèi)容

①由于出現(xiàn)異常,中途中止或不成功退出;

③遇到如不能訪盤等異常狀態(tài)而中止。引起事務(wù)不完全的三個故障原因:

ACID準則的保證:不僅在系統(tǒng)正常如此,在系統(tǒng)故障時也應(yīng)如此;在單個事務(wù)執(zhí)行時如此,在事務(wù)并發(fā)執(zhí)行時也應(yīng)如此。

②可能因電源等故障,系統(tǒng)崩潰;

故障恢復(fù)(CrashRecovery):保證事務(wù)在故障時滿足ACID準則的技術(shù);

并發(fā)控制(ConcurrencyControl):保證事務(wù)在并發(fā)執(zhí)行時滿足ACID準則的技術(shù);

事務(wù)管理(TransactionManagement):故障恢復(fù)和并發(fā)控制的合稱。7/23/20237DesignedbyTaoHongcai7.2故障恢復(fù)導(dǎo)論

概念:周期性(天、周)轉(zhuǎn)儲(Dump)DB到磁帶上。

故障→數(shù)據(jù)丟失→數(shù)據(jù)恢復(fù)。

備份時間:一般在夜間、周末;一.單純以后備副本為基礎(chǔ)的恢復(fù)技術(shù)

改進方法:增量轉(zhuǎn)儲(IncrementalDumping,ID),只轉(zhuǎn)儲修改過的物理塊,減少轉(zhuǎn)儲時間、存儲空間和數(shù)據(jù)丟失。

技術(shù)特點:實現(xiàn)簡單,缺點是不能恢復(fù)到盡可能近一點的一致狀態(tài)。只適用于小型或不重要DBS。

備份副本(Copy):恢復(fù)丟失數(shù)據(jù)的手段。

恢復(fù):主要指恢復(fù)DB本身,即在故障引起DB當前狀態(tài)不一致后,將DB恢復(fù)到某個正確狀態(tài)或一致狀態(tài)。要恢復(fù),必冗余(Redundancy)。

恢復(fù)方法:DB失效時,取最近的后備副本來恢復(fù)DB。7/23/20238DesignedbyTaoHongcai二.以后備副本和日志為基礎(chǔ)的恢復(fù)技術(shù)

前像(BI):事務(wù)更新DB所涉及物理塊更新前的映象(BeforeImage,BI)。如撤銷(Undo)更新,可使DB恢復(fù)到更新前的狀態(tài)。

日志(Log):供恢復(fù)用的DB運行情況的記錄。其內(nèi)容有:前像、后像和事務(wù)狀態(tài)。

后像(AI):事務(wù)更新DB所涉及物理塊更新后的映象(AfterImage,AI)。如重做(Redo)更新,可使DB恢復(fù)到更新后的狀態(tài)。

事務(wù)狀態(tài):根據(jù)事務(wù)狀態(tài)變遷,事務(wù)狀態(tài)有:活動狀態(tài)、操作結(jié)束、事務(wù)提交、事務(wù)結(jié)束、事務(wù)失敗、回退。7/23/20239DesignedbyTaoHongcai

系統(tǒng)處理:事務(wù)一旦開始,即記入日志,并跟蹤事務(wù)兩種狀態(tài),一是活動狀態(tài)(以記錄正在執(zhí)行的事務(wù)),二是提交狀態(tài)(以區(qū)分事務(wù)是否提交)。

恢復(fù)方法:故障排除后,先取最近副本,然后根據(jù)日志中的事務(wù)是否提交作相應(yīng)處理。對未提交事務(wù),應(yīng)用前像回退;對已提交事務(wù)一般用后像重做。

事務(wù)的兩種結(jié)局:①提交而結(jié)束,其對DB的更新才能被其它事務(wù)訪問;②事務(wù)失敗,事務(wù)所作的DB更新必須回退。

故障事務(wù)處理的依據(jù):事務(wù)是已提交,還是未提交。7/23/202310DesignedbyTaoHongcai三.基于多副本的恢復(fù)技術(shù)

NOS/OS級的可靠性技術(shù):鏡像磁盤(MirroringDisk)、雙工磁盤(DuplexDisk)、鏡像服務(wù)器(MirroringServer)、群集(Cluster)系統(tǒng)。

方法:利用多副本互為備份、恢復(fù)。

DBMS級的可靠性技術(shù):數(shù)據(jù)庫復(fù)制(Replication)、數(shù)據(jù)庫鏡像、日志鏡像。數(shù)據(jù)復(fù)制要求:DBMS須采取一定手段用戶對DB的修改能及時反映到所有副本上。數(shù)據(jù)復(fù)制技術(shù):在多個場地保留多個數(shù)據(jù)庫副本,各個場地的用戶可以并發(fā)地存取不同的數(shù)據(jù)庫副本。通過分布式的復(fù)制服務(wù)器(ReplicationServer)實現(xiàn)。數(shù)據(jù)復(fù)制優(yōu)點:(1)

當一個用戶為修改數(shù)據(jù)加鎖時,其他用戶可訪問數(shù)據(jù)庫副本;(2)

當數(shù)據(jù)庫出現(xiàn)故障時,系統(tǒng)可用副本進行聯(lián)機恢復(fù),恢復(fù)過程中,用戶可繼續(xù)訪問副本而不中斷應(yīng)用。7/23/202311DesignedbyTaoHongcai

對等復(fù)制:是理想的復(fù)制方式。各場地DB地位平等,可互相復(fù)制數(shù)據(jù)。用戶可在任一場地讀取/更新公共數(shù)據(jù),DBMS應(yīng)將更新數(shù)據(jù)復(fù)制到所有副本。

數(shù)據(jù)庫復(fù)制的三種方式:對等(peer-to-peer)復(fù)制、主從(master/slave)復(fù)制和級聯(lián)(cascade)復(fù)制。

主從復(fù)制:數(shù)據(jù)只能從主DB復(fù)制到從DB。更新數(shù)據(jù)也只能在主場地進行,從場地供用戶讀數(shù)據(jù)。當主場地出現(xiàn)故障時,更新數(shù)據(jù)的應(yīng)用可轉(zhuǎn)到某一從場地。7/23/202312DesignedbyTaoHongcai級聯(lián)復(fù)制:從主場地復(fù)制來的數(shù)據(jù)又從該場地復(fù)制到其他場地。級聯(lián)復(fù)制可平衡當前各種數(shù)據(jù)需求對網(wǎng)絡(luò)流量的壓力。7/23/202313DesignedbyTaoHongcai數(shù)據(jù)庫鏡像:DBMS為避免磁盤介質(zhì)故障,提供日志與數(shù)據(jù)庫鏡像,由DBMS根據(jù)DBA要求,自動將整個DB或其中關(guān)鍵數(shù)據(jù)復(fù)制到另一個磁盤上。當主DB更新時,DBMS自動將更新后的數(shù)據(jù)復(fù)制過去。出現(xiàn)介質(zhì)故障時,可由鏡像磁盤提供應(yīng)用服務(wù),并利用它進行數(shù)據(jù)庫恢復(fù)。其實現(xiàn)是通過復(fù)制數(shù)據(jù)進行。7/23/202314DesignedbyTaoHongcai7.3日志

日志(Log)記錄:DB恢復(fù)所必需的數(shù)據(jù)。一.日志基本內(nèi)容(不同DBMS略有差別)

①活動事務(wù)表(ActiveTransactionList,ATL):記錄正在執(zhí)行、尚未提交的事務(wù)標識符(TransactionIdentifier,TID)。日志及DB的存放:日志丟失→DB無法恢復(fù)→日志、DB分別存放(分區(qū)、磁盤、磁帶副本)。

②提交事務(wù)表(CommittedTransactionList,CTL):記錄已提交事務(wù)的標識符。

注意:提交時,要提交的TID→CTL,從ATL中刪除該TID。

③前像(BI)文件:可看成堆(Heap)文件,每個物理塊有塊標識符(BlockIdentifier,BID)。

④后像(AI)文件:結(jié)構(gòu)類似前像文件,但其記錄的是后像。7/23/202315DesignedbyTaoHongcai

②回退時,從前像文件中找出該事務(wù)所有前像塊,按邏輯塊號寫入關(guān)系對應(yīng)塊中。

③恢復(fù)時,可按CTL中的事務(wù)次序,按邏輯塊號寫入后像。

說明:

①BID組成:TID、關(guān)系名、邏輯塊號。TID為執(zhí)行更新操作的事務(wù);關(guān)系名為被更新的關(guān)系;邏輯塊號表示該塊是關(guān)系中哪一塊的前像。7/23/202316DesignedbyTaoHongcai二.恢復(fù)后對日志的處理

①不保留已提交事務(wù)的前像:已提交事務(wù),只會做redo,不會做undo,故其前像可不保留;

②有選擇地保留后像:當更新內(nèi)容寫入DB后,如磁盤不出故障,后像可不保留。而磁盤故障機率小,故有些DBMS(如ORACLE)允許用戶作出是否保留后像的選擇;

③合并后像:對給定邏輯塊號,只需保留最近的后像即可。7/23/202317DesignedbyTaoHongcai7.4更新事務(wù)的執(zhí)行與恢復(fù)回答如下問題:

1.DBMS需要對進行數(shù)據(jù)更新的事務(wù)做什么樣的外圍操作,才能在出現(xiàn)故障時順利地恢復(fù)之?

2.如何安排這些事務(wù)外圍操作的執(zhí)行步驟?

3.安排事務(wù)外圍操作步驟時應(yīng)遵守的規(guī)則?7/23/202318DesignedbyTaoHongcai一.事務(wù)外圍操作安排時應(yīng)遵守的規(guī)則1.提交規(guī)則(CommitRule)

該規(guī)則要求:后像應(yīng)在提交前寫入DB或日志(均在不易失存儲器上)中。說明:

②提交規(guī)則不要求后像一定在提交前寫入DB,寫入日志中亦可,即:如后像已寫入日志,即使未寫入DB或未完全寫入DB,事務(wù)仍可提交,待事務(wù)提交后再繼續(xù)寫入DB。如此期間出現(xiàn)故障,可用日志的后像重做;其它事務(wù)可從緩沖區(qū)(未寫入DB前更新內(nèi)容仍在緩沖區(qū))訪問更新后的內(nèi)容。2.先記后寫規(guī)則(LogAheadRule)

①ACID持久性要求。

該規(guī)則要求:如后像在事務(wù)提交前寫入DB,需先將前像寫入日志,以便事務(wù)失敗后,撤銷事務(wù)所做的更新。7/23/202319DesignedbyTaoHongcai二.

事務(wù)外圍操作步驟的安排方案1:后像在事務(wù)提交前完全寫入DB(1)事務(wù)外圍操作步驟的安排

TIDATL;

AIDB; //提交前,后像完全寫入DB。

④TIDCTL;//提交。

②BILog; //先記后寫規(guī)則。按后像寫入DB時間的不同,外圍操作有三種安排方案。

從ATL刪除TID?!ⅲ?/p>

該步驟設(shè)計涉及的操作:是事務(wù)提交操作、事務(wù)與日志和數(shù)據(jù)庫有關(guān)的操作??梢哉f,是一些事務(wù)外圍的操作。

該步驟安排:是對這些步驟的執(zhí)行次序進行安排,而不是安排事務(wù)內(nèi)部的其它操作。7/23/202320DesignedbyTaoHongcai(2)故障時的事務(wù)恢復(fù)措施如果事務(wù)按上步驟執(zhí)行過程中發(fā)生故障,可根據(jù)下表進行恢復(fù)。ATLCTL事務(wù)所處狀態(tài)恢復(fù)措施有無(未提交)步驟1已完成,但步驟4尚未完成①若BI已Log,則undo;否則勿需undo;②從ALT刪除TID。有有(已提交)步驟4已完成從ALT刪除TID無有(已提交)步驟5已完成勿需處理

※注:①“有”與“無”,表示事務(wù)標識符TID是否在ATL或CTL表中。

②CTL表中的“有”與“無”,表示事務(wù)“已提交”與“未提交”。7/23/202321DesignedbyTaoHongcai方案2:后像在事務(wù)提交后才寫入DB(1)事務(wù)外圍操作步驟安排

TIDATL;

TIDCTL;//提交。

④AIDB;

②AILog; //提交規(guī)則。

從ATL刪除TID。7/23/202322DesignedbyTaoHongcai(2)故障時的事務(wù)恢復(fù)措施如果事務(wù)按上步驟執(zhí)行過程中發(fā)生故障,可根據(jù)下表進行恢復(fù)。ATLCTL事務(wù)所處狀態(tài)恢復(fù)措施有無步驟1已完成,但步驟3未完成從ALT刪除TID。有有步驟3已完成,步驟5未完成①redo;②從ALT刪除TID。無有步驟5已完成勿需處理7/23/202323DesignedbyTaoHongcai方案3:后像在事務(wù)提交前后寫入DB(1)事務(wù)外圍操作步驟安排

TIDATL;

AIDB; //部分寫入

④TIDCTL; //提交

②AI,BILog; //提交規(guī)則及先記后寫規(guī)則

⑤AIDB; //繼續(xù)完成

從ATL刪除TID。7/23/202324DesignedbyTaoHongcai(2)故障時的事務(wù)恢復(fù)措施如果事務(wù)按上步驟執(zhí)行過程中發(fā)生故障,可根據(jù)下表進行恢復(fù)。ATLCTL事務(wù)所處狀態(tài)恢復(fù)措施有無步驟1已完成,但步驟4尚未完成①若BI已Log,則undo;否則勿需undo;②從ALT刪除TID。有有步驟4已完成,但步驟6未完成①redo;②從ALT刪除TID。無有步驟6已完成勿需處理7/23/202325DesignedbyTaoHongcai7.5事務(wù)內(nèi)消息的處理

消息及處理要求:事務(wù)一般會給用戶發(fā)送消息,告之其執(zhí)行情況或要求用戶做某些動作。發(fā)送消息也是事務(wù)執(zhí)行結(jié)果的一部分,亦應(yīng)遵循NothingorAll原則。但消息與數(shù)據(jù)不同,在很多情況下很難用undo來消除其影響。一.問題提出

消息管理器及其作用:一般,要求在事務(wù)結(jié)束(提交或回退)前,不能發(fā)送消息。這樣,發(fā)送消息就不是事務(wù)的任務(wù),必須委托第三方執(zhí)行,一般委托給系統(tǒng)的消息管理器(MessageManager,MM)完成。7/23/202326DesignedbyTaoHongcai

事務(wù)中止時:MM在恢復(fù)時將該事務(wù)的消息丟棄,以消除其影響;(1)方法

事務(wù)結(jié)束時:MM將消息隊列存入不易失存儲器中。MM允許事務(wù)在正常結(jié)束前增加或刪除消息。

注意:消息僅指事務(wù)中發(fā)送給用戶的消息,不包括事務(wù)執(zhí)行過程中,由系統(tǒng)發(fā)給用戶的消息,如語法錯等。

方法:MM采用“發(fā)送—確認”方式傳送。消息發(fā)出后,如確認超時,則再發(fā)送一次,直到收到確認信號為止。為防止用戶端重復(fù)收到同一消息,對消息編號,當用戶端收到同一消息時不予理睬。

②事務(wù)正常結(jié)束時:事務(wù)通知MM發(fā)送消息;

事務(wù)執(zhí)行時:將消息送給MM,MM為每個事務(wù)建立一個消息隊列;二.消息的具體處理(2)MM的發(fā)送處理7/23/202327DesignedbyTaoHongcai7.6失效類型及恢復(fù)對策一.失效類型故障恢復(fù)能力不是無限的,它只針對某些概率較高類型的失效。

介質(zhì)失效

②系統(tǒng)失效

事務(wù)失效二.事務(wù)失效及恢復(fù)

事務(wù)的成功執(zhí)行與結(jié)束:一個事務(wù)以BEGINTRANSACTION語句的成功執(zhí)行開始,以COMMIT或ROLLBACK語句的成功執(zhí)行結(jié)束。

提交點:COMMIT建立了一個提交點(CommitPoint),在商用DBMS產(chǎn)品中也叫同步點(Syncpoint)。

提交點含義:提交點標志著邏輯工作單元的結(jié)束,要求DB處于一致狀態(tài)。(1)基本概念7/23/202328DesignedbyTaoHongcai

③因系統(tǒng)調(diào)度差錯而中止。

②用戶主動撤銷事務(wù);

①事務(wù)無法執(zhí)行而中止;

③從ATL刪除該事務(wù)TID,釋放該事務(wù)所占資源。

②如需要,進行undo操作;

①MM丟棄該事務(wù)的消息隊列;(2)事務(wù)失效的原因(3)事務(wù)失效的恢復(fù)措施

④因電源故障而中止。

⑤因介質(zhì)故障而中止。7/23/202

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論