版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、An Introduction to Database System,武漢科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,數(shù)據(jù)庫(kù)系統(tǒng)概論An Introduction to Database System第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),An Introduction to Database System,第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策
2、略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié),An Introduction to Database System,10.1 事務(wù)的基本概念,一、什么是事務(wù)二、如何定義事務(wù)三、事務(wù)的特性,An Introduction to Database System,一、什么是事務(wù),事務(wù)(Transaction)是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全做,要么全不做,是一個(gè)不可分割的工作單位事務(wù)和
3、程序是兩個(gè)概念在關(guān)系數(shù)據(jù)庫(kù)中,一個(gè)事務(wù)可以是一條SQL語(yǔ)句,一組SQL語(yǔ)句或整個(gè)程序一個(gè)應(yīng)用程序通常包含多個(gè)事務(wù)事務(wù)是恢復(fù)和并發(fā)控制的基本單位,An Introduction to Database System,二、如何定義事務(wù),顯式定義方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 語(yǔ)句1
4、 SQL 語(yǔ)句1 SQL 語(yǔ)句2 SQL 語(yǔ)句2 。。。。。 。。。。。 COMMIT
5、 ROLLBACK隱式方式當(dāng)用戶沒(méi)有顯式地定義事務(wù)時(shí),DBMS按缺省規(guī)定自動(dòng)劃分事務(wù),An Introduction to Database System,事務(wù)結(jié)束,COMMIT事務(wù)正常結(jié)束 提交事務(wù)的所有操作(讀+更新)事務(wù)中所有對(duì)數(shù)據(jù)庫(kù)的更新永久生效ROLLBACK事務(wù)異常終止事務(wù)運(yùn)行的過(guò)程中發(fā)生了故障,不能繼續(xù)執(zhí)行回滾事務(wù)的所有更新操作事務(wù)滾回到開(kāi)始時(shí)的狀態(tài),An Introduction to
6、 Database System,三、事務(wù)的特性(ACID特性),事務(wù)的ACID特性:原子性(Atomicity)一致性(Consistency)隔離性(Isolation)持續(xù)性(Durability ),An Introduction to Database System,1. 原子性,事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位事務(wù)中包括的諸操作要么都做,要么都不做,An Introduction to Database System,2
7、. 一致性,事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè) 一致性狀態(tài)變到另一個(gè)一致性狀態(tài)一致性狀態(tài):數(shù)據(jù)庫(kù)中只包含成功事務(wù)提交的結(jié)果不一致?tīng)顟B(tài):數(shù)據(jù)庫(kù)中包含失敗事務(wù)的結(jié)果,An Introduction to Database System,一致性與原子性,銀行轉(zhuǎn)帳:從帳號(hào)A中取出一萬(wàn)元,存入帳號(hào)B。定義一個(gè)事務(wù),該事務(wù)包括兩個(gè)操作這兩個(gè)操作要么全做,要么全不做全做或者全不做,數(shù)據(jù)庫(kù)都處于一致性狀態(tài)。如果只做一個(gè)操作
8、,數(shù)據(jù)庫(kù)就處于不一致性狀態(tài)。,An Introduction to Database System,3. 隔離性,對(duì)并發(fā)執(zhí)行而言一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其他并發(fā)事務(wù)是隔離的并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾,An Introduction to Database System,T1的修改被T2覆蓋了!,3. 隔離性,An Introduction to Database System,4.
9、持續(xù)性,持續(xù)性也稱永久性(Permanence)一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其執(zhí)行結(jié)果有任何影響。,An Introduction to Database System,事務(wù)的特性,保證事務(wù)ACID特性是事務(wù)處理的任務(wù)破壞事務(wù)ACID特性的因素多個(gè)事務(wù)并行運(yùn)行時(shí),不同事務(wù)的操作交叉執(zhí)行事務(wù)在運(yùn)行過(guò)程中被強(qiáng)行停止,An Introduction to Database
10、System,第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié),An Introduction to Database System,10.2 數(shù)據(jù)庫(kù)恢復(fù)概述,故障是不可避免的計(jì)算機(jī)硬件故障系統(tǒng)軟件和應(yīng)用軟件的錯(cuò)誤操作員的失誤惡意的破壞故障的影響
11、運(yùn)行事務(wù)非正常中斷破壞數(shù)據(jù)庫(kù),An Introduction to Database System,數(shù)據(jù)庫(kù)恢復(fù)概述(續(xù)),數(shù)據(jù)庫(kù)管理系統(tǒng)對(duì)故障的對(duì)策DBMS提供恢復(fù)子系統(tǒng)保證故障發(fā)生后,能把數(shù)據(jù)庫(kù)中的數(shù)據(jù)從錯(cuò)誤狀態(tài)恢復(fù)到某種邏輯一致的狀態(tài)保證事務(wù)ACID恢復(fù)技術(shù)是衡量系統(tǒng)優(yōu)劣的重要指標(biāo),An Introduction to Database System,第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),10.1 事務(wù)的基本概念10.2 數(shù)
12、據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié),An Introduction to Database System,10.3 故障的種類,事務(wù)故障系統(tǒng)故障介質(zhì)故障計(jì)算機(jī)病毒,An Introduction to Database System,一、事務(wù)故障,什么是事務(wù)故障某個(gè)事務(wù)在運(yùn)行過(guò)程中由于種種原因未運(yùn)行至
13、正常終止點(diǎn)就夭折了P280事務(wù)故障的常見(jiàn)原因輸入數(shù)據(jù)有誤運(yùn)算溢出違反了某些完整性限制某些應(yīng)用程序出錯(cuò)并行事務(wù)發(fā)生死鎖。。。。,An Introduction to Database System,事務(wù)故障的恢復(fù),發(fā)生事務(wù)故障時(shí),夭折的事務(wù)可能已把對(duì)數(shù)據(jù)庫(kù)的部分修改寫(xiě)回磁盤(pán)事務(wù)故障的恢復(fù):撤消事務(wù)(UNDO)強(qiáng)行回滾(ROLLBACK)該事務(wù)清除該事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有修改,使得這個(gè)事務(wù)象根本沒(méi)有啟動(dòng)過(guò)一樣,An In
14、troduction to Database System,二、系統(tǒng)故障,什么是系統(tǒng)故障整個(gè)系統(tǒng)的正常運(yùn)行突然被破壞所有正在運(yùn)行的事務(wù)都非正常終止內(nèi)存中數(shù)據(jù)庫(kù)緩沖區(qū)的信息全部丟失外部存儲(chǔ)設(shè)備上的數(shù)據(jù)未受影響,An Introduction to Database System,系統(tǒng)故障的常見(jiàn)原因,操作系統(tǒng)或DBMS代碼錯(cuò)誤操作員操作失誤特定類型的硬件錯(cuò)誤(如CPU故障)突然停電,An Introduction to Dat
15、abase System,系統(tǒng)故障的恢復(fù),清除尚未完成的事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有修改系統(tǒng)重新啟動(dòng)時(shí),恢復(fù)程序要強(qiáng)行撤消(UNDO)所有未完成事務(wù)將緩沖區(qū)中已完成事務(wù)提交的結(jié)果寫(xiě)入數(shù)據(jù)庫(kù)系統(tǒng)重新啟動(dòng)時(shí),恢復(fù)程序需要重做(REDO)所有已提交的事務(wù),An Introduction to Database System,三、介質(zhì)故障,硬件故障使存儲(chǔ)在外存中的數(shù)據(jù)部分丟失或全部丟失介質(zhì)故障比前兩類故障的可能性小得多,但破壞性大得多,An In
16、troduction to Database System,介質(zhì)故障的常見(jiàn)原因,硬件故障磁盤(pán)損壞磁頭碰撞操作系統(tǒng)的某種潛在錯(cuò)誤瞬時(shí)強(qiáng)磁場(chǎng)干擾,An Introduction to Database System,介質(zhì)故障的恢復(fù),裝入數(shù)據(jù)庫(kù)發(fā)生介質(zhì)故障前某個(gè)時(shí)刻的數(shù)據(jù)副本重做自此時(shí)始的所有成功事務(wù),將這些事務(wù)已提交的結(jié)果重新記入數(shù)據(jù)庫(kù),,,An Introduction to Database System,四、計(jì)算機(jī)病毒,計(jì)算
17、機(jī)病毒是一種人為的故障或破壞,是一些惡作劇者研制的一種計(jì)算機(jī)程序繁殖和傳播性強(qiáng),危害極大,An Introduction to Database System,恢復(fù)操作的基本原理,恢復(fù)操作的基本原理:冗余利用存儲(chǔ)在系統(tǒng)其它地方的冗余數(shù)據(jù)來(lái)重建數(shù)據(jù)庫(kù)中已被破壞或不正確的那部分?jǐn)?shù)據(jù)恢復(fù)的實(shí)現(xiàn)技術(shù):復(fù)雜一個(gè)大型數(shù)據(jù)庫(kù)產(chǎn)品,恢復(fù)子系統(tǒng)的代碼要占全部代碼的10%以上,An Introduction to Database System,第
18、十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié),An Introduction to Database System,10.4 恢復(fù)的實(shí)現(xiàn)技術(shù),恢復(fù)機(jī)制涉及的關(guān)鍵問(wèn)題1. 如何建立冗余數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)儲(chǔ)(backup)登錄日志文件(logging)2.
19、如何利用這些冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫(kù)恢復(fù),An Introduction to Database System,10.4 恢復(fù)的實(shí)現(xiàn)技術(shù),10.4.1 數(shù)據(jù)轉(zhuǎn)儲(chǔ)10.4.2 登記日志文件,An Introduction to Database System,10.4.1 數(shù)據(jù)轉(zhuǎn)儲(chǔ),一、什么是轉(zhuǎn)儲(chǔ)二、轉(zhuǎn)儲(chǔ)的用途三、轉(zhuǎn)儲(chǔ)方法,An Introduction to Database System,一、什么是轉(zhuǎn)儲(chǔ),轉(zhuǎn)儲(chǔ)是指DBA將整個(gè)數(shù)
20、據(jù)庫(kù)復(fù)制到磁帶或另一個(gè)磁盤(pán)上保存起來(lái)的過(guò)程。這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。,An Introduction to Database System,轉(zhuǎn)儲(chǔ),,故障發(fā)生點(diǎn) 轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) ↓正常運(yùn)行 ─┼───────┼───────────── Ta Tb
21、Tf 重裝后備副本 重新運(yùn)行事務(wù)恢復(fù) ─┼───────┴------------→,An Introduction to Database System,三、轉(zhuǎn)儲(chǔ)方法,1.靜態(tài)轉(zhuǎn)儲(chǔ)與動(dòng)態(tài)轉(zhuǎn)儲(chǔ)2.海量轉(zhuǎn)儲(chǔ)與增量轉(zhuǎn)儲(chǔ)3.轉(zhuǎn)儲(chǔ)方法小結(jié),An Introduction to Database System,1.靜態(tài)轉(zhuǎn)儲(chǔ),在系統(tǒng)中無(wú)運(yùn)行事務(wù)時(shí)進(jìn)行轉(zhuǎn)儲(chǔ)轉(zhuǎn)儲(chǔ)開(kāi)始時(shí)數(shù)據(jù)庫(kù)處于一致性狀態(tài)轉(zhuǎn)儲(chǔ)
22、期間不允許對(duì)數(shù)據(jù)庫(kù)的任何存取、修改活動(dòng)優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單缺點(diǎn):降低了數(shù)據(jù)庫(kù)的可用性轉(zhuǎn)儲(chǔ)必須等用戶事務(wù)結(jié)束新的事務(wù)必須等轉(zhuǎn)儲(chǔ)結(jié)束,An Introduction to Database System,利用靜態(tài)轉(zhuǎn)儲(chǔ)副本進(jìn)行恢復(fù),,故障發(fā)生點(diǎn) 靜態(tài)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) ↓正常運(yùn)行 ─┼───────┼─────────────
23、 Ta Tb Tf 重裝后備副本 恢復(fù) ─┼───────┥,An Introduction to Database System,動(dòng)態(tài)轉(zhuǎn)儲(chǔ),轉(zhuǎn)儲(chǔ)操作與用戶事務(wù)并發(fā)進(jìn)行轉(zhuǎn)儲(chǔ)期間允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行存取或修改優(yōu)點(diǎn)不用等待正在運(yùn)行的用戶事務(wù)結(jié)束不會(huì)影響新事務(wù)的運(yùn)行動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的缺點(diǎn)不能保證副本中的數(shù)據(jù)正確有效,An Introduc
24、tion to Database System,動(dòng)態(tài)轉(zhuǎn)儲(chǔ),利用動(dòng)態(tài)轉(zhuǎn)儲(chǔ)得到的副本進(jìn)行故障恢復(fù)需要把動(dòng)態(tài)轉(zhuǎn)儲(chǔ)期間各事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改活動(dòng)登記下來(lái),建立日志文件后備副本加上日志文件才能把數(shù)據(jù)庫(kù)恢復(fù)到某一時(shí)刻的正確狀態(tài),An Introduction to Database System,利用動(dòng)態(tài)轉(zhuǎn)儲(chǔ)副本進(jìn)行恢復(fù),,運(yùn)行事務(wù) 故障發(fā)生點(diǎn)
25、 動(dòng)態(tài)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) ↓正常運(yùn)行 ─┼───────┼───────────── Ta Tb Tf重裝后備副本 利用日志文件恢復(fù)恢復(fù) ━━━━━━╋ ━ ━ ━ ┥,An Introduction to Database System,利用
26、動(dòng)態(tài)轉(zhuǎn)儲(chǔ)副本進(jìn)行恢復(fù),,Ta Tb Tf 動(dòng)態(tài)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) 故障發(fā)生點(diǎn)正常運(yùn)行 ─┼───────┼───────────── 登記日志文件 登記新日志文件 ─────────┼─────────────
27、 ? 轉(zhuǎn)儲(chǔ)日志文件 重裝后備副本,然后利用轉(zhuǎn)儲(chǔ)的日志文件恢復(fù)恢復(fù)到一 ━━━━━━┥致性狀態(tài),An Introduction to Database System,2.海量轉(zhuǎn)儲(chǔ)與增量轉(zhuǎn)儲(chǔ),海量轉(zhuǎn)儲(chǔ): 每次轉(zhuǎn)儲(chǔ)全部數(shù)據(jù)庫(kù)增量轉(zhuǎn)儲(chǔ): 只轉(zhuǎn)儲(chǔ)上次轉(zhuǎn)儲(chǔ)后更新過(guò)的數(shù)據(jù)海量轉(zhuǎn)儲(chǔ)與增量轉(zhuǎn)儲(chǔ)比較
28、從恢復(fù)角度看,使用海量轉(zhuǎn)儲(chǔ)得到的后備副本進(jìn)行恢復(fù)往往更方便但如果數(shù)據(jù)庫(kù)很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲(chǔ)方式更實(shí)用更有效,An Introduction to Database System,3.轉(zhuǎn)儲(chǔ)方法小結(jié),轉(zhuǎn)儲(chǔ)方法分類,An Introduction to Database System,轉(zhuǎn)儲(chǔ)策略,應(yīng)定期進(jìn)行數(shù)據(jù)轉(zhuǎn)儲(chǔ),制作后備副本。但轉(zhuǎn)儲(chǔ)又是十分耗費(fèi)時(shí)間和資源的,不能頻繁進(jìn)行。DBA應(yīng)該根據(jù)數(shù)據(jù)庫(kù)使用情況確定適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)周期
29、和轉(zhuǎn)儲(chǔ)方法。 例:每天晚上進(jìn)行動(dòng)態(tài)增量轉(zhuǎn)儲(chǔ)每周進(jìn)行一次動(dòng)態(tài)海量轉(zhuǎn)儲(chǔ)每月進(jìn)行一次靜態(tài)海量轉(zhuǎn)儲(chǔ),An Introduction to Database System,10.4 恢復(fù)的實(shí)現(xiàn)技術(shù),10.4.1 數(shù)據(jù)轉(zhuǎn)儲(chǔ)10.4.2 登記日志文件,An Introduction to Database System,10.4.2 登記日志文件,一、日志文件的內(nèi)容二、日志文件的用途三、登記日志文件的原則,An Intro
30、duction to Database System,一、日志文件的內(nèi)容,1. 什么是日志文件日志文件(log)是用來(lái)記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作的文件2. 日志文件的格式以記錄為單位的日志文件以數(shù)據(jù)塊為單位的日志文件,An Introduction to Database System,日志文件的內(nèi)容(續(xù)),3. 日志文件內(nèi)容各個(gè)事務(wù)的開(kāi)始標(biāo)記(BEGIN TRANSACTION)各個(gè)事務(wù)的結(jié)束標(biāo)記(COMMIT或ROL
31、LBACK)各個(gè)事務(wù)的所有更新操作與事務(wù)有關(guān)的內(nèi)部更新操作日志文件中的一個(gè)日志記錄 (log record),An Introduction to Database System,4. 基于記錄的日志文件,每條日志記錄的內(nèi)容事務(wù)標(biāo)識(shí)操作類型(插入、刪除或修改)操作對(duì)象(記錄ID、Block NO.)更新前數(shù)據(jù)的舊值(對(duì)插入操作而言,此項(xiàng)為空值)更新后數(shù)據(jù)的新值(對(duì)刪除操作而言, 此項(xiàng)為空值),An Introducti
32、on to Database System,5. 基于數(shù)據(jù)塊的日志文件,每條日志記錄的內(nèi)容事務(wù)標(biāo)識(shí)(標(biāo)明是那個(gè)事務(wù))操作對(duì)象(記錄ID、Block NO.)更新前數(shù)據(jù)所在的整個(gè)數(shù)據(jù)塊的值(對(duì)插入操作而言,此項(xiàng)為空值)更新后整個(gè)數(shù)據(jù)塊的值(對(duì)刪除操作而言, 此項(xiàng)為空值),An Introduction to Database System,二、日志文件的用途,1.用途進(jìn)行事務(wù)故障恢復(fù)進(jìn)行系統(tǒng)故障恢復(fù)協(xié)助后備副本進(jìn)行介質(zhì)故障恢
33、復(fù),An Introduction to Database System,日志文件的用途(續(xù)),2.與靜態(tài)轉(zhuǎn)儲(chǔ)后備副本配合進(jìn)行介質(zhì)故障恢復(fù)靜態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)已是一致性的數(shù)據(jù)如果靜態(tài)轉(zhuǎn)儲(chǔ)完成后,仍能定期轉(zhuǎn)儲(chǔ)日志文件,則在出現(xiàn)介質(zhì)故障重裝數(shù)據(jù)副本后,可以利用這些日志文件副本對(duì)已完成的事務(wù)進(jìn)行重做處理這樣不必重新運(yùn)行那些已完成的事務(wù)程序就可把數(shù)據(jù)庫(kù)恢復(fù)到故障前某一時(shí)刻的正確狀態(tài),An Introduction to Database Sys
34、tem,日志文件的用途(續(xù)),故障發(fā)生點(diǎn) 靜態(tài)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) ↓正常運(yùn)行 ─┼──────┼──────────┼── Ta Tb Tf 登記日志文件
35、 └───────────┴── 重裝后備副本 利用日志文件恢復(fù)事務(wù) 繼續(xù)運(yùn)行介質(zhì)故障恢復(fù) ─────────┴-----─-------┴────── 登記日志文件
36、 └──────,An Introduction to Database System,日志文件的用途(續(xù)),3.介質(zhì)故障恢復(fù):LOG FILE + 動(dòng)態(tài)轉(zhuǎn)儲(chǔ)后備副本動(dòng)態(tài)轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù):同時(shí)轉(zhuǎn)儲(chǔ)同一時(shí)點(diǎn)的日志文件后備副本與該日志文件結(jié)合起來(lái)才能將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)。利用這些日志文件副本進(jìn)一步恢復(fù)事務(wù),避免重新運(yùn)行事務(wù)程序。,An Introduction to Database Syste
37、m,三、登記日志文件的原則,為保證數(shù)據(jù)庫(kù)是可恢復(fù)的,登記日志文件時(shí)必須遵循兩條原則登記的次序嚴(yán)格按并行事務(wù)執(zhí)行的時(shí)間次序必須先寫(xiě)日志文件,后寫(xiě)數(shù)據(jù)庫(kù)寫(xiě)日志文件操作:把表示這個(gè)修改的日志記錄 寫(xiě)到日志文件寫(xiě)數(shù)據(jù)庫(kù)操作:把對(duì)數(shù)據(jù)的修改寫(xiě)到數(shù)據(jù)庫(kù)中,An Introduction to Database System,登記日志文件的原則(續(xù)),為什么要先寫(xiě)日志文件寫(xiě)數(shù)據(jù)庫(kù)和寫(xiě)日志文件是兩個(gè)不同的操作在這兩個(gè)操作之間可能發(fā)生故
38、障如果先寫(xiě)了數(shù)據(jù)庫(kù)修改,而在日志文件中沒(méi)有登記下這個(gè)修改,則以后就無(wú)法恢復(fù)這個(gè)修改了如果先寫(xiě)日志,但沒(méi)有修改數(shù)據(jù)庫(kù),按日志文件恢復(fù)時(shí)只不過(guò)是多執(zhí)行一次不必要的UNDO操作,并不會(huì)影響數(shù)據(jù)庫(kù)的正確性,An Introduction to Database System,第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6
39、具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié),An Introduction to Database System,10.5 恢復(fù)策略,10.5.1 事務(wù)故障的恢復(fù)10.5.2 系統(tǒng)故障的恢復(fù)10.5.3 介質(zhì)故障的恢復(fù),An Introduction to Database System,10.5.1 事務(wù)故障的恢復(fù),事務(wù)故障:事務(wù)在運(yùn)行至正常終止點(diǎn)前被中止恢復(fù)方法由恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(U
40、NDO)此事務(wù)已對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改事務(wù)故障的恢復(fù)由系統(tǒng)自動(dòng)完成,不需要用戶干預(yù),An Introduction to Database System,事務(wù)故障的恢復(fù)步驟,1. 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。2. 對(duì)該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”(Befor Image, BI)寫(xiě)入數(shù)據(jù)庫(kù)。插入操作, “更新前的值”為空,則相當(dāng)于做刪除操作刪除操作,“更新后的值”為空
41、,則相當(dāng)于做插入操作若是修改操作,則用BI 代替 AI(After Image),An Introduction to Database System,事務(wù)故障的恢復(fù)步驟,3. 繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。4. 如此處理下去,直至讀到此事務(wù)的開(kāi)始標(biāo)記,事務(wù)故障恢復(fù)就完成了。,An Introduction to Database System,10.5.2 系統(tǒng)故障的恢復(fù),系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一
42、致?tīng)顟B(tài)的原因一些未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新已寫(xiě)入數(shù)據(jù)庫(kù)一些已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新還留在緩沖區(qū)沒(méi)來(lái)得及寫(xiě)入數(shù)據(jù)庫(kù)恢復(fù)方法1. Undo 故障發(fā)生時(shí)未完成的事務(wù)2. Redo 已完成的事務(wù)系統(tǒng)故障的恢復(fù)由系統(tǒng)在重新啟動(dòng)時(shí)自動(dòng)完成,不需要用戶干預(yù),An Introduction to Database System,系統(tǒng)故障的恢復(fù)步驟,1.正向掃描日志文件(即從頭掃描日志文件)Redo隊(duì)列: 在故障發(fā)生前已經(jīng)提交的事務(wù)
43、T1, T3, T8…..Undo隊(duì)列:故障發(fā)生時(shí)尚未完成的事務(wù) T2, T4, T5, T6, T7, T9 …...,An Introduction to Database System,系統(tǒng)故障的恢復(fù)步驟,2. 對(duì)Undo隊(duì)列事務(wù)進(jìn)行UNDO處理 反向掃描日志文件,對(duì)每個(gè)UNDO事務(wù)的更 新操作執(zhí)行逆操作 T2, T4, T5, T6, T7, T9 …… 3.
44、對(duì)Redo隊(duì)列事務(wù)進(jìn)行REDO處理 正向掃描日志文件,對(duì)每個(gè)REDO事務(wù)重新 執(zhí)行登記的操作 T1, T3, T8…..,An Introduction to Database System,10.5.3 介質(zhì)故障的恢復(fù),1. 重裝數(shù)據(jù)庫(kù), 使數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)2. 重做已完成的事務(wù),An Introduction to Database System,10.5.3 介質(zhì)故障
45、的恢復(fù),恢復(fù)步驟1. 裝入最新的后備數(shù)據(jù)庫(kù)副本,使數(shù)據(jù)庫(kù)恢復(fù)到最近一次轉(zhuǎn)儲(chǔ)時(shí)的一致性狀態(tài)。對(duì)于靜態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,裝入后數(shù)據(jù)庫(kù)即處于一致性狀態(tài)對(duì)于動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,還須同時(shí)裝入轉(zhuǎn)儲(chǔ)時(shí)刻的日志文件副本,利用與恢復(fù)系統(tǒng)故障相同的方法(即REDO+UNDO),才能將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)。,An Introduction to Database System,利用靜態(tài)轉(zhuǎn)儲(chǔ)副本將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài),,故障發(fā)生點(diǎn)
46、 靜態(tài)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) ↓正常運(yùn)行 ─┼───────┼───────────── Ta Tb Tf 登記日志文件 └─────────────
47、 重裝后備副本 恢復(fù) ━━━━━━┥,An Introduction to Database System,利用動(dòng)態(tài)轉(zhuǎn)儲(chǔ)副本將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài),,Ta Tb Tf 動(dòng)態(tài)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù) 故障發(fā)生點(diǎn)正常運(yùn)行 ─┼───────┼──
48、─────────── 登記日志文件 登記新日志文件 ─────────┼───────────── ? 轉(zhuǎn)儲(chǔ)日志文件 重裝后備副本,然后利用轉(zhuǎn)儲(chǔ)的日志文件恢復(fù)恢復(fù)到一 ━━━━━━┥致性狀態(tài),An Introductio
49、n to Database System,介質(zhì)故障的恢復(fù)(續(xù)),2. 裝入有關(guān)的日志文件副本,重做已完成的事務(wù)。首先掃描日志文件,找出故障發(fā)生時(shí)已提交的事務(wù)的標(biāo)識(shí),將其記入重做隊(duì)列。然后正向掃描日志文件,對(duì)重做隊(duì)列中的所有事務(wù)進(jìn)行重做處理。即將日志記錄中“更新后的值”寫(xiě)入數(shù)據(jù)庫(kù)。,An Introduction to Database System,介質(zhì)故障的恢復(fù)(續(xù)),介質(zhì)故障的恢復(fù)需要DBA介入DBA的工作重裝最近轉(zhuǎn)儲(chǔ)的數(shù)據(jù)
50、庫(kù)副本和有關(guān)的各日志文件副本執(zhí)行系統(tǒng)提供的恢復(fù)命令具體的恢復(fù)操作仍由DBMS完成,An Introduction to Database System,第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié),An Introduction to Databas
51、e System,10.6 具有檢查點(diǎn)的恢復(fù)技術(shù),一、問(wèn)題的提出二、檢查點(diǎn)技術(shù)三、利用檢查點(diǎn)的恢復(fù)策略,An Introduction to Database System,一、問(wèn)題的提出,兩個(gè)問(wèn)題搜索整個(gè)日志將耗費(fèi)大量的時(shí)間REDO處理:重新執(zhí)行,浪費(fèi)了大量時(shí)間,An Introduction to Database System,解決方案,具有檢查點(diǎn)(checkpoint)的恢復(fù)技術(shù)在日志文件中增加檢查點(diǎn)記錄(check
52、point)增加重新開(kāi)始文件恢復(fù)子系統(tǒng)在登錄日志文件期間動(dòng)態(tài)地維護(hù)日志,An Introduction to Database System,,An Introduction to Database System,二、檢查點(diǎn)技術(shù),檢查點(diǎn)記錄的內(nèi)容1. 建立檢查點(diǎn)時(shí)刻所有正在執(zhí)行的事務(wù)清單2. 這些事務(wù)最近一個(gè)日志記錄的地址重新開(kāi)始文件的內(nèi)容記錄各個(gè)檢查點(diǎn)記錄在日志文件中的地址,An Introduction to Data
53、base System,,An Introduction to Database System,在檢查點(diǎn) 維護(hù)日志文件,1.將當(dāng)前日志緩沖區(qū)中的所有日志記錄寫(xiě)入磁盤(pán)的日志文件上。2.在日志文件中寫(xiě)入一個(gè)檢查點(diǎn)記錄。3. 將當(dāng)前數(shù)據(jù)緩沖區(qū)的所有數(shù)據(jù)記錄寫(xiě)入磁盤(pán)的數(shù)據(jù)庫(kù)中。4. 把檢查點(diǎn)記錄在日志文件中的地址寫(xiě)入一個(gè)重新開(kāi)始文件。,,An Introduction to Database System,建立檢查點(diǎn),定期按照預(yù)定的
54、一個(gè)時(shí)間間隔不定期按照某種規(guī)則,如日志文件已寫(xiě)滿一半建立一個(gè)檢查點(diǎn),An Introduction to Database System,三、利用檢查點(diǎn)的恢復(fù)策略,當(dāng)事務(wù)T在一個(gè)檢查點(diǎn)之前提交 T對(duì)數(shù)據(jù)庫(kù)所做的修改已寫(xiě)入數(shù)據(jù)庫(kù)在進(jìn)行恢復(fù)處理時(shí),沒(méi)有必要對(duì)事務(wù)T執(zhí)行REDO操作,An Introduction to Database System,利用檢查點(diǎn)的恢復(fù)策略(續(xù)),,An Introduction to Databa
55、se System,利用檢查點(diǎn)的恢復(fù)步驟,1. 從重新開(kāi)始文件中找到最后一個(gè)檢查點(diǎn)記錄在日志文件中的地址2 由該地址在日志文件中找到最后一個(gè)檢查點(diǎn)記錄,An Introduction to Database System,利用檢查點(diǎn)的恢復(fù)策略(續(xù)),2.由該檢查點(diǎn)記錄得到檢查點(diǎn)建立時(shí)刻所有正在執(zhí)行的事務(wù)清單ACTIVE-LIST建立兩個(gè)事務(wù)隊(duì)列UNDO-LIST REDO-LIST 把ACTIVE-LIST暫時(shí)放入U(xiǎn)NDO-L
56、IST隊(duì)列,REDO隊(duì)列暫為空。,An Introduction to Database System,利用檢查點(diǎn)的恢復(fù)策略(續(xù)),3.從檢查點(diǎn)開(kāi)始正向掃描日志文件,直到日志文件結(jié)束如有新開(kāi)始的事務(wù)Ti,把Ti暫時(shí)放入U(xiǎn)NDO-LIST隊(duì)列如有提交的事務(wù)Tj,把Tj從UNDO-LIST隊(duì)列移到REDO-LIST隊(duì)列4.對(duì)UNDO-LIST中的每個(gè)事務(wù)執(zhí)行UNDO操作, 對(duì)REDO-LIST中的每個(gè)事務(wù)執(zhí)行REDO操作,,An I
57、ntroduction to Database System,第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),10.1 事務(wù)的基本概念10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié),An Introduction to Database System,10.7 數(shù)據(jù)庫(kù)鏡像,介質(zhì)故障是對(duì)系統(tǒng)影響最為嚴(yán)重的一種故障,嚴(yán)重影響數(shù)據(jù)
58、庫(kù)的可用性介質(zhì)故障恢復(fù)比較費(fèi)時(shí)為預(yù)防介質(zhì)故障,DBA必須周期性地轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)提高數(shù)據(jù)庫(kù)可用性的解決方案數(shù)據(jù)庫(kù)鏡像(Mirror),An Introduction to Database System,數(shù)據(jù)庫(kù)鏡像(續(xù)),數(shù)據(jù)庫(kù)鏡像DBMS自動(dòng)把整個(gè)數(shù)據(jù)庫(kù)或其中的關(guān)鍵數(shù)據(jù)復(fù)制到另一個(gè)磁盤(pán)上DBMS自動(dòng)保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性(圖10.5a),An Introduction to Database System,數(shù)據(jù)庫(kù)鏡像的用
59、途,出現(xiàn)介質(zhì)故障時(shí)DBMS自動(dòng)利用鏡像磁盤(pán)數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù),不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫(kù)副本(圖10.5b)沒(méi)有出現(xiàn)故障時(shí)可用于并發(fā)操作(圖10.5a)一個(gè)用戶對(duì)數(shù)據(jù)加排他鎖修改數(shù)據(jù)其他用戶可以讀鏡像數(shù)據(jù)庫(kù)上的數(shù)據(jù),An Introduction to Database System,數(shù)據(jù)庫(kù)鏡像(續(xù)),,An Introduction to Database System,第十章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù),10.1 事務(wù)的基本概念
60、10.2 數(shù)據(jù)庫(kù)恢復(fù)概述10.3 故障的種類10.4 恢復(fù)的實(shí)現(xiàn)技術(shù)10.5 恢復(fù)策略10.6 具有檢查點(diǎn)的恢復(fù)技術(shù)10.7 數(shù)據(jù)庫(kù)鏡像10.8 小結(jié),An Introduction to Database System,10.8 小結(jié),如果數(shù)據(jù)庫(kù)只包含成功事務(wù)提交的結(jié)果,就說(shuō)數(shù)據(jù)庫(kù)處于一致性狀態(tài)。保證數(shù)據(jù)一致性是對(duì)數(shù)據(jù)庫(kù)的最基本的要求。事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位DBMS保證系統(tǒng)中一切事務(wù)的原子性、一
61、致性、隔離性和持續(xù)性,An Introduction to Database System,小結(jié)(續(xù)),DBMS必須對(duì)事務(wù)故障、系統(tǒng)故障和介質(zhì)故障進(jìn)行恢復(fù)恢復(fù)中最經(jīng)常使用的技術(shù):數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)和登記日志文件恢復(fù)的基本原理:利用存儲(chǔ)在后備副本、日志文件和數(shù)據(jù)庫(kù)鏡像中的冗余數(shù)據(jù)來(lái)重建數(shù)據(jù)庫(kù),An Introduction to Database System,小結(jié)(續(xù)),常用恢復(fù)技術(shù)事務(wù)故障的恢復(fù)UNDO系統(tǒng)故障的恢復(fù)UNDO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論