數據庫恢復技術 TRANCATION

數據庫恢復技術

事務(Transaction)處理技術:事務事一系列的數據庫操做,事數據庫程序的基本邏輯單元。事務處理技術主要包括數據庫恢復技術和併發控制技術。
事務的基本概念
一 事務
事務是用戶定義的數據庫操做系列,這個系列要麼都作,要麼都不作。
二 事務的特性
原子性:事務是數據庫的邏輯工做單位,其中的操做要麼執行要麼不執行。
一致性:當事務執行過程被終斷,而且事務中的一些操做已經寫入了物理數據庫,那麼就說當前的數據庫處於一種不一致的狀態。
隔離性:一個事務的執行不被其餘事務干擾。
持續性:事務一旦提交,他對數據庫中的改變就是持續性的永久性的。
破壞了事務的一致性和隔離性致使的各類狀況
這裏寫圖片描述
一、 丟失修改
兩個事務T1和事務T2讀入同一個數據並修改,T2提交的結果破壞了T1提交的結果,致使T1的修改被丟失。
二、 不可重複讀
事務T1讀取數據後,事務T2修改了數據而且提交,致使T1沒法再現前一次讀取的結果:
1)、事務T1讀取數據後,事務T2修改了數據而且提交,致使T1讀到數據與前一次數據不一樣。
2)、T1按照必定條件讀取了必定量的數據後,T2刪除了其中的部分或者所有數據而且提交,致使T1再次按照相同條件讀取的數據時,數據神祕消失
3)T1按照必定條件讀取了必定量的數據後,T2插入了一部分數據而且提交,致使T1再次按照相同條件讀取的數據時,數據莫名增多。
後兩種不可重複讀有時會稱爲「幻影」現象。
三、 髒讀
事務T1讀取並修改了數據寫回到磁盤,此時事務T2讀取了同一數據,同時T1的修改由於某些緣由撤銷了,T2讀到的數據就與磁盤中的數據不一致了,就是T2讀取的數據時髒讀。web

數據庫恢復概述
數據庫子系統是數據庫管理系統的重要組成部分,決定這系統的可靠性和運行效率。
故障的種類: 一 事務內部的故障
事務故障意味着事務沒有達到預期的終點(commit 和rollback),所以數據庫可能處於不正確的狀態。回覆程序要在不影響其餘事務運行的狀況下,強行回滾該事務,即撤銷該事務已經作出的對數據庫的任何修改。這類恢復操做就是事務撤銷(UNDO)。
系統故障
當系統出現問題須要從新啓動時,恢復子系統須要把全部系統從新啓動時非正常結束的事務進行事務撤銷(UNDO)操做。
另外一方面,又可能有些已經完成的事務的一部分或者所有都在緩存區中,尚未寫回到物理數據庫,系統故障致使其部分或者所有丟失。這時就要將這些已經提交的事務從新執行,把結果寫入物理數據庫。
介質故障
磁盤損壞,磁頭碰撞,瞬時強磁場干擾。
計算機病毒
計算機病毒致使數據庫出現錯誤。
數據庫的恢復技術:冗餘。
數據庫中的任何一部分數據被破壞或不正確的數據均可以經過存儲在系統別處的冗餘數據來重建。數據庫

恢復的實現技術
數據庫冗餘數據的創建最經常使用的技術時「數據轉儲」和「登錄日誌文件」。緩存

數據轉儲 DBA按期把真個數據庫的數據複製到磁盤或者另外一個磁帶上。而後當數據庫遭到破壞後,把數據按照轉儲後的數據進行恢復,而且把自轉儲後執行的全部事務再執行一遍。
靜態轉儲:當全部事務中止時,把數據庫中數據進行轉儲,此時不容許事務執行。
動態轉儲:事務執行和數據轉儲同時進行,創建日誌文件把轉儲期間的事務執行記錄下來。
海量轉儲:每次轉儲所有數據庫。
增量轉儲:每次只轉儲上次轉儲後更新過的數據。併發

登記日誌文件 用來記錄事務對數據庫進行更新操做的文件。
以記錄爲單位的日誌文件svg

  • 各個事務的開始(begin transaction)日誌

  • 各個事務的結束(commit rollBack)xml

  • 各個事務的全部更新操做

這裏每一個事務的開始結束和更新操做都做爲日誌文件的一個日誌記錄,內容包括:對象

  • 事務標識(代表是哪兒個事務);
  • 操做的類型(插入,刪除,修改);
  • 操做對象(記錄內部標識);
  • 更新前數據庫的舊值(對於插入而言,null)
  • 更新後數據庫的新值(刪除,null)

以數據塊爲單位的日誌文件
日誌文件的做用
一:事務故障和系統故障的數據庫的恢復必須用到日誌文件。
二:動態轉儲必須用到日誌記錄。
三:靜態轉儲也能夠創建日誌文件。
登記日誌文件
登記的次序必須嚴格按照事務執行的時間次序
必須先寫日誌文件,再執行事務操做。blog

恢復策咯
一 事務故障的恢復
系統自動完成,對用戶而言是透明的。圖片

  1. 反向掃描日誌文件,找到跟新操做
  2. 對該事務的更新操做進行反操做。
  3. 繼續反向掃描,知道讀到此事務的開始標記。

二 系統故障恢復
撤銷故障發生時未完成的事務,重作已經完成的事務。

  1. 正向掃描日誌文件,把有開始有結束的事務列入REDO序列,把故障發生時未執行完的事務列入UNDO序列。
  2. 執行UNDO操做。
  3. 執行REDO操做。

三 介質故障的恢復
重裝數據庫,重作已經完成的事務。

具備檢查點的的恢復技術
爲了不恢復子系統每次恢復時都要檢查整個日誌文件,設立檢查點。確認某些事務是故障發生後須要恢復的。減小了時間。

數據庫鏡像

根據DBA的要求自動把整個數據庫或者其中比較關鍵的數據庫複製到另外一個磁盤上。


總結


保證數據一致性是對數據庫的最基本的要求。事務時數據庫的邏輯工做單位,只要DBMS可以保證系統中一切事務的原子性、一致性、隔離性、持續性,也就能保證數據庫處於一致性狀態。爲了保證事務的原子性、一致性、與持續性,DBMS必須對事務故障、系統故障、介質故障進行恢復。數據庫轉儲技術和登記日誌技術時恢復中最常使用的技術。恢復的基本原理時利用存儲再後備副本、日誌文件和數據庫鏡像當中的冗餘數據來重建數據庫。