天天看點

mysql的故障恢複技術特點_資料庫系統概論(三)資料庫恢複技術--事務、恢複、故障、檢查點...

事務

事務(transaction)是使用者定義的一個資料庫操作序列,這些操作要麼全做要麼全不做,是一個不可分割的工作機關

事務和程式是兩個概念,一個事務可以是一條/一組SQL語句,也可以是整個程式

事務是恢複和并發控制的基本機關、

BEGIN TRANSACTION

SQL 語句1

SQL 語句2

COMMIT/ROLLBACK

事務的ACID特性

原子性(Atomicity):事務中的操作要麼全做要麼全不做(由DBMS的事務管理子系統來實作)

一緻性(Consistence):事務執行的結果必然是從一個一緻性狀态到另一個一緻性狀态(由DBMS的完整性子系統執行測試任務)

一緻性狀态:資料庫中隻包含事務成功送出的結果

不一緻性狀态:資料庫中包含尚未送出被迫中斷的事務,未完成的事務對資料的修改一部分寫入資料庫,導緻資料庫不正确

隔離性(Isolation):一個事務的執行不能被其他事務幹擾,事務的内部操作和使用的資料對其他事務是隔離的(由DBMS的并發控制子系統實作)

持續性(Durability)/永久性(Permanence):一個事務一旦送出,對資料的修改就是永久性的(由DBMS的恢複管理子系統實作的)

資料庫恢複

故障的種類

①事務内部的故障:事務在運作至正常終點前被終止

有的是可以由事務程式發現的,有些是非預期的事務終止

事務可以通過rollback修複預期之中故障

更多的故障是非預期的,如運算溢出、死鎖

②系統故障(軟故障):CPU錯誤、系統斷電等造成的系統運轉停止

系統故障不破壞資料庫,隻會造成事務的非正常終止,記憶體中資料庫緩沖區丢失

系統故障的恢複需要:

撤銷(undo)所有未完成的事務(事務非正常終止)

重做(redo)所有已送出的事務(有些已完成的事務可能有部分留在緩沖區尚未寫入資料庫)

③媒體故障(硬故障):磁盤損壞、強磁場幹擾造成的媒體故障

④計算機病毒

恢複技術

恢複技術包括兩個部分:建立備援資料+ 利用備援資料進行恢複

建立備援資料

1.資料轉儲:轉儲是将資料庫定期複制到磁盤或其他存儲媒體上,備用資料稱為後備副本(backup)

mysql的故障恢複技術特點_資料庫系統概論(三)資料庫恢複技術--事務、恢複、故障、檢查點...

①靜态轉儲:轉儲時不能有事務運作,資料庫必須處于一緻性狀态即事務已經全部送出,沒有正在運作的事務

②動态轉儲:轉儲與事務同時進行,不能保證副本中資料庫的一緻性

需要把動态存儲期間各事務的修改活動記錄為日志,後備檔案+日志即可恢複

③海量存儲:每次轉儲資料庫全部資訊

④增量存儲:每次轉儲上次轉儲後的更新資料

2.日志檔案:以記錄/資料塊為機關的日志檔案,用于事務/系統故障的恢複

動态轉儲一定要有日志,靜态轉儲也可以有日志

以記錄為機關

T1 BEGIN TRANSACNTION

T1 U(update) AA 18(→)20

T1 I(insert) BB 12

TI COMMIT/ROLLBACK

必須先寫日志檔案,後寫資料庫因為有可能在寫日志和修改資料之間出現故障,先寫資料庫修改可能導緻日志沒有記下這次修改,而先寫日志隻不過是多執行一次不必要的undo操作

3.恢複政策

①事務故障恢複:事務在運作至正常終點前被終止

(1)反向掃描日志,查找事務更新操作

(2)對更新操作進行逆操作,插入→删除,删除→插入,修改前的值→修改後

(3)循環至事務開始

②系統故障的恢複:系統終止造成資料庫不一緻狀态

(1)正向掃描日志,有BEGIN TRANSANCTION和COMMIT的加入REDO隊列

隻有BEGIN TRANSANCTION沒有COMMIT的加入UNDO隊列

(2)對UNDO隊列做UNDO(寫入修改前的值),REDO隊列做REDO(寫入修改後的值)

③媒體故障的恢複:(1)裝入最新的資料庫後備副本,對于靜态副本,裝入即一緻性狀态,對于動态副本做同上的REDO+UNDO

(2)裝入轉儲後的日志副本,REDO

小結:

事務故障恢複:UNDO

系統故障恢複:REDO+UNDO

媒體故障恢複:裝入後備副本+REDO

4.檢查點技術+鏡像技術