數(shù)據(jù)庫05-第五章5節(jié)_第1頁
數(shù)據(jù)庫05-第五章5節(jié)_第2頁
數(shù)據(jù)庫05-第五章5節(jié)_第3頁
數(shù)據(jù)庫05-第五章5節(jié)_第4頁
數(shù)據(jù)庫05-第五章5節(jié)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第 5 5 章章數(shù)據(jù)庫的安全與保護(hù)數(shù)據(jù)庫的安全與保護(hù)5.1 安全與保護(hù)概述 5.2 數(shù)據(jù)庫的安全性保護(hù)5.3 數(shù)據(jù)庫的完整性保護(hù)5.4 數(shù)據(jù)庫的并發(fā)控制技術(shù) 5.5 數(shù)據(jù)庫的恢復(fù)技術(shù) 5.6 數(shù)據(jù)庫的復(fù)制與相關(guān)技術(shù)5.5 數(shù)據(jù)庫的恢復(fù)技術(shù) 什么是數(shù)據(jù)庫的恢復(fù)故障的種類故障對數(shù)據(jù)庫的破壞性恢復(fù)技術(shù)5.5 數(shù)據(jù)庫的恢復(fù)技術(shù) 計算機(jī)系統(tǒng)中硬件的故障、軟件的錯誤、操作員的失誤以及惡意的破壞等不可避免不可避免。 輕者造成運(yùn)行事務(wù)非正常中斷,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性和一致性,重者使數(shù)據(jù)庫中全部或部分?jǐn)?shù)據(jù)丟失。 數(shù)據(jù)庫的恢復(fù): 把數(shù)據(jù)庫從錯誤(不一致)狀態(tài)恢復(fù)到某一已知的正確(一致)狀態(tài)的過程。5.5 數(shù)

2、據(jù)庫的恢復(fù)技術(shù) 數(shù)據(jù)庫恢復(fù)子系統(tǒng):DBMS中的一個重要組成部分,且相當(dāng)龐大,常常占整個系統(tǒng)代碼的百分之十以上。 各種現(xiàn)有數(shù)據(jù)庫系統(tǒng)運(yùn)行情況表明,數(shù)據(jù)庫系統(tǒng)所采用的恢復(fù)技術(shù)是否行之有效,不僅對系統(tǒng)的可靠程度起著決定性作用,而且對系統(tǒng)的運(yùn)行效率也有很大影響,是衡量系統(tǒng)性能優(yōu)劣的重要指標(biāo)。是衡量系統(tǒng)性能優(yōu)劣的重要指標(biāo)。5.1.1 故障的種類 1) 事務(wù)故障 2) 系統(tǒng)故障 3) 介質(zhì)故障 4) 病毒破壞 5) 故障對數(shù)據(jù)庫的破壞性1) 事務(wù)故障 事務(wù)在運(yùn)行過程中事務(wù)在運(yùn)行過程中由于某種原因,如輸入錯誤、運(yùn)算溢出、違反了某些完整性約束條件、某些應(yīng)用程序出錯、并行事務(wù)發(fā)生死鎖等等,使事務(wù)尚未運(yùn)行完成或提

3、尚未運(yùn)行完成或提交就中斷交就中斷了,這種情況稱為事務(wù)故障。2) 系統(tǒng)故障 系統(tǒng)在運(yùn)行過程中系統(tǒng)在運(yùn)行過程中,由于某種原因,如操作系統(tǒng)或DBMS代碼錯誤、操作員操作失誤、特定類型的硬件錯誤(如CPU故障)、突然停電等造成系統(tǒng)停止運(yùn)行,致使所有正在運(yùn)行的事正在運(yùn)行的事務(wù)務(wù)都以非正常的方式終止非正常的方式終止. 問題:內(nèi)存中數(shù)據(jù)庫區(qū)的信息全部丟失,但存儲在外部設(shè)備上的原有數(shù)據(jù)并未受到影響,但數(shù)據(jù)庫可能處于不一致狀態(tài),這種情況稱為系統(tǒng)故障。3) 介質(zhì)故障 系統(tǒng)在運(yùn)行過程中系統(tǒng)在運(yùn)行過程中,由于某種原因,如磁盤損壞、瞬時強(qiáng)磁場干擾、操作系統(tǒng)的某種潛在錯誤,使存儲在外存儲器中的數(shù)據(jù)部分丟失或全部丟失存儲在

4、外存儲器中的數(shù)據(jù)部分丟失或全部丟失。這種情況稱為介質(zhì)故障。 這種故障比前兩類故障發(fā)生的可能性要小的多,但所造成的破壞最大。4) 病毒破壞 計算機(jī)病毒是一種人為編制的、能引起計算機(jī)系統(tǒng)故障、甚至破壞整個計算機(jī)系統(tǒng)的程序。這種程序與其它程序不同之處是,它能象微生物學(xué)所稱的病毒一樣繁殖和傳播,并造成對計算機(jī)系統(tǒng)包括數(shù)據(jù)庫的危害。 計算機(jī)病毒對數(shù)據(jù)庫的破壞本質(zhì)上是一種人為人為的破壞的破壞。5)故障對數(shù)據(jù)庫的破壞性 數(shù)據(jù)庫系統(tǒng)中的各類故障對數(shù)據(jù)庫的影響概括起來主要有兩類: (1) 數(shù)據(jù)庫結(jié)構(gòu)被破壞:一般病毒故障及介質(zhì)故障引起,比較嚴(yán)重。 (2) 數(shù)據(jù)庫結(jié)構(gòu)沒有被破壞,但數(shù)據(jù)庫中數(shù)據(jù)的一致性遭到破壞,一般

5、由系統(tǒng)故障及事務(wù)故障引起。5.5.2 恢復(fù)技術(shù) 數(shù)據(jù)恢復(fù):利用存儲在系統(tǒng)其它地方的冗余數(shù)據(jù)來修復(fù)數(shù)據(jù)庫中被破壞的不正確或不一致的數(shù)據(jù)。 恢復(fù)機(jī)制涉及兩個關(guān)鍵問題: 1)如何建立冗余數(shù)據(jù)? 最常用方法: 數(shù)據(jù)轉(zhuǎn)儲和日志文件 。 2)如何利用冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫恢復(fù)? 這是數(shù)據(jù)恢復(fù)策略和方法問題。 5.5.2 恢復(fù)技術(shù)1、數(shù)據(jù)轉(zhuǎn)儲 (1) 數(shù)據(jù)轉(zhuǎn)儲的定義 (2) 數(shù)據(jù)轉(zhuǎn)儲的分類 (3)怎樣確定適當(dāng)?shù)霓D(zhuǎn)儲周期與轉(zhuǎn)儲方法(1) 數(shù)據(jù)轉(zhuǎn)儲的定義 數(shù)據(jù)轉(zhuǎn)儲:數(shù)據(jù)轉(zhuǎn)儲:由DBA定期地將整個數(shù)據(jù)庫復(fù)制到磁帶或另一個磁盤上保存起來形成 備用數(shù)據(jù)文件的過程。 備用的數(shù)據(jù)文件也稱為后備副本或后援副本后備副本或后援副本

6、。 數(shù)據(jù)轉(zhuǎn)儲是數(shù)據(jù)庫恢復(fù)中最常用的基本技術(shù)。 當(dāng)數(shù)據(jù)庫遭到破壞后就可以利用后備副本把數(shù)據(jù)庫恢復(fù)到某個一致性狀態(tài)。(2) 數(shù)據(jù)轉(zhuǎn)儲的分類靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲 。數(shù)據(jù)庫狀態(tài)海量轉(zhuǎn)儲與增量轉(zhuǎn)儲。 轉(zhuǎn)儲數(shù)據(jù)量靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲:轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫有任何操作(包括存取、修改等)活動。 靜態(tài)轉(zhuǎn)儲比較簡單,但降低了數(shù)據(jù)庫的可用性。因?yàn)檗D(zhuǎn)儲要等到用戶事務(wù)全部結(jié)束后才能進(jìn)行,且新的事務(wù)必須等待轉(zhuǎn)儲結(jié)束后才能執(zhí)行。動態(tài)轉(zhuǎn)儲:在轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進(jìn)行存取等操作,即數(shù)據(jù)轉(zhuǎn)儲和用戶事務(wù)可并發(fā)執(zhí)行。 動態(tài)轉(zhuǎn)儲可以克服靜態(tài)轉(zhuǎn)儲的缺點(diǎn),轉(zhuǎn)儲工作可隨時進(jìn)行,但實(shí)現(xiàn)技術(shù)要求較高。因?yàn)檗D(zhuǎn)儲操作與用戶事務(wù)并行執(zhí)行,不容易

7、保證轉(zhuǎn)儲結(jié)束時后備副本上數(shù)據(jù)的一致性。海量轉(zhuǎn)儲與增量轉(zhuǎn)儲海量轉(zhuǎn)儲:每次轉(zhuǎn)儲數(shù)據(jù)庫的全部數(shù)據(jù)。增量轉(zhuǎn)儲:每次只轉(zhuǎn)儲數(shù)據(jù)庫中上次轉(zhuǎn)儲以來所產(chǎn)生變化的那些數(shù)據(jù),即數(shù)據(jù)庫中的數(shù)據(jù)只轉(zhuǎn)儲其修改過的物理塊。這樣轉(zhuǎn)儲的數(shù)據(jù)量少,也不必花很多時間,但為減少事故發(fā)生時更新丟失,需經(jīng)常轉(zhuǎn)儲。 比較:海量轉(zhuǎn)儲數(shù)據(jù)量大,不易進(jìn)行。 增量轉(zhuǎn)儲數(shù)據(jù)量少,但要經(jīng)常轉(zhuǎn)儲。怎樣確定適當(dāng)?shù)霓D(zhuǎn)儲周期與轉(zhuǎn)儲方法 當(dāng)數(shù)據(jù)庫遭破壞時時,最簡單的方法就是以后備副本來恢復(fù)數(shù)據(jù)庫。 要經(jīng)常地進(jìn)行數(shù)據(jù)轉(zhuǎn)儲,因?yàn)楹髠涓北驹浇咏收习l(fā)生點(diǎn),恢復(fù)起來越方便、越省時。但數(shù)據(jù)轉(zhuǎn)儲十分耗費(fèi)時間和資源的,不可能頻繁進(jìn)行。 DBA應(yīng)該根據(jù)數(shù)據(jù)庫的使用情況確定適

8、當(dāng)?shù)霓D(zhuǎn)儲周期和轉(zhuǎn)儲方法。例如,每天晚上或每周進(jìn)行動態(tài)增量轉(zhuǎn)儲,每月進(jìn)行一次海量轉(zhuǎn)儲等。5.5.2 恢復(fù)技術(shù)2、日志文件 (1) 日志文件的作用 (2) 日志文件的分類 (3) 日志文件的登記原則 (1) 日志文件的作用 建立日志文件是數(shù)據(jù)庫系統(tǒng)采取的另一種數(shù)據(jù)冗余措施。 日志文件是記錄每一次對數(shù)據(jù)庫進(jìn)行更新操作的文件,該文件由DBMS自動建立和記錄。 文件中包括的內(nèi)容有:事務(wù)名稱、操作的時間、操作類型、修改前數(shù)據(jù)值以及修改后數(shù)據(jù)值等等;還有事務(wù)的開始,提交(COMMIT)及回滾(ROLLBACK)等執(zhí)行情況記錄。(1) 日志文件的作用 在動態(tài)轉(zhuǎn)儲方式中必須建立日志文件,后備副本和日志文件綜合起

9、來才能有效地恢復(fù)數(shù)據(jù)庫。 在靜態(tài)轉(zhuǎn)儲方式中也可以建立日志文件。 當(dāng)數(shù)據(jù)庫毀壞后可重新裝入后備副本把數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲結(jié)束時刻的正確狀態(tài),然后利用日志文件,把已完成的事務(wù)進(jìn)行重做處理,對故障發(fā)生時尚未完成的事務(wù)進(jìn)行撤消處理。 這樣不必重新運(yùn)行那些在轉(zhuǎn)儲前已完成的事務(wù)程序就可把數(shù)據(jù)庫恢復(fù)到故障前某一時刻。利用靜態(tài)轉(zhuǎn)儲副本和日志文件進(jìn)行恢復(fù)利用靜態(tài)轉(zhuǎn)儲副本和日志文件進(jìn)行恢復(fù) 靜態(tài)靜態(tài)轉(zhuǎn)儲轉(zhuǎn)儲 運(yùn)行事務(wù)運(yùn)行事務(wù) 正常運(yùn)行正常運(yùn)行 Ta Ta Tb Tb Tf Tf 重裝后備副本重裝后備副本 利用日志文件恢復(fù)利用日志文件恢復(fù) 繼續(xù)運(yùn)行繼續(xù)運(yùn)行恢復(fù)恢復(fù) (2) 日志文件的分類日志文件主要有兩種格式: 1)

10、以記錄為單位的日志文件 2) 以數(shù)據(jù)塊為單位的日志文件 1) 以記錄為單位的日志文件 以記錄為單位的日志文件,需要登記如下內(nèi)容: 各個事務(wù)的開始(BEGIN TRANSATION)標(biāo)記; 各個事務(wù)的結(jié)束(COMMIT或ROLLBACK)標(biāo)記; 各個事務(wù)的所有更新操作; 以上信息作為日志文件中的一個日志記錄登記在日志文件中。日志記錄一個日志記錄的主要內(nèi)容為: 事務(wù)標(biāo)識(標(biāo)明是那一個事務(wù)); 操作的類型(插入、刪除、修改); 操作對象; 更新前數(shù)據(jù)的舊值(對插入操作,此項為空值); 更新后數(shù)據(jù)的新值(對刪除操作,此項為空值);2)以數(shù)據(jù)塊為單位的日志文件 以數(shù)據(jù)塊為單位的日志文件,只要某個數(shù)據(jù)塊中

11、有數(shù)據(jù)被更新,就要將整個塊更新前和更新后的內(nèi)容放入日志文件中。(3)日志文件的登記原則 日志文件登記時必須遵循兩條原則: 嚴(yán)格按照并行事務(wù)執(zhí)行的時間次序登記; 必須先寫日志文件,后寫數(shù)據(jù)庫;下面將說明為什么必須這樣。(3)日志文件的登記原則 把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中和把登記這個修改的日志記錄寫到日志文件中是兩個不同的操作。 計算機(jī)有可能在這兩個操作之間發(fā)生故障,即這兩個操作只完成了一個。如果先寫了數(shù)據(jù)庫修改,而日志文件中沒有登記下這個修改,則以后就無法恢復(fù)這個修改了。 如果先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復(fù)時只不過是多執(zhí)行一次不必要的REDO操作,并不會影響數(shù)據(jù)庫的正確性。 為了安全

12、起見,一定要先寫日志文件,即首先把操作記錄寫到日志文件中,然后才把操作結(jié)果寫到數(shù)據(jù)庫中。5.5.2 恢復(fù)技術(shù)3、恢復(fù)策略 利用數(shù)據(jù)庫后備副本和日志文件可將數(shù)據(jù)庫恢復(fù)到故障前的某個一致性狀態(tài),但不同的故障其恢復(fù)策略和恢復(fù)技術(shù)通常是不一樣的。 (1) 事務(wù)故障的恢復(fù) (2 )系統(tǒng)故障的恢復(fù) (3 )介質(zhì)故障的恢復(fù) (4) 病毒故障的恢復(fù) (5)數(shù)據(jù)恢復(fù)的一般過程(1)事務(wù)故障的恢復(fù) 發(fā)生事務(wù)故障時,夭折的事務(wù)可能已把對數(shù)據(jù)庫的部分修改寫回磁盤。 恢復(fù)程序要在不影響其它事務(wù)運(yùn)行的情況下,強(qiáng)行回滾該事務(wù),即清除該事務(wù)對數(shù)據(jù)庫的所有修改,使得這個事務(wù)像根本沒有啟動一樣。 這類恢復(fù)操作稱為事務(wù)撤消(UND

13、O)。(1)事務(wù)故障的恢復(fù) 1)反向掃描日志文件(從日志文件末尾開始掃描),查找該事務(wù)的更新操作。 2)對該事務(wù)的更新執(zhí)行逆向操作,即將日志文件記錄中“更新前的值”寫入數(shù)據(jù)庫。 3)繼續(xù)反向掃描日志文件,查找該事務(wù)的其它更新操作,并做同樣處理。 4)如此處理下去,直至讀到此事務(wù)的開始標(biāo)記,事務(wù)故障恢復(fù)就算完成了。 事務(wù)故障的恢復(fù)是系統(tǒng)重新啟動后由DBMS自動完成的,不需要用戶干涉。(2)系統(tǒng)故障的恢復(fù)系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因系統(tǒng)故障造成數(shù)據(jù)庫不一致狀態(tài)的原因l未完成事務(wù)對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫未完成事務(wù)對數(shù)據(jù)庫的更新已寫入數(shù)據(jù)庫l已提交事務(wù)對數(shù)據(jù)庫的更新還留在緩沖區(qū)沒來得及已提交事

14、務(wù)對數(shù)據(jù)庫的更新還留在緩沖區(qū)沒來得及寫入數(shù)據(jù)庫寫入數(shù)據(jù)庫恢復(fù)方法恢復(fù)方法l1. Undo 1. Undo 故障發(fā)生時未完成的事務(wù)故障發(fā)生時未完成的事務(wù)l2. Redo 2. Redo 已完成的事務(wù)已完成的事務(wù)系統(tǒng)故障的恢復(fù)由系統(tǒng)在系統(tǒng)故障的恢復(fù)由系統(tǒng)在重新啟動時重新啟動時自動完成,不需要用自動完成,不需要用戶干預(yù)戶干預(yù)(2)系統(tǒng)故障的恢復(fù)步驟 1) 正向掃描日志文件,找出在故障發(fā)生前已經(jīng)提交的事務(wù),并將這些事務(wù)標(biāo)記記入重做隊列。同時還要找 出 故 障 發(fā) 生 時 尚 未 完 成 的 事 務(wù) ( 只 有 B E G I N TRANSACTION記錄,沒有相應(yīng)的COMMIT記錄),并將這些事務(wù)標(biāo)

15、記記入撤消隊列。 2) 對撤消隊列中的各個事務(wù)進(jìn)行撤消(UNDO)處理:反向掃描日志文件反向掃描日志文件,對每個UNDO事務(wù)的更新操作執(zhí)行逆操作。 3) 對重做隊列中的各個事務(wù)進(jìn)行重做(REDO)處理:正向掃描日志文件正向掃描日志文件,對每個REDO事務(wù)重新執(zhí)行日志文件登記的操作。(3)介質(zhì)故障的恢復(fù)(1)重裝數(shù)據(jù)庫 裝入數(shù)據(jù)庫發(fā)生介質(zhì)故障前某個時刻的數(shù)據(jù)庫后備副本(2)重做已完成的事務(wù) 重新執(zhí)行自此時開始的所有成功事務(wù),將這些事務(wù)已提交的結(jié)果重新記入數(shù)據(jù)庫。介質(zhì)故障的恢復(fù)需要DBA介入 但DBA只需要重新裝入最近轉(zhuǎn)儲的數(shù)據(jù)庫后備副本和有關(guān)的日志文件副本,然后執(zhí)行系統(tǒng)提供的恢復(fù)命令即可,具體的

16、恢復(fù)操作仍由DBMS自動完成。(3)介質(zhì)故障的恢復(fù)步驟 1)裝入最新的數(shù)據(jù)庫后備副本,使數(shù)據(jù)庫恢復(fù)到最近一次轉(zhuǎn)儲時刻的一致性狀態(tài)。n對于靜態(tài)轉(zhuǎn)儲的數(shù)據(jù)庫副本,裝入后數(shù)據(jù)庫即處于一致性狀態(tài)n對于動態(tài)轉(zhuǎn)儲的數(shù)據(jù)庫副本,還須同時裝入轉(zhuǎn)儲時刻的日志文件副本,利用與系統(tǒng)故障恢復(fù)相同的方法(即REDO+UNDO),將數(shù)據(jù)庫恢復(fù)到一致性狀態(tài)。 2)裝入轉(zhuǎn)儲結(jié)束時刻的日志文件副本,重做已經(jīng)完成的事務(wù)。l即掃描日志文件,找出故障發(fā)生時已提交的事務(wù)的標(biāo)記,將其記入重做對列;l然后正向掃描日志文件,對重做隊列中的所有事務(wù)進(jìn)行重做處理。這樣就可以將數(shù)據(jù)庫恢復(fù)到故障前某一時刻的一致狀態(tài)。(4)病毒故障的恢復(fù) 計算機(jī)病毒

17、對數(shù)據(jù)庫可能造成的破壞,其破壞的結(jié)果不會超過事務(wù)故障、系統(tǒng)故障和介質(zhì)故障的范疇。 當(dāng)數(shù)據(jù)庫被計算機(jī)病毒破壞后,恢復(fù)方法除了重新啟動之前要先殺毒以外,其它恢復(fù)步驟與前面介紹的三種方法之一相同。數(shù)據(jù)恢復(fù)的一般過程 1)做數(shù)據(jù)拷貝工作:將數(shù)據(jù)庫后備副本拷貝到數(shù)據(jù)庫系統(tǒng)中。 2)做事務(wù)恢復(fù)第1步:檢查日志文件,確定哪些事務(wù)已執(zhí)行結(jié)束,哪些尚未結(jié)束。 3、做事務(wù)恢復(fù)第2步:對尚未結(jié)束的事務(wù)作撤消處理,對已執(zhí)行結(jié)束的事務(wù)按日志的記錄重做。 經(jīng)以上三步即可完成恢復(fù)工作,有些工作要由DBA負(fù)責(zé)參與完成。5.5.3 檢查點(diǎn)機(jī)制 上節(jié)介紹事務(wù)故障和系統(tǒng)故障的恢復(fù)都必須搜索日志,確定需要REDO和UNDO的事務(wù)。而

18、對于一個運(yùn)行較長時間的數(shù)據(jù)庫系統(tǒng)來說,勢必需要檢查所有日志記錄,產(chǎn)生如下問題: (1)搜索整個日志將耗費(fèi)大量的時間; (2)很多需要REDO的事務(wù)實(shí)際上早已將它們的更新操作結(jié)果寫到數(shù)據(jù)庫中,如果恢復(fù)子系統(tǒng)再重新執(zhí)行這些操作會浪費(fèi)大量時間。 5.5.3 檢查點(diǎn)機(jī)制 檢查點(diǎn)機(jī)制:通過設(shè)置日志文件的檢查點(diǎn),來最大限度地減少數(shù)據(jù)庫完全恢復(fù)時需要掃描日志文件的時間。 檢查點(diǎn)(checkpoint):日志文件中一條特殊的日志記錄(也稱為檢查點(diǎn)記錄),該記錄由數(shù)據(jù)庫恢復(fù)子系統(tǒng)定期地自動生成和維護(hù)。 系統(tǒng)故障發(fā)生后實(shí)施數(shù)據(jù)庫恢復(fù)時,將系統(tǒng)失敗時刻之前的第一個檢查點(diǎn)作為掃描日志文件的開始位置,就可避免掃描整個日

19、志文件。 5.5.3 檢查點(diǎn)機(jī)制 檢查點(diǎn)記錄的內(nèi)容包括: 1) 建立檢查點(diǎn)時刻所有正在執(zhí)行的事務(wù)清單。 2) 這些事務(wù)最近一個日志記錄的地址。 事務(wù)系統(tǒng)失敗檢查點(diǎn)k+1T1T2T3.T4T5運(yùn)行時間需要重作的事務(wù)需要回滾的事務(wù)修改已寫入數(shù)據(jù)庫的事務(wù)檢查點(diǎn)k5.6 5.6 數(shù)據(jù)庫的復(fù)制與相關(guān)技術(shù)數(shù)據(jù)庫的復(fù)制與相關(guān)技術(shù)5.6.1 數(shù)據(jù)庫的復(fù)制5.6.2 數(shù)據(jù)庫的鏡象5.6.3 RAID技術(shù)簡介5.6.1 數(shù)據(jù)庫的復(fù)制 復(fù)制是使數(shù)據(jù)庫更具容錯性的方法,主要用于分布式結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)中。它在多個場地保留數(shù)據(jù)庫的多個備份,這些備份可以是整個數(shù)據(jù)庫的副本,也可以是部分?jǐn)?shù)據(jù)庫的副本。 各個場地的用戶可以并發(fā)

20、地存取不同的數(shù)據(jù)庫副本。例如,當(dāng)一個用戶修改數(shù)據(jù)對數(shù)據(jù)庫加了排它鎖時,其它用戶就可以訪問數(shù)據(jù)庫的副本,而不必等待該用戶釋放鎖,這就進(jìn)一步提高了系統(tǒng)的并發(fā)度。 5.6.1 數(shù)據(jù)庫的復(fù)制數(shù)據(jù)庫的復(fù)制常有三種方式:對等復(fù)制、主/從復(fù)制和級聯(lián)復(fù)制。不同的復(fù)制方式提供了不同程度的數(shù)據(jù)一致性。 對等復(fù)制(Peertopeer)是最理想的復(fù)制方式。 在這種方式下,各個場地的數(shù)據(jù)庫地位是平等的,可以互相復(fù)制數(shù)據(jù)。用戶可以在任何場地讀取和更新公共數(shù)據(jù)集,在某一場地更新公共數(shù)據(jù)集時,DBMS會立即將數(shù)據(jù)傳送給所有其它副本。 主/從復(fù)制 主/從復(fù)制(Master/Slave),即數(shù)據(jù)只能從主數(shù)據(jù)庫復(fù)制到從數(shù)據(jù)庫中。

21、更新數(shù)據(jù)只能在主場地上進(jìn)行,從場地供用戶讀數(shù)據(jù)。但主場地出現(xiàn)故障時,更新數(shù)據(jù)的應(yīng)用可以轉(zhuǎn)到其中一個復(fù)制場地上。 這種復(fù)制方式實(shí)現(xiàn)起來比較簡單,易于維護(hù)數(shù)據(jù)一致性。主數(shù)據(jù)庫和各個復(fù)制數(shù)據(jù)庫在任何時候都必須保持事務(wù)的完整性。MasterSlave1Slave2Slave k 級聯(lián)復(fù)制 級聯(lián)復(fù)制(Cascade)是指:從主場地復(fù)制過來的數(shù)據(jù)又從該場地再次復(fù)制到其它場地,即A場地把數(shù)據(jù)復(fù)制到B場地,B場地又把這些數(shù)據(jù)或其中部分?jǐn)?shù)據(jù)再復(fù)制到其它場地。 級聯(lián)復(fù)制可以平衡當(dāng)前各種數(shù)據(jù)需求對網(wǎng)絡(luò)交通的壓力。DB1DB 1DB kDB k+1 DB k+r5.6.2 數(shù)據(jù)庫的鏡象問題的提出 介質(zhì)故障是對系統(tǒng)影響

22、最為嚴(yán)重的一種故障,當(dāng)系統(tǒng)出現(xiàn)介質(zhì)故障后,不僅用戶的應(yīng)用全部中斷,而且恢復(fù)起來也比較費(fèi)事。 為了能夠?qū)?shù)據(jù)庫從介質(zhì)故障中恢復(fù)過來,DBA必須周期性地轉(zhuǎn)儲數(shù)據(jù)庫,這加重了DBA的負(fù)擔(dān)。如果DBA忘記了轉(zhuǎn)儲數(shù)據(jù)庫,一旦發(fā)生介質(zhì)故障,就可能造成嚴(yán)重的損失。 能否自動解決以上問題?5.6.2 數(shù)據(jù)庫的鏡象 為避免存儲介質(zhì)磁盤出現(xiàn)故障而影響數(shù)據(jù)庫的可用性,DBMS提供了日志文件和數(shù)據(jù)庫的鏡象 (Mirror)功能。根據(jù)DBA的設(shè)置要求,DBMS自動把整個數(shù)據(jù)庫或其中的關(guān)鍵數(shù)據(jù)以及日志文件復(fù)制到另一個磁盤上,每當(dāng)主數(shù)據(jù)庫更新時,DBMS會自動把更新后的數(shù)據(jù)復(fù)制到鏡象磁盤上去,即DBMS自動保證鏡象數(shù)據(jù)與主

23、數(shù)據(jù)的一致性。 5.6.2 數(shù)據(jù)庫的鏡象 一旦主數(shù)據(jù)庫發(fā)生介質(zhì)故障,可以由鏡象磁盤繼續(xù)提供數(shù)據(jù)庫的可用性,同時DBMS自動利用鏡象磁盤進(jìn)行數(shù)據(jù)庫的恢復(fù),不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫后備副本。 在沒有出現(xiàn)故障時,數(shù)據(jù)庫鏡象還可以用于支持并發(fā)操作,即當(dāng)一個用戶對數(shù)據(jù)庫加排它鎖修改數(shù)據(jù)時,其他用戶可以直接讀鏡象數(shù)據(jù)庫,而不必等待該用戶釋放鎖。5.6.2 數(shù)據(jù)庫的鏡象 數(shù)據(jù)庫的鏡象是通過復(fù)制數(shù)據(jù)庫來實(shí)現(xiàn)的,頻繁地復(fù)制數(shù)據(jù)庫自然會降低系統(tǒng)運(yùn)行的效率。 在實(shí)際應(yīng)用中,用戶往往只選擇對關(guān)鍵的數(shù)據(jù)做鏡象,如日志文件鏡象,而不是對整個數(shù)據(jù)庫進(jìn)行鏡象。5.6.3 RAID技術(shù)簡介 RAID是英文Redundant

24、Array of Inexpensive(Independent) Disks的縮寫,即廉價冗余 (獨(dú)立)磁盤陣列,簡稱為磁盤陣列,是目前商用數(shù)據(jù)庫服務(wù)器都支持且廣泛使用的硬盤技術(shù)。 RAID技術(shù)的基本含義:廉價和冗余。 “廉價”就是價格便宜,因?yàn)槌杀疽蛩厥怯嬎銠C(jī)用戶不得不考慮的問題,所以廉價的磁盤陣列是吸引顧客的必要手段; “冗余”即數(shù)據(jù)冗余,因?yàn)閿?shù)據(jù)安全性和完整性是計算機(jī)用戶特別關(guān)注的重要問題之一,數(shù)據(jù)冗余將在一定程度上保證數(shù)據(jù)的安全性和完整性。5.6.3 RAID技術(shù)簡介 RAID包含多塊磁盤,但是在操作系統(tǒng)下是作為一個獨(dú)立的大型存儲設(shè)備出現(xiàn)的,它可滿足在某些特定的應(yīng)用領(lǐng)域里不斷擴(kuò)大磁盤

25、容量的需求。 RAID技術(shù)分為RAID0、1、2、3、4、5等幾個不同的等級標(biāo)準(zhǔn). RAID0又可以配合后面幾種進(jìn)行更多的功能組合,形成RAID10、30、50等工作方式。 這些等級標(biāo)準(zhǔn)分別為用戶提供了速度、價格、容量和安全性不相同的磁盤陣列的多種選擇。 5.6.3 RAID技術(shù)簡介 RAID0,又稱為磁盤條塊化(Striping)工作方式,也稱數(shù)據(jù)拆分方式。工作狀態(tài)是幾個磁盤同時工作,系統(tǒng)傳輸來的數(shù)據(jù),經(jīng)過RAID控制器將數(shù)據(jù)平均分配到磁盤陣列的各個磁盤中。 當(dāng)用戶需要數(shù)據(jù)時再將數(shù)據(jù)聚集起來,且這一切工作都是計算機(jī)系統(tǒng)自動完成的。 RAID0的主要工作目的是獲得更大的“單個”磁盤容量,同時獲

26、得更高的存取速度。 01101100控制器數(shù)據(jù):011011005.6.3 RAID技術(shù)簡介 RAID1,又稱為鏡像(Mirroring)工作方式。它的出現(xiàn)完全是出于數(shù)據(jù)安全性方面的考慮,因?yàn)樵诖疟P陣列中,只有一半的磁盤容量是有效的,而另一半用來存放前一半磁盤的鏡象數(shù)據(jù),也就是冗余數(shù)據(jù)。 與RAID0相比,RAID1是另一個極端。RAID1則首要考慮數(shù)據(jù)的安全性,磁盤容量可以減半而速度可以不變。0110110001101100控制器數(shù)據(jù):011011005.6.3 RAID技術(shù)簡介 如果既要達(dá)到相對較高的存取速度又要較高的安全性目的,RAID10 (或者RAID0+1)就可以解決。 RAID10也可以簡單的理解成兩個分別由多個磁盤組成的RAID0陣列再進(jìn)行鏡像。其實(shí)反過來理解也沒有錯。 0110110001101100控制器數(shù)據(jù):011011005.6.3 RAID技術(shù)簡介 RAID3和RAID 5都是校驗(yàn)的工作方式。就像

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論