關系數(shù)據(jù)庫——數(shù)據(jù)庫恢復

      網友投稿 1296 2022-05-28

      實現(xiàn)技術

      恢復操作的基本原理:冗余

      恢復機制涉及的兩個關鍵問題

      如何建立冗余數(shù)據(jù)

      數(shù)據(jù)轉儲(backup)

      登錄日志文件(logging)

      如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復

      數(shù)據(jù)轉儲

      數(shù)據(jù)轉儲定義:

      轉儲是指DBA將整個數(shù)據(jù)庫復制到其他存儲介質上保存起來的過程,備用的數(shù)據(jù)稱為后備副本或后援副本

      如何使用

      數(shù)據(jù)庫遭到破壞后可以將后備副本重新裝入

      重裝后備副本只能將數(shù)據(jù)庫恢復到轉儲時的狀態(tài)

      轉儲方法

      靜態(tài)轉儲與動態(tài)轉儲

      海量轉儲與增量轉儲

      靜態(tài)轉儲:

      1)定義:在系統(tǒng)中無事務運行時進行的轉儲操作。轉儲開始的時刻數(shù)據(jù)庫處于一? 致性狀態(tài),而轉儲不允許對數(shù)據(jù)庫的任何存取、修改活動。靜態(tài)轉儲得到的一定是一個數(shù)據(jù)一致性的副本。

      2)優(yōu)點:實現(xiàn)簡單

      3)缺點:降低了數(shù)據(jù)庫的可用性

      轉儲必須等待正運行的用戶事務結束才能進行;新的事務必須等待轉儲結束才能執(zhí)行

      動態(tài)轉儲:

      1)定義:轉儲期間允許對數(shù)據(jù)庫進行存取或修改。轉儲和用戶事務可以并發(fā)執(zhí)行。

      2)優(yōu)點:不用等待正在運行的用戶事務結束;不會影響新事務的運行。

      3)實現(xiàn):必須把轉儲期間各事務對數(shù)據(jù)庫的修改活動登記下來,建立日志文件后備副本加上日志文件就能把數(shù)據(jù)庫恢復到某一時刻的正確狀態(tài)。

      海量轉儲:

      1)定義:每次轉儲全部數(shù)據(jù)庫

      2)特點:從恢復角度,使用海量轉儲得到的后備副本進行恢復更方便一些。

      增量轉儲:

      1)定義:每次只轉儲上一次轉儲后更新過的數(shù)據(jù)

      2)特點:如果數(shù)據(jù)庫很大,事務處理又十分頻繁,則增量轉儲方式更實用更有效。

      日志文件

      1、什么是日志文件

      日志文件(log)是用來記錄事務對數(shù)據(jù)庫的更新操作的文件

      2、日志文件的格式

      1)以記錄為單位:

      日志文件中需要登記的內容包括:

      各個事務的開始標記(BEGIN TRANSACTION)

      各個事務的結束標記(COMMIT或ROLLBACK)

      各個事務的所有更新操作

      以上均作為日志文件中的一個日志記錄

      每個日志記錄的內容:

      事務標識(標明是哪個事務)

      操作類型(插入、刪除或修改)

      操作對象(記錄內部標識)

      更新前數(shù)據(jù)的舊值(對插入操作而言,此項為空值)

      更新后數(shù)據(jù)的新值(對刪除操作而言, 此項為空值)

      2)以數(shù)據(jù)塊為單位

      日志記錄內容包括:

      事務標識(標明是哪個事務)

      被更新的數(shù)據(jù)塊

      3、日志文件的作用

      進行事務故障恢復

      進行系統(tǒng)故障恢復

      協(xié)助后備副本進行介質故障恢復

      1)事務故障恢復和系統(tǒng)故障恢復必須用日志文件

      2)在動態(tài)轉儲方式中必須建立日志文件,后備副本和日志文件結合起來才能有效地恢復數(shù)據(jù)庫

      3)靜態(tài)轉儲方式中也可以建立日志文件(重新裝入后備副本,然后利用日志文件把已完成的事務進行重做,對未完成事務進行撤銷)

      4、登記日志文件:

      基本原則

      登記的次序嚴格按并行事務執(zhí)行的時間次序

      必須先寫日志文件,后寫數(shù)據(jù)庫

      為什么要先寫日志文件?

      1)寫數(shù)據(jù)庫和寫日志文件是兩個不同的操作,在這兩個操作之間可能發(fā)生故障

      關系數(shù)據(jù)庫——數(shù)據(jù)庫恢復

      2)如果先寫了數(shù)據(jù)庫修改,而在日志文件中沒有登記下這個修改,則以后就無法恢復這個修改了

      3)如果先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復時只不過是多執(zhí)行一次不必要的UNDO操作,并不會影響數(shù)據(jù)庫的正確性

      恢復策略

      事務故障的恢復

      事務故障:事務在運行至正常終止點前被終止

      恢復方法

      由恢復子系統(tǒng)應利用日志文件撤消(UNDO)此事務已對數(shù)據(jù)庫進行的修改

      事務故障的恢復由系統(tǒng)自動完成,對用戶是透明的,不需要用戶干預

      事務故障的恢復步驟

      1. 反向掃描文件日志,查找該事務的更新操作。

      2. 對該事務的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值” 寫入數(shù)據(jù)庫。

      插入操作, “更新前的值”為空,則相當于做刪除操作

      刪除操作,“更新后的值”為空,則相當于做插入操作

      若是修改操作,則相當于用修改前值代替修改后值

      3. 繼續(xù)反向掃描日志文件,查找該事務的其他更新操作,并做同樣處理。

      4. 如此處理下去,直至讀到此事務的開始標記,事務故障恢復就完成了。

      系統(tǒng)故障的恢復

      系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因

      未完成事務對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫

      已提交事務對數(shù)據(jù)庫的更新還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫

      恢復方法

      Undo 故障發(fā)生時未完成的事務

      Redo 已完成的事務

      系統(tǒng)故障的恢復由系統(tǒng)在

      重新啟動時

      自動完成,不需要用戶干預

      系統(tǒng)故障的恢復步驟

      1. 正向掃描日志文件

      重做(REDO) 隊列: 在故障發(fā)生前已經提交的事務

      這些事務既有BEGIN TRANSACTION記錄,也有COMMIT記錄

      撤銷 (Undo)隊列: 故障發(fā)生時尚未完成的事務

      這些事務只有BEGIN TRANSACTION記錄,無相應的COMMIT記錄

      2. 對撤銷(Undo)隊列事務進行撤銷(UNDO)處理

      反向掃描日志文件,對每個UNDO事務的更新操作執(zhí)行逆操作

      3. 對重做(Redo)隊列事務進行重做(REDO)處理

      正向掃描日志文件,對每個REDO事務重新執(zhí)行登記的操作

      介質故障的恢復

      恢復步驟

      重裝數(shù)據(jù)庫

      裝入最新的后備副本,使數(shù)據(jù)庫恢復到最近一次轉儲時的一致性狀態(tài)。

      對于靜態(tài)轉儲的數(shù)據(jù)庫副本,裝入后數(shù)據(jù)庫即處于一致性狀態(tài)

      對于動態(tài)轉儲的數(shù)據(jù)庫副本,還須同時裝入轉儲時刻的日志文件副本,利用恢復系統(tǒng)故障的方法(即REDO+UNDO),才能將數(shù)據(jù)庫恢復到一致性狀態(tài)。

      裝入有關的日志文件副本,重做已完成的事務。

      首先掃描日志文件,找出故障發(fā)生時已提交的事務的標識,將其記入重做隊列。

      然后正向掃描日志文件,對重做隊列中的所有事務進行重做處理。

      介質故障的恢復需要DBA介入

      DBA的工作

      重裝最近轉儲的數(shù)據(jù)庫副本和有關的各日志文件副本

      執(zhí)行系統(tǒng)提供的恢復命令,具體的恢復操作仍由DBMS完成

      檢查點

      利用日志技術進行數(shù)據(jù)庫恢復存在兩個問題

      搜索整個日志將耗費大量的時間

      REDO處理:事務實際上已經執(zhí)行,又重新執(zhí)行,浪費了大量時間

      具有檢查點(checkpoint)的恢復技術

      在日志文件中增加檢查點記錄(checkpoint)

      增加重新開始文件,并讓恢復子系統(tǒng)在登錄日志文件期間動態(tài)地維護日志

      檢查點記錄的內容

      建立檢查點時刻所有正在執(zhí)行的事務清單

      這些事務最近一個日志記錄的地址

      重新開始文件的內容

      記錄各個檢查點記錄在日志文件中的地址

      動態(tài)維護日志文件的方法

      周期性地執(zhí)行如下操作:建立檢查點,保存數(shù)據(jù)庫狀態(tài)。

      具體步驟是:

      1.將當前日志緩沖區(qū)中的所有日志記錄寫入磁盤的日志文件上

      2.在日志文件中寫入一個檢查點記錄

      3.將當前數(shù)據(jù)緩沖區(qū)的所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫中

      4.把檢查點記錄在日志文件中的地址寫入一個重新開始文件

      使用檢查點方法可以改善恢復效率

      當事務T在一個檢查點之前提交:

      T對數(shù)據(jù)庫所做的修改一定都已寫入數(shù)據(jù)庫

      寫入時間是在這個檢查點建立之前或在這個檢查點建立之時

      在進行恢復處理時,沒有必要對事務T執(zhí)行REDO操作

      使用檢查點的恢復步驟

      1.從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄

      2.由該檢查點記錄得到檢查點建立時刻所有正在執(zhí)行的事務清單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中的每個事務執(zhí)行UNDO操作

      對REDO-LIST中的每個事務執(zhí)行REDO操作

      鏡像

      為避免硬盤介質出現(xiàn)故障影響數(shù)據(jù)庫的可用性,許多DBMS提供了數(shù)據(jù)庫映像(mirror)功能用于數(shù)據(jù)庫恢復。

      將整個數(shù)據(jù)庫或其中的關鍵數(shù)據(jù)復制到另一個磁盤上,每當主數(shù)據(jù)庫更新時,DBMS自動把更新后的數(shù)據(jù)復制過去,由DBMS自動保證鏡像數(shù)據(jù)與主數(shù)據(jù)庫的一致性。一旦出現(xiàn)介質故障,可由鏡像磁盤繼續(xù)提供使用,同時DBMS自動利用磁盤數(shù)據(jù)進行數(shù)據(jù)庫的恢復,不需要關閉系統(tǒng)和重裝數(shù)據(jù)庫副本。

      在沒有出現(xiàn)故障時,數(shù)據(jù)庫鏡像還可以用于并發(fā)操作,即當一個用戶對數(shù)據(jù)庫加排它鎖修改數(shù)據(jù)時,其他用戶可以讀鏡像數(shù)據(jù)庫上的數(shù)據(jù),而不必等待該用戶釋放鎖。

      由于數(shù)據(jù)庫鏡像是通過復制數(shù)據(jù)實現(xiàn)的,頻繁地賦值數(shù)據(jù)自然會降低系統(tǒng)運行效率。因此在實際應用中用戶往往只選擇對關鍵數(shù)據(jù)和日志文件進行鏡像。

      小結:

      如果數(shù)據(jù)庫只包含成功事務提交的結果,就說數(shù)據(jù)庫處于一致性狀態(tài)。保證數(shù)據(jù)一致性是對數(shù)據(jù)庫的最基本的要求。

      事務是數(shù)據(jù)庫的邏輯工作單位

      DBMS保證系統(tǒng)中一切事務的原子性、一致性、隔離性和持續(xù)性

      DBMS必須對事務故障、系統(tǒng)故障和介質故障進行恢復

      恢復中最經常使用的技術:數(shù)據(jù)庫轉儲和登記日志文件

      恢復的基本原理:利用存儲在后備副本、日志文件和數(shù)據(jù)庫鏡像中的冗余數(shù)據(jù)來重建數(shù)據(jù)庫

      常用恢復技術

      事務故障的恢復

      UNDO

      系統(tǒng)故障的恢復

      UNDO + REDO

      介質故障的恢復

      重裝備份并恢復到一致性狀態(tài) + REDO

      提高恢復效率的技術

      檢查點技術

      可以提高系統(tǒng)故障的恢復效率

      可以在一定程度上提高利用動態(tài)轉儲備份進行介質故障恢復的效率

      鏡像技術

      鏡像技術可以改善介質故障的恢復效率

      數(shù)據(jù)庫 鏡像服務

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【云遷移】使用云主機遷移服務SMS騰訊云主機遷移到華為云上
      下一篇:Java崗大廠面試百日沖刺 - 日積月累,每日三題【Day39】—— 數(shù)據(jù)庫6
      相關文章
      国产精品亚洲专区无码WEB| www.亚洲日本| 国产成人高清亚洲一区久久| 亚洲AV无码专区在线亚| 亚洲大尺码专区影院| 亚洲国产日韩在线视频| 久久久青草青青国产亚洲免观 | 国产亚洲精品美女久久久久久下载| 亚洲精华国产精华精华液好用| 亚洲综合在线一区二区三区| 亚洲色欲色欲www| 久久国产亚洲精品| 亚洲色无码国产精品网站可下载| 亚洲男人天堂2018av| 亚洲综合激情五月丁香六月| 亚洲熟妇AV一区二区三区浪潮| 亚洲精品无码人妻无码| 欧美亚洲精品一区二区| 最新亚洲人成无码网站| 亚洲国产黄在线观看| 亚洲一区二区三区在线视频| 久久久久亚洲AV成人网| 国产亚洲精品无码拍拍拍色欲| 亚洲中文字幕无码中文字在线| 国产亚洲综合成人91精品| 久久精品国产亚洲AV麻豆王友容| 亚洲AV无码精品色午夜果冻不卡| 亚洲影院在线观看| 亚洲白色白色永久观看| 国产精品亚洲精品| 亚洲av无码专区在线电影| 亚洲人成色7777在线观看不卡| 国产精品亚洲综合一区| 久久精品国产亚洲麻豆| 亚洲天堂在线播放| 亚洲AV成人噜噜无码网站| 亚洲第一成人在线| 亚洲av永久无码精品网址| 亚洲精品A在线观看| 亚洲va久久久噜噜噜久久狠狠| 亚洲综合一区二区精品久久|