什么是備份 所謂備份,就是把數(shù)據(jù)庫(kù)復(fù)制到轉(zhuǎn)儲(chǔ)設(shè)備的過(guò)程。其中,轉(zhuǎn)儲(chǔ)設(shè)備是指用于放置數(shù)據(jù)庫(kù)拷貝的磁帶或磁盤(pán)。通常也將存放于轉(zhuǎn)儲(chǔ)設(shè)備中的數(shù)據(jù)庫(kù)的拷貝稱為原數(shù)據(jù)庫(kù)的備份或轉(zhuǎn)儲(chǔ)。如下圖所示: ORACLE數(shù)據(jù)庫(kù)的備份分為物理備份和邏輯備份兩種。物理備份是將實(shí)際組成數(shù)據(jù)庫(kù)的操作系統(tǒng)文件從一處拷貝到另一處的備份過(guò)程,通常是從磁盤(pán)到磁帶??梢允褂?Oracle 的恢復(fù)管理器(Recovery Manager,RMAN)或操作系統(tǒng)命令進(jìn)行數(shù)據(jù)庫(kù)的物理備份。邏輯備份是利用SQL語(yǔ)言從數(shù)據(jù)庫(kù)中抽取數(shù)據(jù)并存于二進(jìn)制文件的過(guò)程。Oracle提供的邏輯備份工具是 EXP。 數(shù)據(jù)庫(kù)邏輯備份是物理備份的補(bǔ)充。 根據(jù)在物理備份時(shí)數(shù)據(jù)庫(kù)的狀態(tài),可以將備份分為一致性備份(consistent backup)和不一致性備份(inconsistent backup)兩種: 一致性備份:一致性備份是當(dāng)數(shù)據(jù)庫(kù)的所有可讀寫(xiě)的數(shù)據(jù)庫(kù)文件和控制文件具有相同的系統(tǒng)改變號(hào)(SCN),并且數(shù)據(jù)文件不包含當(dāng)前 SCN 之外的任何改變。在做數(shù)據(jù)庫(kù)檢查點(diǎn)時(shí),Oracle 使所有的控制文件和數(shù)據(jù)文件一致。對(duì)于只讀表空間和脫機(jī)的表空間,Oracle 也認(rèn)為它們是一致的。使數(shù)據(jù)庫(kù)處于一致?tīng)顟B(tài)的唯一方法是數(shù)據(jù)庫(kù)正常關(guān)閉(用shutdown normal 或 shutdown immediate 命令關(guān)閉)。因此,只有在以下條件下的備份是一致性備份: 數(shù)據(jù)庫(kù)正常關(guān)閉(用shutdown normal 或 shutdown immediate 命令關(guān)閉)。 不一致性備份:不一致備份是當(dāng)數(shù)據(jù)庫(kù)的可讀寫(xiě)的數(shù)據(jù)庫(kù)文件和控制文件的系統(tǒng)改變號(hào)(SCN)在不一致條件下的備份。對(duì)于一個(gè) 7*24 工作的數(shù)據(jù)庫(kù)來(lái)說(shuō),由于不可能關(guān)機(jī),而數(shù)據(jù)庫(kù)數(shù)據(jù)是不斷改變的,因此只能進(jìn)行不一致備份。在 SCN 號(hào)不一致的條件下,數(shù)據(jù)庫(kù)必須通過(guò)應(yīng)用重做日志使 SCN 一致的情況下才能啟動(dòng)。因此,如果進(jìn)行不一致備份,數(shù)據(jù)庫(kù)必須設(shè)為歸檔狀態(tài),并對(duì)重做日志歸檔才有意義。在以下條件下的備份是不一致性備份: 數(shù)據(jù)庫(kù)處于打開(kāi)狀態(tài)。 數(shù)據(jù)庫(kù)處于關(guān)閉狀態(tài),但是用非正常手段關(guān)閉的。例如,數(shù)據(jù)庫(kù)是通過(guò) shutdown abort 或機(jī)器掉電等等方法關(guān)閉的。 什么是恢復(fù) 所謂恢復(fù),就是把數(shù)據(jù)庫(kù)由存在故障的狀態(tài)轉(zhuǎn)變?yōu)闊o(wú)故障狀態(tài)的過(guò)程。根據(jù)出現(xiàn)故障的原因,恢復(fù)分為兩種類(lèi)型: 實(shí)例恢復(fù)。這種恢復(fù)是Oracle實(shí)例出現(xiàn)失敗后,Oracle自動(dòng)進(jìn)行的恢復(fù)。 介質(zhì)恢復(fù)。這種恢復(fù)是當(dāng)存放數(shù)據(jù)庫(kù)的介質(zhì)出現(xiàn)故障時(shí)所做的恢復(fù)。本書(shū)后面提到的恢復(fù)都是指介質(zhì)恢復(fù)。 裝載(restore)物理備份與恢復(fù)(Recover)物理備份是介質(zhì)恢復(fù)的手段。裝載是將備份考回到磁盤(pán),恢復(fù)是利用重做日志(物理備份的一部分)修改考回到磁盤(pán)的數(shù)據(jù)文件(物理備份的另一部分),從而恢復(fù)數(shù)據(jù)庫(kù)的過(guò)程。如下圖所示: 根據(jù)數(shù)據(jù)庫(kù)的恢復(fù)程度,將恢復(fù)方法分為兩種類(lèi)型: 完全恢復(fù):將數(shù)據(jù)庫(kù)恢復(fù)到數(shù)據(jù)庫(kù)失敗時(shí)數(shù)據(jù)庫(kù)的狀態(tài)。這種恢復(fù)是通過(guò)裝載數(shù)據(jù)庫(kù)備份和并應(yīng)用全部的重做日志做到的。 不完全恢復(fù):將數(shù)據(jù)庫(kù)恢復(fù)到數(shù)據(jù)庫(kù)失敗前的某一時(shí)刻數(shù)據(jù)庫(kù)的狀態(tài)。這種恢復(fù)是通過(guò)裝載數(shù)據(jù)庫(kù)備份和并應(yīng)用部分的重做日志做到的。進(jìn)行不完全恢復(fù)后必須在啟動(dòng)數(shù)據(jù)庫(kù)時(shí)用 resetlogs 選項(xiàng)重設(shè)聯(lián)機(jī)重做日志。 例如,在上午10:00,由于磁盤(pán)損壞導(dǎo)致數(shù)據(jù)庫(kù)中止使用?,F(xiàn)在使用兩種方法進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù),第一種方法使數(shù)據(jù)庫(kù)可以正常使用,且使恢復(fù)后與損壞時(shí)(10:00)數(shù)據(jù)庫(kù)中的數(shù)據(jù)相同,那么第一種恢復(fù)方法就屬于完全恢復(fù)類(lèi)型;第二種方法能使數(shù)據(jù)庫(kù)正常使用,但只能使恢復(fù)后與損壞前(例如9:00)數(shù)據(jù)庫(kù)中的數(shù)據(jù)相同,沒(méi)能恢復(fù)數(shù)據(jù)庫(kù)到失敗時(shí)(10:00)數(shù)據(jù)庫(kù)的狀態(tài),那么第二種恢復(fù)方法就屬于不完全恢復(fù)類(lèi)型。 事實(shí)上,如果數(shù)據(jù)庫(kù)備份是一致性的備份,則裝載后的數(shù)據(jù)庫(kù)即可使用,從而也可以不用重做日志恢復(fù)到數(shù)據(jù)庫(kù)備份時(shí)的點(diǎn)。這也是一種不完全恢復(fù)。 備份與恢復(fù)的關(guān)系 備份一個(gè)ORACLE數(shù)據(jù)庫(kù),類(lèi)似于買(mǎi)醫(yī)療保險(xiǎn)——在遇到疾病之前不會(huì)意識(shí)到它的重要性,獲得保險(xiǎn)金的數(shù)量取決于保險(xiǎn)單的種類(lèi)。同理,隨著制作備份的種類(lèi)和頻繁程度的不同,數(shù)據(jù)庫(kù)發(fā)生故障后其恢復(fù)的可行性、難度與所花費(fèi)的時(shí)間也不同。 數(shù)據(jù)庫(kù)故障是指數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中影響數(shù)據(jù)庫(kù)正常使用的特殊事件。數(shù)據(jù)庫(kù)故障有許多類(lèi)型,最嚴(yán)重的是介質(zhì)失?。ㄈ绱疟P(pán)損壞),這種故障如不能恢復(fù)將導(dǎo)致數(shù)據(jù)庫(kù)中數(shù)據(jù)的丟失。數(shù)據(jù)庫(kù)故障類(lèi)型有: 語(yǔ)句失敗。 用戶進(jìn)程失敗。 實(shí)例失敗。 用戶或應(yīng)用錯(cuò)誤操作。這類(lèi)錯(cuò)誤可能是意外地刪除了表中的數(shù)據(jù)等錯(cuò)誤操作。 介質(zhì)失敗。如硬盤(pán)失敗,硬盤(pán)中的數(shù)據(jù)丟失。 自然災(zāi)害。如地震、洪水等。 由于故障類(lèi)型的不同,恢復(fù)數(shù)據(jù)庫(kù)的方法也不同。通過(guò)裝載備份來(lái)恢復(fù)數(shù)據(jù)庫(kù)既是常用的恢復(fù)手段,也是恢復(fù)介質(zhì)失敗故障的主要方法。 備份與恢復(fù)要考慮的問(wèn)題 備份與恢復(fù)要考慮以下的三個(gè)問(wèn)題: 備份與恢復(fù)策略要考慮的商業(yè)、操作、及技術(shù)問(wèn)題 災(zāi)難恢復(fù)計(jì)劃的組成 測(cè)試備份與恢復(fù)策略的重要性 能夠進(jìn)行什么樣的恢復(fù)依賴于有什么樣的備份。作為 DBA,有責(zé)任從以下三個(gè)方面維護(hù)數(shù)據(jù)庫(kù)的可恢復(fù)性: 使數(shù)據(jù)庫(kù)的失效次數(shù)減到最少,從而使數(shù)據(jù)庫(kù)保持最大的可用性; 當(dāng)數(shù)據(jù)庫(kù)不可避免地失效后,要使恢復(fù)時(shí)間減到最少,從而使恢復(fù)的效率達(dá)到最高; 當(dāng)數(shù)據(jù)庫(kù)失效后,要確保盡量少的數(shù)據(jù)丟失或根本不丟失,從而使數(shù)據(jù)具有最大的可恢復(fù)性。 備份與恢復(fù)策略要考慮的商業(yè)、操作、及技術(shù)問(wèn)題 作為 DBA,首先需要了解企業(yè)是如何使用數(shù)據(jù)庫(kù)系統(tǒng)的,以及企業(yè)對(duì)數(shù)據(jù)庫(kù)的可用性,恢復(fù)性能,和數(shù)據(jù)的可恢復(fù)性以及恢復(fù)時(shí)間的要求。然后,DBA 需要使企業(yè)的管理人員了解維護(hù)這樣的數(shù)據(jù)庫(kù)的可用性的代價(jià)有多大。做到這點(diǎn)的最好方法是評(píng)估恢復(fù)需要的花費(fèi),以及丟失數(shù)據(jù)給企業(yè)帶來(lái)的損失。 在代價(jià)被評(píng)估后,就可以進(jìn)行備份與恢復(fù)的討論了。此時(shí),要定義數(shù)據(jù)庫(kù)總體的可用性需求,并根據(jù)各項(xiàng)工作對(duì)數(shù)據(jù)庫(kù)可用性的影響程度來(lái)定義工作重點(diǎn)的次序。例如,如果數(shù)據(jù)庫(kù)需要 7*24 的可用性,那么其重要性就高于其它任何工作,其它任何需要關(guān)機(jī)才能做的工作就不能做。 另外,數(shù)據(jù)庫(kù)變化的情況也是備份與恢復(fù)策略需要考慮的一個(gè)因素。例如,如果數(shù)據(jù)不斷改變,有新數(shù)據(jù)或數(shù)據(jù)文件加入,或表結(jié)構(gòu)有大的變化,則應(yīng)該經(jīng)常備份;反之,如果數(shù)據(jù)是靜態(tài)的或只讀的,則備份一次即可。無(wú)論如何,應(yīng)遵從這樣一個(gè)原則,如果懷疑數(shù)據(jù)庫(kù)的可恢復(fù)性,就應(yīng)該備份。 災(zāi)難恢復(fù)計(jì)劃的組成 針對(duì)災(zāi)難恢復(fù),必須回答下述問(wèn)題: 系統(tǒng)可能出現(xiàn)什么樣的災(zāi)難恢復(fù)情況? 如果出現(xiàn)數(shù)據(jù)丟失,災(zāi)難恢復(fù)情況是怎樣的? 系統(tǒng)中數(shù)據(jù)的易變程度如何? 如果出現(xiàn)問(wèn)題,系統(tǒng)需要多快的速度恢復(fù)? 在各種情況下恢復(fù)策略的代價(jià),以及相應(yīng)的花時(shí)間重新錄入數(shù)據(jù)的代價(jià)? 對(duì)這些問(wèn)題的回答組成了災(zāi)難恢復(fù)計(jì)劃。 計(jì)算機(jī)是易壞的。主板上的芯片、主板電路、內(nèi)存、電源等任何一項(xiàng)不能正常工作,都會(huì)導(dǎo)致計(jì)算機(jī)系統(tǒng)不能正常工作。當(dāng)然,這些損壞可以修復(fù),不會(huì)導(dǎo)致應(yīng)用和數(shù)據(jù)的損壞。但是,如果計(jì)算機(jī)的硬盤(pán)損壞,將會(huì)導(dǎo)致數(shù)據(jù)丟失,此時(shí)必須用備份恢復(fù)數(shù)據(jù)。 災(zāi)難恢復(fù)的最重要步驟是設(shè)計(jì)充足頻率的硬盤(pán)備份過(guò)程。備份過(guò)程應(yīng)該滿足系統(tǒng)要求的可恢復(fù)性。例如,如果數(shù)據(jù)庫(kù)可有較長(zhǎng)的關(guān)機(jī)時(shí)間,則可以每周進(jìn)行一次冷備份,并歸檔重做日志;但是,如果數(shù)據(jù)庫(kù)只有極少的關(guān)機(jī)時(shí)間,則只能從硬件的角度來(lái)考慮備份與恢復(fù)的問(wèn)題,例如使用硬盤(pán)鏡像或雙機(jī)系統(tǒng)。選擇備份策略的依據(jù)是:丟是數(shù)據(jù)的代價(jià)與確保數(shù)據(jù)不丟失的代價(jià)之比。 果每天都能備份當(dāng)然會(huì)很理想,但要考慮其現(xiàn)實(shí)性。企業(yè)都在想辦法降低維護(hù)成本,現(xiàn)實(shí)的方案才可能被采用。只要仔細(xì)計(jì)劃,并想辦法達(dá)到數(shù)據(jù)庫(kù)可用性的底線,花少量的錢(qián)進(jìn)行成功的備份與恢復(fù)也是可能的。 DBA 還應(yīng)以服務(wù)協(xié)議的形式制訂一個(gè)可恢復(fù)性與可用性的標(biāo)準(zhǔn)文件。該文件應(yīng)成為討論DBA 服務(wù),以及服務(wù)是否能達(dá)到預(yù)期標(biāo)準(zhǔn)的依據(jù)。這樣做可使所有相關(guān)人員對(duì)同樣的預(yù)期有潛在的危機(jī)感。 測(cè)試備份與恢復(fù)策略的重要性 備份與恢復(fù)策略必須經(jīng)測(cè)試無(wú)誤后才可使用。如果進(jìn)行了備份,但不知道該備份是否支持希望的恢復(fù)目標(biāo)則與根本沒(méi)有備份沒(méi)有兩樣。 恢復(fù)策略也要考慮慮對(duì)環(huán)境的依賴性。例如,假如機(jī)器的硬盤(pán)失效了,供貨商能在多長(zhǎng)時(shí)間內(nèi)提供一個(gè)新的硬盤(pán);在機(jī)器需要重新啟動(dòng)時(shí),能找到操作系統(tǒng)管理員嗎? 另外一個(gè)需要考慮的問(wèn)題是數(shù)據(jù)庫(kù)是否能經(jīng)受自然的破壞。應(yīng)在與計(jì)算機(jī)不同的地方再存儲(chǔ)一份備份介質(zhì),以免出現(xiàn)自然災(zāi)害時(shí)主機(jī)與備份一起遭到破壞。 最后需要考慮的問(wèn)題是萬(wàn)一DBA 出現(xiàn)了問(wèn)題怎么辦?后備的DBA能否執(zhí)行備份策略?他或她能找到支持用的文檔嗎?這些文檔存在嗎? 沒(méi)有比花了大精力指定了好的計(jì)劃,但沒(méi)有測(cè)試其有效性而使其付諸東流的了。一個(gè)好的計(jì)劃還應(yīng)容納人為錯(cuò)誤,特別是用于開(kāi)發(fā)的系統(tǒng)。理想的測(cè)試計(jì)劃應(yīng)包括以下內(nèi)容: 一系列的測(cè)試?yán)蛹捌錉顟B(tài)描述; 測(cè)試結(jié)果是否成功的標(biāo)準(zhǔn); 解決這些狀態(tài)的步驟。 只有在上述情況測(cè)試成功的前提下,DBA 才應(yīng)該考慮把備份 |
|