數據庫工程師復習重點:故障管理
11.1 事務
1、事務是數據庫的邏輯控制單位,是操作數據的一個程序執行單元。
2、為了保證數據的完整性,要求數據庫系統維護事務具有如下性質:
(1) 原子性:事務是一個不可分割的工作單位,事務中的操作要么都做,要么都不做;
(2) 一致性:事務執行的結果必須使數據庫從一個一致的狀態變到另一個一致的狀態;
(3) 隔離性:一個事務內部的操作及使用的數據對于其他并發事務是隔離的;
(4) 持續性:一個事務提交后,它對數據庫中數據的改變是永久性的,即使系統可能出現故障,也不會對其它執行的結果有任何影響。
11.2 故障的種類及解決方法
11.2.1 事務內部故障
1、預期的事務內部故障:
通過事務程序本身發現的事物內部故障,可以通過將事務回滾,撤銷其對數據庫的修改,從而使數據庫回到一致性的狀態;
2、非預期的事務內部故障:
(1)由于事務內部故障大部分屬于此類,所以事務故障僅限指此類故障;
(2)事務故障表明事務沒有提交或撤銷就結束了,因此數據庫可能處于不正確的狀態,因此,恢復事務必須強行回滾事務,在保證該事務對其他事務沒有影響的條件下,利用日志文件撤銷其對數據庫的修改,使數據庫恢復到該事務運行之前的效果;
(3)事務故障恢復是由系統自動完成的,對用戶是透明的。
11.2.2 系統故障(軟故障)
1、指數據庫在運行過程中,由于硬件故障、數據庫軟件及操作系統的漏洞、突然停電等情況,導致系統停止運轉,所有正在運行的事務以非正常方式終止,需要系統重新啟動的一類故障;
2、系統故障導致內存中的內容丟失,而在硬盤上的內容仍然完好;從而導致數據庫的數據可以處于不正確的狀態;
3、要消除這些事務對數據庫的影響,保證數據庫中數據的一致性,辦法就是在計算機系統重新啟動后,對于未完成的事務可能已經寫入數據庫的內容,回滾所有未完成的事務寫的結果,以保證數據庫中數據的一致性;對于已完成的事務可能部分或全部留在緩存區的結果,需要重做所有已提交的事務,以將數據庫真正恢復到一致狀態。
4、一句話,當數據庫發生系統故障時,容錯對策是在重新啟動系統后,撤銷(UNDO)所有未提交的事務,重做(REDO)所有已提交的事務。
11.2.3 介質故障(硬故障)
1、指數據庫在運行過程中,由于磁盤損壞、天災****等情況,使用數據庫中的數據部分或全部丟失的一類故障;
2、介質故障的容錯對策采用兩種方式:
(1)軟件容錯:
是使用數據庫備份及事務日志文件,通過恢復技術,恢復數據庫到備份結束時的狀態;
(2)硬件容錯:
目前常用的方法是采用雙物理存儲設備,最完全的方式是設計兩套相同的數據庫系統同時工作,數據的變化也同步,空間有一定距離,這樣當發生損壞性的自然現象時,由于兩套數據庫系統具有空間距離,因此同時發生破壞的概率幾乎為零,達到數據庫的完全安全。
11.2.4 計算機病毒故障
1、計算機病毒是一種惡意的計算機程序,在對計算機系統造成破壞的同時也可對數據庫系統造成破壞(主要破壞數據庫文件);
2、可以通過設立防火墻預防,殺毒軟件查殺已感染的文件和數據庫備份來解決;
11.3 數據庫恢復技術概述
1、 恢復機制涉及兩個關鍵問題:
(1) 如何建立冗余數據;
(2) 如何利用這些冗余數據實施數據庫恢復。
2、 最常用的建立冗余數據技術是數據備份和登錄日志文件,他們通常是結合起來使用的。
11.4 數據轉儲
1、 數據轉儲—指數據庫管理員(DBA)定期拷貝數據庫,并將拷貝得到的數據庫放到其他介質中的過程。
2、 DBA可在數據庫系統發生故障后,利用這些副本恢復數據庫,但此時恢復的數據庫只能回到轉儲時的狀態,要想恢復到故障前的狀態,需要參考日志文件,重新運行轉儲后到故障前的所有事務才可以;
3、 靜態轉儲和動態轉儲
(1) 靜態轉儲:在靜態轉儲過程中系統不能運行其他事務,不允許在轉儲期間對數據庫的任何存取、修改活動。
(2) 動態轉儲:允許轉儲操作和用戶事務并發執行;
(3) 靜態轉儲雖然保證了數據的有效性,但卻是以降低數據庫的可用性為代價;而動態轉儲雖然提高了數據庫的可用性,但數據庫的有效性卻得不到保證。
(4) 為了能保證數據的有效性,而又不降低可用性,就需要引入日志文件,用它記錄轉儲期間各事務對數據庫的修改活動,然后使用動態轉儲的備份副本加上日志文件就可將數據庫恢復到某一時刻的正確狀態。
3、 幾種數據轉儲機制
(1) 完全轉儲:對所有數據庫進行備份,需占用較多時間和空間,可作為系統失敗時恢復數據庫的基礎;
(2) 增量轉儲:只復制上次備份后變化的文件;
(3) 差量轉儲:對最近一次數據庫完全備份以來發生的數據變化進行備份,優點是速度快,占用較少的時間和空間。
4、 多種轉儲方法結合使用
(1) 僅采用完全轉儲;
(2) 完全轉儲加增量轉儲;
(3) 完全轉儲加差量轉儲
11.5 登記日志文件
11.5.1 日志文件的格式和內容
日志文件是記錄每個事務對數據庫更新操作的文件,數據庫系統在運行過程中,DBMS負責將所有事務的更新操作登記到日志文件中,也就是說日志文件是系統自動維護的。
1、以記錄為單位的日志文件:其內容包括每個事務的開始標記、結束標記和所有更新操作;每個日志記錄的內容包括:事務標識、操作類型、操作對象、更新前數據的舊值,和更新后數據的新值;
2、數據塊為單位的日志文件:將更新前的整個數據塊和更新后的整個數據塊全部放在了日志文件中;
11.5.2 日志文件的作用
1、事務故障恢復和系統故障恢復必須使用日志文件
(1)故障恢復的兩個基本操作:UNDO和REDO
(A) UNDO的作用是撤銷事務,具體步驟:
(a) 反向掃描日志文件,找到需要撤銷的事務的更新操作;
(b) 對事務的更新操作執行逆操作;
(c) 繼續反向查找該事務的其他更新操作,并執行相應的逆操作;
(d) 重復執行步驟(C),直至遇到該事務開始記錄。
(B) REDO的作用是重做事務,具體步驟:
(a) 正向掃描日志文件,找到需要重做的事務的更新操作;
(b) 對事務重新執行日志文件登記的操作,即將日志文件中“更新后的值”寫入數據庫;
(c) 繼續正向查找該事務的其他更新操作,并重新執行,將日志文件中“更新后的值”寫入數據庫;
(d) 重復執行步驟(C),直至遇到該事務的提交記錄。
(1) 事務故障恢復:只需把相應的事務作撤銷UNDO即可;
(2) 系統故障恢復:
(A) 正向掃描日志文件,找到系統故障前發生的所有事務,如果該事務沒有完成,將其事務標記加入撤銷隊列,如果該事務已經完成,則將其事務標記加入重做隊列;
(B) 對撤銷隊列中的所有事務作撤銷操作UNDO;
(C) 對重做隊列中的所有事務作重做操作REDO。
2、在動態轉儲方式中必須建立日志文件
1、 在靜態轉儲方式中,也可以建立日志文件
11.5.3 登記日志文件的原則
1、 登記的次序嚴格按并行事務執行的時間次序;
2、 必須先寫日志文件,后寫數據庫
11.6 具有檢查點的恢復技術
11.6.1 檢查點的作用
檢查點最大限度地減少數據庫完全恢復時所必須執行的日志部分;
11.6.2 檢查點的引入
1、在日志文件中增加一類新的記錄—檢查點記錄,增加一個“重新開始文件”,并讓恢復子系統在登錄日志文件期間動態地維護日志
2、檢查點記錄的內容:
(1) 建立檢查點時刻所有正在執行的事務清單;
(2) 這些事務最近一個日志記錄的地址。
3、“重新開始文件”用來記錄各個檢查點在日志文件中的地址;
2、 動態維護日志文件的方法是周期性地執行如下操作:建立檢查點、保存數據庫狀態,具體步驟:
(1) 將當前日志緩沖中的所有日志記錄寫入磁盤的日志文件上;
(2) 在日志文件中寫入一個檢查點記錄;
(3) 將當前數據緩沖的所有數據記錄寫入磁盤的數據庫中;
(4) 把檢查點記錄在日志文件中的地址寫入一個“重新開始文件”;
3、 恢復子系統可以定期或不定期地建立檢查點來保存數據庫狀態;
4、 使用檢查點方法可以改善恢復效率,事務在檢查點前已經提交,則不必執行REDO操作。
11.6.3 恢復的步驟
1、 從“重新開始文件”中找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄;
2、 由該檢查點記錄得到檢查點建立時刻所正在執行的事務清單,需要執行UNDO操作的事務建立UNDO隊列,需要執行REDO操作的事務建立REDO隊列;
3、 從檢查點開始正向掃描日志文件,如有新開始的事務,則放入UNDO隊列,如有提交事務,則放入REDO隊列;
4、 對UNDO隊列中的每個事務執行UNDO操作,對REDO隊列中的事務進行REDO操作。
11.7 數據庫鏡像
11.7.1 數據庫鏡像的引入
為了避免介質故障對數據庫可用性的影響,許多數據庫系統都提供了數據庫鏡像的功能
11.7.2 數據庫鏡像簡介
1、 數據庫鏡像是一種用于提高數據庫可用性的解決方案,它根據DBA要求,自動把整個數據庫或其中的關鍵數據復制到另一個磁盤中。
2、 數據庫鏡像的優點:
(1) 數據庫鏡像提供完整或接近完整的數據冗余,增強數據保護功能;
(2) 發生災難時,數據庫鏡像可快速使數據庫的備用副本提供服務,使數據不會丟失,提高數據庫的可用性;
(3) 提高鏡像數據庫在升級期間的可用性。
11.7.3 數據庫鏡像分類
1、 雙機互備援模式:就是兩臺主機均為工作機,兩臺工作機均為信息系統提供支持,并互相監視對方的運行情況,當一臺主機出現異常時,另一主機則主動接管異常機的工作,保證信息系統能夠不間斷運行。工作機的切換時機:
(1) 系統軟件或應用軟件造成服務器宕機;
(2) 服務器沒有宕機,系統軟件或應用軟件工作不正常;
(3) SCSI卡損壞,造成服務器與磁盤陳列無法存取數據;
(4) 服務器內硬件損壞,造成服務器宕機;
(5) 服務器不正常關機
2、雙機熱備份模式:一臺主機為工作機,另一臺主機為備份機,在系統正常運行的情況下,工作機為信息系統提供支持,備份機監視工作機的運行情況。當工作機異常時,備份機主動接管工作機工作,從而保證信息系統不間斷提供服務。
11.7.4 工作方式
1、 在“數據庫鏡像會話”中,主體服務器和鏡像服務器作為“伙伴”進行通信和協作。這兩個伙伴在會話中扮演互補的角色:“主體角色”和“鏡像角色”,擁有主體角色的稱為“主體服務器”,擁有鏡像角色的稱為“鏡像服務器”。
2、 數據庫鏡像涉及盡快將對主體數據庫執行的每項插入、更新和刪除操作重做到鏡像數據庫中。重做通過將每個活動事務日志記錄發送到鏡像服務器來完成,這會盡快將日志記錄按順序應用到鏡像數據庫中,這樣,每當數據庫更新時,DBMS將自動保證鏡像數據與主體數據的一致性;
3、 在出現介質故障時,可由鏡像數據庫繼續提供使用,同時DBMS將自動利用鏡像磁盤數據進行主數據庫的恢復,不需關閉系統。
4、 一旦出現介質故障,通常使用一個“角色切換”的過程來互換主體服務器和鏡像服務器。
5、 由于數據庫鏡像是通過復制數據實現的,在實際應用中,用戶只選擇對關鍵數據和日志文件進行鏡像,而不是對整個數據庫進行鏡像。
11.8 RAID的恢復技術
1、 RAID—廉價冗余磁盤陳列,它是由多塊磁盤構成的一個整體,但并不是簡單的磁盤容量疊加,而是相對于其他存儲設備在容量、管理、性能、可靠性和可用性上都有了進一步的提高。尤其獨特的是,當從這些磁盤中抽出一塊,利用其他磁盤上的信息,可以恢復出這塊磁盤的信息;
2、 RAID系統可以連接在主機系統上,作為其存儲數據的介質,與一般存儲設備不同的是,它具有設備虛擬化的能力。即RAID系統內部可以包含很多個磁盤驅動器,但在主機系統是看不到的,主機系統主能通過一個子系統RAID控制器與這些磁盤構成虛擬設備進行交互。
3、 RAID的冗余技術:
(1) 鏡像冗余:把所有的數據拷貝到其他設備上,但額外開銷很大,需要更多磁盤、控制器和電纜;
(2) 校驗冗余:通過對成員磁盤的數據執行異或(XOR)操作,得到其校驗值,并存放在另外的校驗磁盤上。該技術實現起來稍顯復雜,但它占用的磁盤比鏡像少。