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