DB數據庫恢復技術_第1頁
DB數據庫恢復技術_第2頁
DB數據庫恢復技術_第3頁
DB數據庫恢復技術_第4頁
DB數據庫恢復技術_第5頁
已閱讀5頁,還剩48頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數據庫原理與應用數據庫原理與應用第十章第十章 數據庫恢復技術數據庫恢復技術10.1 事務的基本概念事務的基本概念10.2 數據庫恢復概述數據庫恢復概述10.3 故障的種類故障的種類10.4 恢復的實現技術恢復的實現技術10.5 恢復策略恢復策略10.6 具有檢查點的恢復技術具有檢查點的恢復技術10.7 數據庫鏡像數據庫鏡像10.8 小結小結一、什么是事務一、什么是事務二、如何定義事務二、如何定義事務三、事務的特性三、事務的特性v事務事務(Transaction)(Transaction)是用戶定義的一個數據庫是用戶定義的一個數據庫操作序列,這些操作操作序列,這些操作要么全做,要么全不做要么全做

2、,要么全不做,是一個不可分割的工作單位是一個不可分割的工作單位v事務事務和和程序程序是兩個概念是兩個概念 在關系數據庫中,一個事務可以是一條在關系數據庫中,一個事務可以是一條SQLSQL語句,語句,一組一組SQLSQL語句或整個程序語句或整個程序 一個應用程序通常包含多個事務一個應用程序通常包含多個事務v事務是恢復和并發控制的事務是恢復和并發控制的基本單位基本單位v顯式定義方式顯式定義方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 語句語句1 SQL 語句語句1 SQL 語句語句2 SQL 語句語句2 。 。 COMMIT ROLLBACKv隱式方式隱式方

3、式當用戶沒有顯式地定義事務時,當用戶沒有顯式地定義事務時,DBMS按缺省規定自動劃分事務按缺省規定自動劃分事務COMMIT事務正常結束事務正常結束 提交提交事務的所有操作(事務的所有操作(讀讀+更新更新)事務中所有對數據庫的更新事務中所有對數據庫的更新永久永久生效生效ROLLBACK事務異常終止事務異常終止 事務運行的過程中發生了故障,不能繼續執行事務運行的過程中發生了故障,不能繼續執行回滾事務的所有回滾事務的所有更新更新操作操作 事務滾回到事務滾回到開始開始時的狀態時的狀態事務的事務的ACID特性特性:v 原子性(原子性(Atomicity)v 一致性(一致性(Consistency)v 隔

4、離性(隔離性(Isolation)v 持續性(持續性(Durability )v事務是數據庫的邏輯工作單位事務是數據庫的邏輯工作單位 事務中包括的諸操作要么都做,要么都不做事務中包括的諸操作要么都做,要么都不做事務執行的結果必須是使數據庫從一個一致性狀態變到另事務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態一個一致性狀態一致性狀態一致性狀態:數據庫中只包含成功事務提交的結果數據庫中只包含成功事務提交的結果不一致狀態不一致狀態:數據庫中包含失敗事務的結果數據庫中包含失敗事務的結果銀行轉帳:從帳號銀行轉帳:從帳號A中取出一萬元,存入帳號中取出一萬元,存入帳號B。 定義一個事務,該事

5、務包括兩個操作定義一個事務,該事務包括兩個操作 這兩個操作要么全做,要么全不做這兩個操作要么全做,要么全不做 全做或者全不做,數據庫都處于全做或者全不做,數據庫都處于一致性一致性狀態。狀態。 如果只做一個操作,數據庫就處于如果只做一個操作,數據庫就處于不一致性不一致性狀狀態態。 B=B+1 A=A-1 B A對并發執行而言對并發執行而言一個事務的執行不能被其他事務干擾一個事務的執行不能被其他事務干擾 一個事務內部的操作及使用的數據一個事務內部的操作及使用的數據對其他并發事務對其他并發事務是隔離的是隔離的 并發執行的各個并發執行的各個事務之間不能互相干擾事務之間不能互相干擾 讀讀A=16 AA-

6、3寫回寫回A=13 讀讀A=16 AA-1 寫回寫回A=15 T2T1v持續性也稱永久性(持續性也稱永久性(Permanence) 一個事務一旦提交,它對數據庫中數據的改變就應該一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。是永久性的。 接下來的其他操作或故障不應該對其執行結果有任何接下來的其他操作或故障不應該對其執行結果有任何影響。影響。v保證事務保證事務ACID特性是事務處理的任務特性是事務處理的任務v破壞事務破壞事務ACID特性的因素特性的因素 多個事務并行運行時,不同事務的操作交多個事務并行運行時,不同事務的操作交叉執行叉執行 事務在運行過程中被強行停止事務在運行過程中被強

7、行停止v故障是不可避免的故障是不可避免的 計算機硬件故障計算機硬件故障 系統軟件和應用軟件的錯誤系統軟件和應用軟件的錯誤 操作員的失誤操作員的失誤 惡意的破壞惡意的破壞v故障的影響故障的影響 運行事務非正常中斷運行事務非正常中斷 破壞數據庫破壞數據庫恢復技術是衡量系統優劣的重要指標恢復技術是衡量系統優劣的重要指標v什么是事務故障什么是事務故障 某個事務在運行過程中由于種種原因未運行至正常終某個事務在運行過程中由于種種原因未運行至正常終止點就夭折了止點就夭折了v事務故障的常見原因事務故障的常見原因 輸入數據有誤輸入數據有誤 運算溢出運算溢出 違反了某些完整性限制違反了某些完整性限制 某些應用程序

8、出錯某些應用程序出錯 并行事務發生死鎖并行事務發生死鎖 。v發生事務故障時,夭折的事務可能已把對數據發生事務故障時,夭折的事務可能已把對數據庫的部分修改寫回磁盤庫的部分修改寫回磁盤v事務故障的恢復:事務故障的恢復:撤消事務(撤消事務(UNDO) 強行回滾(強行回滾(ROLLBACK)該事務)該事務 清除該事務對數據庫的所有修改,使得這個事務象清除該事務對數據庫的所有修改,使得這個事務象根本沒有啟動過一樣根本沒有啟動過一樣v什么是系統故障什么是系統故障 整個系統的正常運行突然被破壞整個系統的正常運行突然被破壞 所有正在運行的事務都非正常終止所有正在運行的事務都非正常終止 內存中數據庫緩沖區的信息

9、全部丟失內存中數據庫緩沖區的信息全部丟失 外部存儲設備上的數據未受影響外部存儲設備上的數據未受影響v 操作系統或操作系統或DBMS代碼錯誤代碼錯誤v 操作員操作失誤操作員操作失誤v 特定類型的硬件錯誤(如特定類型的硬件錯誤(如CPU故障)故障)v 突然停電突然停電v 清除清除尚未完成尚未完成的事務對數據庫的所有修改的事務對數據庫的所有修改 系統系統重新啟動時重新啟動時,恢復程序要強行撤消,恢復程序要強行撤消(UNDO)所有未完成事務)所有未完成事務v將緩沖區中將緩沖區中已完成已完成事務提交的結果寫入數據庫事務提交的結果寫入數據庫 系統系統重新啟動時重新啟動時,恢復程序需要重做,恢復程序需要重做

10、(REDO)所有已提交的事務)所有已提交的事務v 硬件故障使存儲在外存中的數據部分丟失或全部丟失硬件故障使存儲在外存中的數據部分丟失或全部丟失v 介質故障比前兩類故障的可能性小得多,但破壞性大得多介質故障比前兩類故障的可能性小得多,但破壞性大得多v 硬件故障硬件故障磁盤損壞、磁頭碰撞、操作系統的某種潛在磁盤損壞、磁頭碰撞、操作系統的某種潛在錯誤、瞬時強磁場干擾錯誤、瞬時強磁場干擾v 裝入裝入數據庫發生介質故障前某個時刻的數據數據庫發生介質故障前某個時刻的數據副本副本v 重做自此時始的所有重做自此時始的所有成功事務成功事務,將這些事務已提交的結果,將這些事務已提交的結果重新記入數據庫重新記入數據

11、庫v恢復操作的基本原理:恢復操作的基本原理:冗余冗余 利用利用存儲在系統其它地方的存儲在系統其它地方的冗余數據冗余數據來來重建重建數據庫中數據庫中已被破壞或不正確的那部分數據已被破壞或不正確的那部分數據v恢復的實現技術:復雜恢復的實現技術:復雜 一個大型數據庫產品,恢復子系統的代碼要占全部代一個大型數據庫產品,恢復子系統的代碼要占全部代碼的碼的10%以上以上恢復機制涉及的關鍵問題恢復機制涉及的關鍵問題1. 如何建立冗余數據如何建立冗余數據 數據轉儲(數據轉儲(backup) 登錄日志文件登錄日志文件(logging)2. 如何利用這些冗余數據實施數據庫恢復如何利用這些冗余數據實施數據庫恢復一、

12、什么是轉儲一、什么是轉儲二、轉儲的用途二、轉儲的用途三、轉儲方法三、轉儲方法v 轉儲是指轉儲是指DBA將整個數據庫復制到磁帶或另一個磁盤上保將整個數據庫復制到磁帶或另一個磁盤上保存起來的過程。存起來的過程。v 這些備用的數據文本稱為后備副本或后援副本。這些備用的數據文本稱為后備副本或后援副本。1靜態轉儲與動態轉儲靜態轉儲與動態轉儲2海量轉儲與增量轉儲海量轉儲與增量轉儲v轉儲方法分類轉儲方法分類 轉儲狀態轉儲狀態動態轉儲動態轉儲靜態轉儲靜態轉儲轉儲轉儲方式方式海量轉儲海量轉儲動態海量轉儲動態海量轉儲靜態海量轉儲靜態海量轉儲增量轉儲增量轉儲動態增量轉儲動態增量轉儲靜態增量轉儲靜態增量轉儲一、日志文

13、件的內容一、日志文件的內容二、二、日志文件的用途日志文件的用途三、登記日志文件的原則三、登記日志文件的原則1. 什么是日志文件什么是日志文件日志文件日志文件(log)是用來記錄事務對數據庫的更新操作的文件是用來記錄事務對數據庫的更新操作的文件2. 日志文件的格式日志文件的格式以記錄為單位的日志文件以記錄為單位的日志文件以數據塊為單位的日志文件以數據塊為單位的日志文件3. 日志文件內容日志文件內容 各個事務的開始標記各個事務的開始標記(BEGIN TRANSACTION) 各個事務的結束標記各個事務的結束標記(COMMIT或或ROLLBACK) 各個事務的所有更新操作各個事務的所有更新操作 與與

14、事務有關的內部更新操作事務有關的內部更新操作上述內容均為日志文件中的一個日志記錄上述內容均為日志文件中的一個日志記錄 (log record)每條日志記錄的內容每條日志記錄的內容 事務標識事務標識 操作操作類型類型(插入、刪除或修改)(插入、刪除或修改) 操作對象(記錄操作對象(記錄ID、Block NO.) 更新前數據的舊值(對插入操作而言,此項為空值)更新前數據的舊值(對插入操作而言,此項為空值) 更新后數據的新值(對刪除操作而言更新后數據的新值(對刪除操作而言, 此項為空值)此項為空值) 每條日志記錄的內容每條日志記錄的內容 事務標識(標明是那個事務)事務標識(標明是那個事務) 操作操作

15、對象對象(記錄(記錄ID、Block NO.) 更新前數據所在整個數據塊的值(對插入操作而言,此更新前數據所在整個數據塊的值(對插入操作而言,此項為空值)項為空值) 更新后整個數據塊的值(對刪除操作而言更新后整個數據塊的值(對刪除操作而言, 此項為空值)此項為空值)1用途用途 進行事務故障恢復進行事務故障恢復 進行系統故障恢復進行系統故障恢復 協助后備副本進行介質故障恢復協助后備副本進行介質故障恢復2與靜態轉儲后備副本配合進行介質故障恢復與靜態轉儲后備副本配合進行介質故障恢復3介質故障恢復:介質故障恢復:LOG FILE + 動態轉儲后備副本動態轉儲后備副本v為保證數據庫是可恢復的,登記日志文

16、件時必須為保證數據庫是可恢復的,登記日志文件時必須遵循兩條原則遵循兩條原則 登記的次序嚴格按并行事務執行的時間次序登記的次序嚴格按并行事務執行的時間次序 必須先寫日志文件,后寫數據庫必須先寫日志文件,后寫數據庫 寫日志文件操作:把表示這個修改的日志記錄寫日志文件操作:把表示這個修改的日志記錄 寫到日志文件寫到日志文件 寫數據庫操作:把對數據的修改寫到數據庫中寫數據庫操作:把對數據的修改寫到數據庫中v為什么要先寫日志文件為什么要先寫日志文件 寫數據庫和寫日志文件是兩個不同的操作寫數據庫和寫日志文件是兩個不同的操作 在這兩個操作之間可能發生故障在這兩個操作之間可能發生故障 如果先寫了數據庫修改,而

17、在日志文件中沒有登記如果先寫了數據庫修改,而在日志文件中沒有登記下這個修改,則以后就無法恢復這個修改了下這個修改,則以后就無法恢復這個修改了 如果先寫日志,但沒有修改數據庫,按日志文件恢如果先寫日志,但沒有修改數據庫,按日志文件恢復時只不過是多執行一次不必要的復時只不過是多執行一次不必要的UNDO操作,并操作,并不會影響數據庫的正確性不會影響數據庫的正確性10.5.1 事務故障的恢復事務故障的恢復10.5.2 系統故障的恢復系統故障的恢復10.5.3 介質故障的恢復介質故障的恢復v 事務故障:事務在運行至正常終止點前被中止事務故障:事務在運行至正常終止點前被中止v 恢復方法恢復方法 由恢復子系

18、統應利用日志文件撤消(由恢復子系統應利用日志文件撤消(UNDO)此事)此事務已對數據庫進行的修改務已對數據庫進行的修改v 事務故障的恢復由系統自動完成,不需要用戶干預事務故障的恢復由系統自動完成,不需要用戶干預1. 反向掃描文件日志(即從最后向前掃描日志文件),反向掃描文件日志(即從最后向前掃描日志文件),查找該事務的更新操作。查找該事務的更新操作。2. 對該事務的更新操作執行逆操作。即將日志記錄中對該事務的更新操作執行逆操作。即將日志記錄中“更新前的值更新前的值”(Befor Image, BI)寫入數據庫。)寫入數據庫。 插入操作,插入操作, “更新前的值更新前的值”為空,則相當于做刪除操

19、作為空,則相當于做刪除操作 刪除操作,刪除操作,“更新后的值更新后的值”為空,則相當于做插入操作為空,則相當于做插入操作 若是修改操作,則用若是修改操作,則用BI 代替代替 AI(After Image)3. 繼續反向掃描日志文件,查找該事務的其他更繼續反向掃描日志文件,查找該事務的其他更新操作,并做同樣處理。新操作,并做同樣處理。4. 如此處理下去,直至讀到此事務的開始標記,如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。事務故障恢復就完成了。v 系統故障造成數據庫不一致狀態的原因系統故障造成數據庫不一致狀態的原因 一些未完成事務對數據庫的更新已寫入數據庫一些未完成事務對數據庫

20、的更新已寫入數據庫 一些已提交事務對數據庫的更新還留在緩沖區沒來得一些已提交事務對數據庫的更新還留在緩沖區沒來得及寫入數據庫及寫入數據庫v 恢復方法恢復方法 1. Undo 故障發生時未完成的事務故障發生時未完成的事務 2. Redo 已完成的事務已完成的事務v 系統故障的恢復由系統在系統故障的恢復由系統在重新啟動時重新啟動時自動完成,不需要自動完成,不需要用戶干預用戶干預1. 重裝數據庫,重裝數據庫, 使數據庫恢復到一致性狀態使數據庫恢復到一致性狀態2. 重做已完成的事務重做已完成的事務一、問題的提出一、問題的提出二、檢查點技術二、檢查點技術三、利用檢查點的恢復策略三、利用檢查點的恢復策略v

21、兩個問題兩個問題 搜索整個日志將耗費大量的時間搜索整個日志將耗費大量的時間 REDO處理:重新執行,浪費了大量時間處理:重新執行,浪費了大量時間v具有檢查點(具有檢查點(checkpoint)的恢復技術)的恢復技術 在日志文件中增加檢查點記錄在日志文件中增加檢查點記錄(checkpoint) 增加重新開始文件增加重新開始文件 恢復子系統在登錄日志文件期間動態地維恢復子系統在登錄日志文件期間動態地維護日志護日志v檢查點記錄的內容檢查點記錄的內容 1. 建立檢查點時刻所有正在執行的事務清單建立檢查點時刻所有正在執行的事務清單 2. 這些事務最近一個日志記錄的地址這些事務最近一個日志記錄的地址v重新

22、開始文件的內容重新開始文件的內容 記錄各個檢查點記錄在日志文件中的地址記錄各個檢查點記錄在日志文件中的地址1. 將當前將當前日志日志緩沖區中的所有日志記錄寫入磁盤的日志文件上緩沖區中的所有日志記錄寫入磁盤的日志文件上2. 在日志文件中寫入一個檢查點記錄在日志文件中寫入一個檢查點記錄3. 將當前將當前數據數據緩沖區的所有數據記錄寫入磁盤的數據庫中緩沖區的所有數據記錄寫入磁盤的數據庫中4. 把檢查點記錄在日志文件中的地址寫入一個重新開始文件把檢查點記錄在日志文件中的地址寫入一個重新開始文件v 定期定期按照預定的一個時間間隔按照預定的一個時間間隔v 不定期不定期按照某種規則,如日志文件已寫滿一半建立

23、一按照某種規則,如日志文件已寫滿一半建立一個檢查點個檢查點v當事務當事務T在一個檢查點之前提交在一個檢查點之前提交 T對數據庫所做的修改已寫入數據庫對數據庫所做的修改已寫入數據庫v在進行恢復處理時,沒有必要對事務在進行恢復處理時,沒有必要對事務T執行執行REDO操作操作Tc (檢查點檢查點)Tf(系統故障系統故障) REDOUNDOUNDO REDOT2T3T4T5不要不要REDOT11. 從重新開始文件中找到最后一個檢查點記錄在日志文件從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址中的地址2 由該地址在日志文件中找到最后一個檢查點記錄由該地址在日志文件中找到最后一個檢查點記錄 由該

24、檢查點記錄得到檢查點建立時刻所有正在執行的事務由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單清單ACTIVE-LIST 建立兩個事務隊列建立兩個事務隊列 UNDO-LIST REDO-LIST 把把ACTIVE-LIST暫時放入暫時放入UNDO-LIST隊列,隊列,REDO隊列暫為空。隊列暫為空。3.從檢查點開始正向掃描日志文件,直到日志文件結束從檢查點開始正向掃描日志文件,直到日志文件結束 如有新開始的事務如有新開始的事務Ti,把,把Ti暫時放入暫時放入UNDO-LIST隊隊列列 如有提交的事務如有提交的事務Tj,把,把Tj從從UNDO-LIST隊列移到隊列移到REDO-LIST隊列隊列4.對對UNDO-LIST中的每個事務執行中的每個事務執行UNDO操作操作, 對對REDO-LIST中的每個事務執行中的每個事務執行REDO操作操作v 介質故障是對系統影響最為嚴重的一種故障,嚴重影響介質故障是對系統影響最為嚴重的一種故障,嚴重影響數據庫的可用性數據庫的可用性 介質故障恢復比較費時介質故障恢復比較費時 為預防介質故障,為預防介質故障,DBA必須周期性地轉儲數據庫必須周期性地轉儲數據庫v 提高數據庫可用性的解決方案提高數據庫可用性的解決方案 數據庫鏡像(數據庫鏡像(Mirror)v數據庫鏡像數據庫鏡像 DBMS自動把整

溫馨提示

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

評論

0/150

提交評論