

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù) 據(jù) 庫 概 論 與 技 術數(shù)據(jù)恢復技術,湯 娜中山大學計算機科學系isstn@mail.sysu.edu.cn,1 數(shù)據(jù)庫恢復概述2 故障的種類3 數(shù)據(jù)存儲結構4 恢復的實現(xiàn)技術5 恢復策略6 具有檢查點的恢復技術7 數(shù)據(jù)庫鏡像8 小結,數(shù)據(jù)庫恢復技術,數(shù)據(jù)庫恢復概述,事務,事務(Transaction)是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位事務
2、的ACID特性:原子性(Atomicity)一致性(Consistency)隔離性(Isolation)持續(xù)性(Durability ),數(shù)據(jù)庫恢復概述,故障是不可避免的計算機硬件故障系統(tǒng)軟件和應用軟件的錯誤操作員的失誤惡意的破壞故障的影響運行事務非正常中斷,但不會破壞數(shù)據(jù)庫破壞數(shù)據(jù)庫,數(shù)據(jù)庫恢復概述(續(xù)),數(shù)據(jù)庫管理系統(tǒng)對故障的對策保證故障發(fā)生后,能把數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀態(tài)恢復到某種邏輯一致的狀態(tài)保證事務A
3、CID DBMS提供恢復子系統(tǒng)恢復技術是衡量系統(tǒng)優(yōu)劣的重要指標恢復算法正常事務處理時,采取措施保證有足夠的數(shù)據(jù)用于故障恢復故障發(fā)生后,將數(shù)據(jù)庫內容恢復到某個保證數(shù)據(jù)庫一致性、原子性及持久性的狀態(tài),故障的種類,3 故障的種類,事務故障系統(tǒng)故障介質故障,一、事務故障,什么是事務故障某個事務在運行過程中由于種種原因未運行至正常終止點就夭折了事務故障的常見原因輸入數(shù)據(jù)有誤運算溢出違反了某些完整性限制某些應用程序出錯
4、并行事務發(fā)生死鎖。。。。,事務故障的恢復,發(fā)生事務故障時,夭折的事務可能已把對數(shù)據(jù)庫的部分修改寫回磁盤處理方法預期故障: 通過在程序中加判斷條件來實現(xiàn)。執(zhí)行回滾(ROLLBACK)語句來撤銷事務。非預期的故障: 如由于死鎖、運算溢出而被迫撤銷的事務等,由系統(tǒng)來撤銷事務事務故障的恢復的本質:撤消事務(UNDO),3 故障的種類,事務故障系統(tǒng)故障介質故障,二、系統(tǒng)故障,什么是系統(tǒng)故障整個系統(tǒng)的正常運行突然被破
5、壞所有正在運行的事務都非正常終止內存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失外部存儲設備上的數(shù)據(jù)未受影響,系統(tǒng)故障的常見原因,操作系統(tǒng)或DBMS代碼錯誤操作員操作失誤特定類型的硬件錯誤(如CPU故障)突然停電,系統(tǒng)故障的恢復,清除尚未完成的事務對數(shù)據(jù)庫的所有修改系統(tǒng)重新啟動時,恢復程序要強行撤消(UNDO)所有未完成事務將緩沖區(qū)中已完成事務提交的結果寫入數(shù)據(jù)庫系統(tǒng)重新啟動時,恢復程序需要重做(REDO)所有已提交的事務,3 故障
6、的種類,事務故障系統(tǒng)故障介質故障,三、介質故障,硬件故障使存儲在外存中的數(shù)據(jù)部分丟失或全部丟失介質故障比前兩類故障的可能性小得多,但破壞性大得多,介質故障的常見原因,硬件故障磁盤損壞磁頭碰撞操作系統(tǒng)的某種潛在錯誤瞬時強磁場干擾,介質故障的恢復,裝入數(shù)據(jù)庫發(fā)生介質故障前某個時刻的數(shù)據(jù)副本重做自此時始的所有成功事務,將這些事務已提交的結果重新記入數(shù)據(jù)庫,,,數(shù)據(jù)存儲結構,Storage Structure,Volatile
7、storage:does not survive system crashesexamples: main memory, cache memoryNonvolatile storage:survives system crashesexamples: disk, tape, flash memory, non-volatile (battery backed up) RAM Stabl
8、e storage:a mythical form of storage that survives all failuresapproximated by maintaining multiple copies on distinct nonvolatile media,Stable-Storage Implementation,Maintain multiple copies of each block on separate
9、disksraid遠程災備copies can be at remote sites to protect against disasters such as fire or flooding.Failure during data transfer can still result in inconsistent copies: Block transfer can result inSuccessful completion
10、Partial failure: destination block has incorrect informationTotal failure: destination block was never updated,Stable-Storage Implementation,Protecting storage media from failure during data transfer (one solution):Ex
11、ecute output operation as follows (assuming two copies of each block):Write the information onto the first physical block.When the first write successfully completes, write the same information onto the second physical
12、 block.The output is completed only after the second write successfully completes.,Stable-Storage Implementation (Cont.),Protecting storage media from failure during data transfer (cont.):Copies of a block may differ d
13、ue to failure during output operation. To recover from failure:First find inconsistent blocks:Expensive solution: Compare the two copies of every disk block.Better solution: Record in-progress disk writes on non-vola
14、tile storage (Non-volatile RAM or special area of disk). Use this information during recovery to find blocks that may be inconsistent, and only compare copies of these. Used in hardware RAID systemsIf either copy of
15、 an inconsistent block is detected to have an error (bad checksum), overwrite it by the other copy. If both have no error, but are different, overwrite the second block by the first block.,Data Access,Physical blocks ar
16、e those blocks residing on the disk. Buffer blocks are the blocks residing temporarily in main memory.Block movements between disk and main memory are initiated through the following two operations:input(B) transfers
17、 the physical block B to main memory.output(B) transfers the buffer block B to the disk, and replaces the appropriate physical block there.,Data Access,Each transaction Ti has its private work-area in which local copie
18、s of all data items accessed and updated by it are kept. Ti's local copy of a data item X is called xi.We assume, for simplicity, that each data item fits in, and is stored inside, a single block.,Data Access (Cont
19、.),Transaction transfers data items between system buffer blocks and its private work-area using the following operations :read(X) assigns the value of data item X to the local variable xi.write(X) assigns the value of
20、 local variable xi to data item {X} in the buffer block.both these commands may necessitate the issue of an input(BX) instruction before the assignment, if the block BX in which X resides is not already in memory.Trans
21、actions Perform read(X) while accessing X for the first time; All subsequent accesses are to the local copy. After last access, transaction executes write(X).output(BX) need not immediately follow write(X). System ca
22、n perform the output operation when it deems fit.,Example of Data Access,,x,Y,,,,,,,A,B,,,,,,,x1,y1,buffer,Buffer Block A,Buffer Block B,,,,,input(A),output(B),,,read(X),write(Y),disk,,,,,,,,,,,,,,,work areaof T1,work a
23、reaof T2,memory,x2,恢復的實現(xiàn)技術,恢復操作的基本原理,恢復操作的基本原理:冗余利用存儲在系統(tǒng)其它地方的冗余數(shù)據(jù)來重建數(shù)據(jù)庫中已被破壞或不正確的那部分數(shù)據(jù)恢復的實現(xiàn)技術:復雜一個大型數(shù)據(jù)庫產品,恢復子系統(tǒng)的代碼要占全部代碼的10%以上,4 恢復的實現(xiàn)技術,恢復機制涉及的關鍵問題1. 如何建立冗余數(shù)據(jù)數(shù)據(jù)轉儲(backup)登錄日志文件(logging)2. 如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復,4.1
24、 數(shù)據(jù)轉儲(備份),一、什么是轉儲二、轉儲的用途三、轉儲方法,一、什么是轉儲,轉儲是指DBA將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程。這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。,二、轉儲方法,1.靜態(tài)轉儲與動態(tài)轉儲2.海量轉儲與增量轉儲3.轉儲方法小結,1.靜態(tài)轉儲,在系統(tǒng)中無運行事務時進行轉儲轉儲開始時數(shù)據(jù)庫處于一致性狀態(tài)。轉儲期間不允許對數(shù)據(jù)庫的任何存取、修改活動優(yōu)點:實現(xiàn)簡單缺點:降低了數(shù)據(jù)庫的可用性
25、轉儲必須等用戶事務結束新的事務必須等轉儲結束,動態(tài)轉儲,轉儲操作與用戶事務并發(fā)進行轉儲期間允許對數(shù)據(jù)庫進行存取或修改優(yōu)點不用等待正在運行的用戶事務結束不會影響新事務的運行動態(tài)轉儲的缺點不能保證副本中的數(shù)據(jù)正確有效,動態(tài)轉儲,利用動態(tài)轉儲得到的副本進行故障恢復需要把動態(tài)轉儲期間各事務對數(shù)據(jù)庫的修改活動登記下來,建立日志文件后備副本加上日志文件才能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài),2.海量轉儲與增量轉儲,海量轉儲: 每次轉
26、儲全部數(shù)據(jù)庫增量轉儲: 只轉儲上次轉儲后更新過的數(shù)據(jù)海量轉儲與增量轉儲比較,3.轉儲方法小結,轉儲方法分類,3 恢復的實現(xiàn)技術,3.1 數(shù)據(jù)轉儲3.2 登記日志文件,3.2 登記日志文件,一、日志文件的內容三、登記日志文件的原則,一、日志文件的內容,1. 什么是日志文件日志文件(log)是用來記錄事務對數(shù)據(jù)庫的更新操作的文件2. 日志文件的格式以記錄為單位的日志文件以數(shù)據(jù)塊為單位的日志文件,日志文件的內容
27、(續(xù)),3. 日志文件內容各個事務的開始標記(BEGIN TRANSACTION)各個事務的結束標記(COMMIT或ROLLBACK)各個事務的所有更新操作日志文件中的一個日志記錄 (log record),4. 基于記錄的日志文件,更新操作日志記錄的內容事務標識操作類型(插入、刪除或修改)操作對象(記錄ID、Block NO.)更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值)更新后數(shù)據(jù)的新值(對刪除操作而言, 此項
28、為空值),二、登記日志文件的原則(WAL),為保證數(shù)據(jù)庫是可恢復的,登記日志文件時必須遵循兩條原則登記的次序嚴格按并行事務執(zhí)行的時間次序必須先寫日志文件,后寫數(shù)據(jù)庫寫日志文件操作:把表示這個修改的日志記錄 寫到日志文件(在磁盤上)寫數(shù)據(jù)庫操作:把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中,,,?,登記日志文件的原則(續(xù)),為什么要先寫日志文件寫數(shù)據(jù)庫和寫日志文件是兩個不同的操作在這兩個操作之間可能發(fā)生故障如果先寫了數(shù)據(jù)庫修改,而在日志
29、文件中沒有登記下這個修改,則以后就無法恢復這個修改了如果先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復時只不過是多執(zhí)行一次不必要的UNDO操作,并不會影響數(shù)據(jù)庫的正確性,先寫日志的原則(WAL),日志緩沖區(qū),數(shù)據(jù)庫緩沖區(qū),日志,數(shù)據(jù)庫,,,WAL,調入B2輸出B1,輸出所有與B1有關的日志記錄(flush log)輸出B1調入B2,同步(synchronous)寫日志:只有事務的相關日志已經完全在磁盤上了,才會向進程發(fā)送該事務已提
30、交的確認消息異步(asynchronous)寫緩沖區(qū):只需要將數(shù)據(jù)頁的寫入操作投遞給操作系統(tǒng)即可,不需要等待其完成,利用靜態(tài)轉儲副本進行恢復,,,恢復策略,5 恢復策略,5.1 事務故障的恢復5.2 系統(tǒng)故障的恢復5.3 介質故障的恢復,5.1 事務故障的恢復,事務故障:事務在運行至正常終止點前被中止恢復方法由恢復子系統(tǒng)應利用日志文件撤消(UNDO)此事務已對數(shù)據(jù)庫進行的修改事務故障的恢復由系統(tǒng)自動完成,不需要用戶
31、干預,事務故障的恢復步驟,1. 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務的更新操作。2. 對該事務的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”(Befor Image, BI)寫入數(shù)據(jù)庫。插入操作, “更新前的值”為空,則相當于做刪除操作刪除操作,“更新后的值”為空,則相當于做插入操作若是修改操作,則用BI 代替 AI(After Image)3. 繼續(xù)反向掃描日志文件,查找該事務的其他更新操作,并做同樣
32、處理。4. 如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。,事務故障恢復,反向撤銷事務操作,正向撤銷事務操作,5.2 系統(tǒng)故障的恢復,系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因一些未完成事務對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫一些已提交事務對數(shù)據(jù)庫的更新還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫恢復方法1. Undo 故障發(fā)生時未完成的事務2. Redo 已完成的事務系統(tǒng)故障的恢復由系統(tǒng)在重新啟動時自動完成,不需要用戶干預,系統(tǒng)故障的
33、恢復步驟,1.正向掃描日志文件(即從頭掃描日志文件)Redo隊列: 在故障發(fā)生前已經提交的事務 T1, T3, T8…..Undo隊列:故障發(fā)生時尚未完成的事務 T2, T4, T5, T6, T7, T9 …...,系統(tǒng)故障的恢復步驟,2. 對Undo隊列事務進行UNDO處理 反向掃描日志文件,對每個UNDO事務的更 新操作執(zhí)行逆操作 T2, T4, T5, T6,
34、T7, T9 …… 3. 對Redo隊列事務進行REDO處理 正向掃描日志文件,對每個REDO事務重新 執(zhí)行登記的操作 T1, T3, T8…..,系統(tǒng)故障恢復,,T0圓滿事務,T1夭折事務,undo,A=950,B=2050,C=700,redoredo,A=950,B=2000,C=700,5.3 介質故障的恢復,1. 重裝數(shù)據(jù)庫, 使數(shù)據(jù)庫恢復到一致性狀態(tài)
35、2. 重做已完成的事務,5.3 介質故障的恢復,恢復步驟1. 裝入最新的后備數(shù)據(jù)庫副本,使數(shù)據(jù)庫恢復到最近一次轉儲時的一致性狀態(tài)。對于靜態(tài)轉儲的數(shù)據(jù)庫副本,裝入后數(shù)據(jù)庫即處于一致性狀態(tài)對于動態(tài)轉儲的數(shù)據(jù)庫副本,還須同時裝入轉儲時刻的日志文件副本,才能將數(shù)據(jù)庫恢復到一致性狀態(tài)。,介質故障的恢復(續(xù)),2. 裝入有關的日志文件副本,重做已完成的事務。首先掃描日志文件,找出故障發(fā)生時已提交的事務的標識,將其記入重做隊列。然后正向
36、掃描日志文件,對重做隊列中的所有事務進行重做處理。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫。,介質故障的恢復(續(xù)),介質故障的恢復需要DBA介入DBA的工作重裝最近轉儲的數(shù)據(jù)庫副本和有關的各日志文件副本執(zhí)行系統(tǒng)提供的恢復命令具體的恢復操作仍由DBMS完成,具有檢查點的恢復技術,6 具有檢查點的恢復技術,一、問題的提出二、檢查點技術三、利用檢查點的恢復策略,一、問題的提出,兩個問題搜索整個日志將耗費大量的時間REDO處理:
37、重新執(zhí)行,浪費了大量時間,解決方案,具有檢查點(checkpoint)的恢復技術在日志文件中增加檢查點記錄(checkpoint)增加重新開始文件恢復子系統(tǒng)在登錄日志文件期間動態(tài)地維護日志,,二、檢查點技術,檢查點記錄的內容1. 建立檢查點時刻所有正在執(zhí)行的事務清單2. 這些事務最近一個日志記錄的地址重新開始文件的內容記錄各個檢查點記錄在日志文件中的地址,在檢查點 維護日志文件,1.將當前日志緩沖區(qū)中的所有日志記錄寫入
38、磁盤的日志文件上。2.在日志文件中寫入一個檢查點記錄。3. 將當前數(shù)據(jù)緩沖區(qū)的所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫中。4. 把檢查點記錄在日志文件中的地址寫入一個重新開始文件。,,建立檢查點,定期按照預定的一個時間間隔不定期按照某種規(guī)則,如日志文件已寫滿一半建立一個檢查點,三、利用檢查點的恢復策略,當事務T在一個檢查點之前提交 T對數(shù)據(jù)庫所做的修改已寫入數(shù)據(jù)庫在進行恢復處理時,沒有必要對事務T執(zhí)行REDO操作,利用檢查點的
39、恢復策略(續(xù)),利用檢查點的恢復步驟,1. 從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址2 由該地址在日志文件中找到最后一個檢查點記錄,利用檢查點的恢復策略(續(xù)),2.由該檢查點記錄得到檢查點建立時刻所有正在執(zhí)行的事務清單ACTIVE-LIST建立兩個事務隊列UNDO-LIST REDO-LIST 把ACTIVE-LIST暫時放入UNDO-LIST隊列,REDO隊列暫為空。,利用檢查點的恢復策略(續(xù)),3.從檢查點
40、開始正向掃描日志文件,直到日志文件結束如有新開始的事務Ti,把Ti暫時放入UNDO-LIST隊列如有提交的事務Tj,把Tj從UNDO-LIST隊列移到REDO-LIST隊列4.對UNDO-LIST中的每個事務執(zhí)行UNDO操作, 對REDO-LIST中的每個事務執(zhí)行REDO操作,,思考題,一條update語句只修改一條記錄,如果在前圖第3步完成后down機系統(tǒng)重啟后,是如何處理?一條update語句修改一萬條記錄,如果在修改了5
41、000條記錄后down機系統(tǒng)重啟后,是如何處理?,數(shù)據(jù)庫鏡像,7 數(shù)據(jù)庫鏡像,介質故障是對系統(tǒng)影響最為嚴重的一種故障,嚴重影響數(shù)據(jù)庫的可用性介質故障恢復比較費時為預防介質故障,DBA必須周期性地轉儲數(shù)據(jù)庫提高數(shù)據(jù)庫可用性的解決方案數(shù)據(jù)庫鏡像(Mirror),數(shù)據(jù)庫鏡像(續(xù)),數(shù)據(jù)庫鏡像DBMS自動把整個數(shù)據(jù)庫或其中的關鍵數(shù)據(jù)復制到另一個磁盤上DBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性(圖5a),數(shù)據(jù)庫鏡像的用途,出現(xiàn)介質故
42、障時DBMS自動利用鏡像磁盤數(shù)據(jù)進行數(shù)據(jù)庫的恢復,不需要關閉系統(tǒng)和重裝數(shù)據(jù)庫副本(圖5b)沒有出現(xiàn)故障時可用于并發(fā)操作(圖5a)一個用戶對數(shù)據(jù)加排他鎖修改數(shù)據(jù)其他用戶可以讀鏡像數(shù)據(jù)庫上的數(shù)據(jù),數(shù)據(jù)庫鏡像(續(xù)),,數(shù)據(jù)庫鏡像(續(xù)),由于采用復制數(shù)據(jù)實現(xiàn)鏡像,而頻繁復制會導致較低系統(tǒng)運行效率。因此實際應用只針對關鍵數(shù)據(jù)和日志文件進行鏡像,而不是整個數(shù)據(jù)庫,Advanced Recovery Algorithm,邏輯Undo日志,一
43、般恢復技術要求一旦事務更新了一個數(shù)據(jù)項,其它事務都不能更新該數(shù)據(jù)項,直至第一個事務提交或回滾嚴格兩階段封鎖協(xié)議實施到某些特殊結構如B+樹索引頁時,并發(fā)性極度下降。為提高并發(fā)性,可以使用非兩段方式使鎖較早釋放如果事務T向B+樹插入了一項,在插入操作結束后但在事務提交前釋放了某些鎖。在鎖釋放后,其它事務可執(zhí)行插入或刪除操作,于是造成對B+樹結點的進一步改變如果使用物理undo執(zhí)行事務回滾,即事務回滾時我們將B+樹內部結點(執(zhí)行插入操作
44、前)的舊值寫回,那么其它事務在其后執(zhí)行的插入或刪除操作所做的某些更新可能會丟失插入操作必須通過一個邏輯undo來完成,即通過執(zhí)行一次刪除操作撤消,,For such operations, undo log records should contain the undo operation to be executed called logical undo logging, in contrast to physical undo
45、 logging.Redo information is logged physically (that is, new value for each write) even for such operationsLogical redo is very complicated since database state on disk may not be “operation consistent”,Advanced Recove
46、ry Techniques (Cont.),Operation logging is done as follows:When operation starts, log . Here Oj is a unique identifier of the operation instance.While operation is executing, normal log records with physical redo and p
47、hysical undo information are logged. When operation completes, is logged, where U contains information needed to perform a logical undo information.,Advanced Recovery Techniques (Cont.),If crash/rollback occurs before
48、 operation completes:the operation-end log record is not found, and the physical undo information is used to undo operation.If crash/rollback occurs after the operation completes:the operation-end log record is found
49、, and in this caselogical undo is performed using U; the physical undo information for the operation is ignored.,Advanced Recovery Techniques (Cont.),Rollback of transaction Ti is done as follows: Scan the log backwar
50、ds If a log record is found, perform the undo and log a special redo-only log record .If a record is foundRollback the operation logically using the undo information U. Log Updates performed during roll back are
51、logged just like during normal operation execution. At the end of the operation rollback, instead of logging an operation-end record, generate a record .Skip all preceding log records for Ti until the recor
52、d is found,日志類型的對比,物理日志Ti,Xi,V1,V2回滾時登記的日志Ti,Xi,V1,undonextLSN,邏輯日志Ti,Qi,operation-begin……(物理日志)Ti,Qi, operation-end,U回滾時登記的日志……(物理日志)Ti,Qi,operation-abort,Advanced Recovery Techniques (Cont.),Scan the log
53、 backwards (cont.):If a redo-only record is found ignore itIf a record is found:skip all preceding log records for Ti until the record is found.Stop the scan when the record is foundAdd a record to the logSom
54、e points to note:Cases 3 and 4 above can occur only if the database crashes while a transaction is being rolled back.Skipping of log records as in case 4 is important to prevent multiple rollback of the same operation
55、.,Advanced Recovery Techniques(Cont,),The following actions are taken when recovering from system crashScan log forward from last recordRepeat history by physically redoing all updates of all transactions, Create a
56、n undo-list during the scan as followsundo-list is set to L initiallyWhenever is found Ti is added to undo-listWhenever or is found, Ti is deleted from undo-listThis brings database to state as of crash, with com
57、mitted as well as uncommitted transactions having been redone.Now undo-list contains transactions that are incomplete, that is, have neither committed nor been fully rolled back.,Advanced Recovery Techniques (Cont.),R
58、ecovery from system crash (cont.)Scan log backwards, performing undo on log records of transactions found in undo-list. Transactions are rolled back as described earlier.When is found for a transaction Ti in undo-l
59、ist, write a log record.Stop scan when records have been found for all Ti in undo-listThis undoes the effects of incomplete transactions (those with neither commit nor abort log records). Recovery is now complete.,A
60、dvanced Recovery Techniques (Cont.),Fuzzy checkpointing allows transactions to progress while the most time consuming parts of checkpointing are in progress正在輸出到磁盤的緩沖塊也不能更新,雖然其他緩沖塊可以并發(fā)更新,但必須遵守先寫日志協(xié)議。,ARIES算法,ARIES算法:數(shù)據(jù)結
61、構,日志記錄的基本格式LSN在增長的日志記錄空間中的日志記錄的第一個字節(jié)的地址。這是一個單調遞增的數(shù)值,記錄越晚產生,lsn值越大Type表示一個記錄是補償日志('compensation'),正常更新記錄('update'),一個提交協(xié)議相關記錄(例如'prepare')TransID事務的標記,如有,則寫入到日志記錄中PrevLSN本事務的前一條日志記錄的LSN。對該事
62、務的第一條日志記錄而言是0,因此,不需要用一條日志記錄顯式地表示一條事務的開始PageID只在Update和compensation類型的記錄中出現(xiàn),它記錄本記錄所所做更新的頁面的標記,ARIES算法:數(shù)據(jù)結構,Data這是描述欲更新的redo和/或undo數(shù)據(jù)。CLR只包含redo信息,因為它們不能undoUndoNxtLSN只在CLR中出現(xiàn),它指的是回滾階段要處理的下一個本事務的日志記錄,也即UndoNxtLSN是當前日志
63、正在彌補的日志記錄的PrevLSN的數(shù)值。如果已經沒有日志記錄需要undo,該數(shù)據(jù)域就會是0頁面結構數(shù)據(jù)庫的每個頁都有page_LSN域。它包含描述對該頁面所做的最近更新日志記錄的LSN。在恢復的Redo階段,LSN值小于等于page_LSN值的記錄將不在這頁上redo,ARIES算法:數(shù)據(jù)結構,事務表事務表記錄事務的狀態(tài)TransID:事務的IDState:事務的提交狀態(tài)LastLSN:事務所寫的最后一條LSNUndoN
64、xtLSN:在回滾階段下一個記錄的LSN。如果本事務的最近日志記錄是一個可undo的非CLR記錄,這個字段的值就會被設為LastLSN。如果最近日志記錄是CLR,此字段的值就設為此CLR的UndoNxtLSN的值,ARIES算法:數(shù)據(jù)結構,臟頁表包含一個在數(shù)據(jù)庫緩沖區(qū)中已更新的列表,PageID+pageLSN+ RecLSNRecLSN用于標識日志記錄,這些日志記錄的磁盤頁版本沒有實施更新當一頁被插入到臟頁表時(當他首次在緩沖
65、池中被修改時),RecLSN的值被設置成日志的當前末尾只要頁被寫入磁盤,該頁就被從臟頁表中移除。檢查點日志記錄包含檢查點發(fā)生時臟頁和活動事務的列表,同時記錄每個事務的LastLSN,ARIES算法:三個原理,先寫日志在將更新的數(shù)據(jù)庫對象的修改寫入磁盤之前,先將對應的日志記錄寫入穩(wěn)存恢復修改的記錄數(shù)據(jù)在回滾某些事務時,如果出現(xiàn)對數(shù)據(jù)庫的改變,則需要在日志中記錄這些改變,保證在重復進行重新啟動時不需要重復這些操作重做時重復
66、歷史在崩潰后進行重新啟動時,重做崩潰前的所有操作,使系統(tǒng)恢復到崩潰時的狀態(tài),然后回滾崩潰時還在執(zhí)行的事務已完成的操作,ARIES算法:三個過程,分析過程決定哪些事務要undo,哪些頁在崩潰時是臟的,以及redo應從哪個LSN開始Redo過程從分析過程決定的位置開始,執(zhí)行一個redo,重復歷史,將數(shù)據(jù)庫恢復到發(fā)生崩潰前的狀態(tài)Undo過程回滾在發(fā)生崩潰時那些不完整的事務,ARIES算法:系統(tǒng)故障恢復,ARIES算法:分析
67、過程,找到最后完整檢查點日志記錄,并從該記錄開始讀入臟頁表將RedoLSN設置為臟頁表中頁的RecLSN的最小值,如果沒有臟頁,就將其設置為檢查點日志記錄的LSN將要被undo的事務列表undo-list設置為檢查點日志記錄中的事務列表及這些事務的LastLSN從檢查點繼續(xù)向前掃描,每找到一個不在undo-list中的事務日志記錄,就將其添加到undo-list,每找到一個事務的end日志記錄,就將其從undo-list中刪除,A
68、RIES算法:Redo過程,Redo過程通過重演所有沒有在磁盤頁上反映的動作來重復歷史Redo過程從RedoLSN開始向前掃描日志,該點之前的日志記錄已經反映在磁盤數(shù)據(jù)庫頁上只要Redo過程找到一個update日志記錄,它就執(zhí)行如下動作:如果該頁不在臟頁表中(更新已經實施),或者該update日志記錄的LSN小于臟頁表中該頁的RecLSN(沒有實施,但之后還有更新),Redo過程就跳過該日志記錄否則Redo過程就從磁盤調出該頁,
69、如果其PageLSN小于該日志記錄的LSN,重做該日志記錄,ARIES算法:Undo過程,Undo過程反向掃描日志,取消所有undo-list中的事務如果找到一個CLR,它用UndoNextLSN字段跳過一個已經回滾了的事務日志。否則,它用事務日志的PrevLSN字段查找下一個要被撤消的事務日志每當一個update日志記錄被用于撤消,Undo過程產生一個包含undo執(zhí)行動作(必須是物理邏輯的)的CLR,并將CLR的UndoNextL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫恢復技術
- 芻議數(shù)據(jù)庫災難備份與恢復技術
- 數(shù)據(jù)庫備份與恢復
- 7_數(shù)據(jù)庫恢復技術
- 第10章 數(shù)據(jù)庫恢復技術
- 內存數(shù)據(jù)庫中數(shù)據(jù)恢復技術的研究與實現(xiàn).pdf
- InnoDB數(shù)據(jù)庫數(shù)據(jù)恢復技術研究.pdf
- 數(shù)據(jù)庫的備份與恢復
- 數(shù)據(jù)庫的恢復
- 非關系型數(shù)據(jù)庫數(shù)據(jù)恢復技術研究.pdf
- 尾_礦_庫_安_全_技_術_規(guī)_程
- 高性能數(shù)據(jù)庫恢復技術研究.pdf
- 數(shù)據(jù)備份與恢復技術
- 數(shù)據(jù)庫異?;謴娃k法
- 數(shù)據(jù)庫介質失敗后的數(shù)據(jù)庫恢復
- 關系數(shù)據(jù)庫的概化技術研究.pdf
- 第十章 數(shù)據(jù)庫恢復技術
- db2數(shù)據(jù)庫備份與恢復
- 達夢數(shù)據(jù)庫可信恢復技術研究.pdf
- 內存數(shù)據(jù)庫備份恢復研究與設計.pdf
評論
0/150
提交評論