目前最大的備份軟件公司非Veritas公司莫屬,Veritas的備份軟件產(chǎn)品有Exec和netbackup兩大類,exec為入門級產(chǎn)品,這里不作討論。netbackup(以后簡稱nb),我的總結(jié)是:“功能真他媽強(qiáng),操作全要命令行”。我認(rèn)為Veritas的操作非常復(fù)雜,可Veritas的技術(shù)支持是這么解釋的,“nb是一個(gè)企業(yè)級的備份軟件,只需要在開始進(jìn)行調(diào)試,調(diào)試好了就不需要再管了。 所以調(diào)試時(shí)復(fù)雜就復(fù)雜吧”
nb的最大特點(diǎn)是介質(zhì)管理,但是在數(shù)據(jù)庫備份上卻沒做什么事情,以O(shè)racle數(shù)據(jù)庫備份為例,Vertias的一個(gè)Oracle Agent的價(jià)格和server license的價(jià)格相同,但Veritas做了什么呢:
1,提供一個(gè)通道,只要使用Oracle的rman工具備份通道為sbttape,數(shù)據(jù)就傳送到veritas的介質(zhì)管理器,由他來決定數(shù)據(jù)存放到什么位置。
2,定期執(zhí)行備份腳本。
Veritas最然在數(shù)據(jù)庫備份方面做得不多,但他寫的關(guān)于數(shù)據(jù)庫的文章還是不錯(cuò)的,文章是英文的,把翻譯的部分分享給大家。
數(shù)據(jù)庫
數(shù)據(jù)庫就是結(jié)構(gòu)化的數(shù)據(jù)倉庫。人們時(shí)刻都在和數(shù)據(jù)打交道,如:存儲在個(gè)人掌上電腦(PDA)中的數(shù)據(jù)、家庭預(yù)算電子數(shù)據(jù)表,等等。對于少量、簡單的數(shù)據(jù),如果它們與其它數(shù)據(jù)之間的關(guān)聯(lián)較少或沒有關(guān)聯(lián)的情況下,他們可以簡單的存放在文件中,如錯(cuò)誤!未找到引用源。. 中描述的。當(dāng)然如果所有的數(shù)據(jù)結(jié)構(gòu)都很簡單,那么數(shù)據(jù)庫管理系統(tǒng)就沒什么用了。
但是企業(yè)數(shù)據(jù)都是相關(guān)聯(lián)的。如:職員表鏈接到名稱和地址的記錄,訂單記錄需要與庫存信息相對應(yīng),海運(yùn)記錄需要與信用額度相對應(yīng),等等。通常來說,不可能使用普通的記錄文件來管理大量的、復(fù)雜的系列數(shù)據(jù),如:銀行的客戶數(shù)據(jù),或者生產(chǎn)廠商的的生產(chǎn)控制數(shù)據(jù)。普通記錄文件沒有系統(tǒng)結(jié)構(gòu)來系統(tǒng)的反映數(shù)據(jù)間的復(fù)雜關(guān)系,它也不能強(qiáng)制定義個(gè)別數(shù)據(jù)對象。
數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(DBMSs),或者數(shù)據(jù)庫管理器,已經(jīng)發(fā)展了近二十年,來解決上面提到的這些需求。數(shù)據(jù)庫管理器是近似于文件系統(tǒng)的軟件系統(tǒng),通過它,應(yīng)用程序和用戶可以取得所需的數(shù)據(jù)。然而,它們又不象文件系統(tǒng),它們定義了所管理的數(shù)據(jù)之間的結(jié)構(gòu)和約束關(guān)系。并且,數(shù)據(jù)庫管理器提供了一些基本的數(shù)據(jù)管理函數(shù):
數(shù)據(jù)安全: 在商業(yè)上,數(shù)據(jù)庫必須是一個(gè)可以存儲數(shù)據(jù)的安全的地方。數(shù)據(jù)庫管理器必須提供有效的備份和恢復(fù)能力,來確保在災(zāi)難和錯(cuò)誤后,數(shù)據(jù)能夠盡快的可以被應(yīng)用所訪問。
數(shù)據(jù)安全: 對于一個(gè)企業(yè)來說,它把關(guān)鍵的和重要的數(shù)據(jù)存放在數(shù)據(jù)庫中,數(shù)據(jù)庫管理系統(tǒng)必須能夠防止未授權(quán)的數(shù)據(jù)訪問。
數(shù)據(jù)共享: 一個(gè)數(shù)據(jù)庫必須允許多個(gè)應(yīng)用和用戶同時(shí)進(jìn)行數(shù)據(jù)訪問,而且不影響數(shù)據(jù)的完整性。例如:如果兩個(gè)用戶試圖同時(shí)修改同一條記錄,兩個(gè)修改操作都必須被處理,并且產(chǎn)生一個(gè)可理解的干凈的結(jié)果。
數(shù)據(jù)組織: 基于文件的數(shù)據(jù)的主要優(yōu)勢就在于它利用了數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)庫的結(jié)構(gòu)使開發(fā)者避免了針對每一個(gè)應(yīng)用都需要重新定義數(shù)據(jù)邏輯關(guān)系的過程。
數(shù)據(jù)庫數(shù)據(jù)模型
數(shù)據(jù)庫管理系統(tǒng)的發(fā)展已經(jīng)經(jīng)歷了一個(gè)漫長復(fù)雜的過程。人們提出了許多數(shù)據(jù)模型,并一一實(shí)現(xiàn)。其中比較重要的三個(gè)就是:
分級模型: 在一個(gè)分級的數(shù)據(jù)庫中,數(shù)據(jù)項(xiàng)間具有父項(xiàng)與子項(xiàng)的關(guān)系。例如:一個(gè)顧客的記錄包括名稱和地址信息,它可能就是一系列訂單記錄的父項(xiàng),每個(gè)訂單記錄包含了關(guān)于這個(gè)訂單的詳細(xì)信息。
網(wǎng)絡(luò)模型: 在一個(gè)網(wǎng)絡(luò)數(shù)據(jù)庫中,數(shù)據(jù)項(xiàng)之間有更多的相互關(guān)系。這些關(guān)系通常用來描述一個(gè)圖形形狀,或者網(wǎng)絡(luò)中形成刀片結(jié)構(gòu)的那些節(jié)點(diǎn)和它們之間的關(guān)系。
關(guān)系模型: 在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)項(xiàng)保存在行中,文件就象是一個(gè)表。關(guān)系被描述成不同數(shù)據(jù)表間的匹配關(guān)系。一個(gè)區(qū)別關(guān)系模型和網(wǎng)絡(luò)及分級型數(shù)據(jù)庫的重要一點(diǎn)就是數(shù)據(jù)項(xiàng)關(guān)系可以被動態(tài)的描述或定義,而不需要因?yàn)榻Y(jié)構(gòu)被改變而卸載然后重新加載數(shù)據(jù)庫。
關(guān)系模型
早在1980年,數(shù)據(jù)庫市場就被關(guān)系型數(shù)據(jù)庫管理系統(tǒng)所占領(lǐng)。關(guān)系模型的成功并不在意料之外。這個(gè)模型基于一個(gè)可靠的基礎(chǔ),它可以簡單并恰當(dāng)?shù)膶?shù)據(jù)項(xiàng)描述成為表(table)中的記錄行(raw)。關(guān)系模型第一次廣泛的推行是在1980年中,是因?yàn)橐环N標(biāo)準(zhǔn)的數(shù)據(jù)庫訪問程序語言被開發(fā)出來,它被稱作結(jié)構(gòu)查詢語言(SQL)。
今天,成千上萬使用關(guān)系型數(shù)據(jù)庫的應(yīng)用程序已經(jīng)被開發(fā)出來,包括跟蹤客戶端處理的銀行系統(tǒng),倉庫貨物管理系統(tǒng),客戶關(guān)系管理(CRM)系統(tǒng),以及人力資源管理系統(tǒng)。由于數(shù)據(jù)庫保證了數(shù)據(jù)的完整性,企業(yè)通常將他們的關(guān)鍵業(yè)務(wù)數(shù)據(jù)存放在數(shù)據(jù)庫中。因此保護(hù)數(shù)據(jù)庫避免錯(cuò)誤以及災(zāi)難已經(jīng)成為企業(yè)所關(guān)注的重點(diǎn)。
[page]
數(shù)據(jù)庫備份中的一致性和實(shí)時(shí)性
一致性和實(shí)時(shí)性
一個(gè)一致性的數(shù)據(jù)庫就是指數(shù)據(jù)處理響應(yīng)完成了的數(shù)據(jù)庫。例如:一個(gè)會計(jì)數(shù)據(jù)庫,當(dāng)它的記入借方與相應(yīng)的貸方記錄相匹配的情況下,它就是數(shù)據(jù)一致的。
一個(gè)實(shí)時(shí)的數(shù)據(jù)庫就是指所有的事務(wù)全部執(zhí)行完畢后才響應(yīng)。如果一個(gè)正在運(yùn)行數(shù)據(jù)庫管理的系統(tǒng)崩潰了,而對事務(wù)的處理結(jié)果還存在緩存中而沒有寫入到磁盤文件中的情況,當(dāng)系統(tǒng)重新啟動時(shí),系統(tǒng)數(shù)據(jù)就是非實(shí)時(shí)性的。
數(shù)據(jù)庫日志被用來在災(zāi)難發(fā)生后恢復(fù)數(shù)據(jù)庫時(shí)保證數(shù)據(jù)庫的一致性和實(shí)時(shí)性。
數(shù)據(jù)庫恢復(fù)
正規(guī)的數(shù)據(jù)庫備份是最基本和有效的數(shù)據(jù)庫容災(zāi)技術(shù)。數(shù)據(jù)庫備份和恢復(fù)技術(shù)與我們在錯(cuò)誤!未找到引用源。中講述的文件系統(tǒng)的備份和恢復(fù)是不同的。
數(shù)據(jù)庫事務(wù)
如果要明白備份恢復(fù)技術(shù),明白數(shù)據(jù)庫事務(wù)的種類是很有用的。一個(gè)事務(wù)就是一個(gè)事務(wù)活動所引起的一系列的數(shù)據(jù)庫操作。例如,一個(gè)會計(jì)事務(wù)可能是由以下部分組成:
讀取借方數(shù)據(jù)
減去借方記錄中的借款數(shù)量
重寫借方記錄
讀取貸方記錄
在貸方記錄上的數(shù)量加上從借方扣除的數(shù)量
重寫貸方記錄
寫一條單獨(dú)的記錄來描述這次操作,以便日后審計(jì)
所有這些操作組成了一個(gè)事務(wù),描述了一個(gè)業(yè)務(wù)動作。在上述例子中,無論借方的動作或是貸方的動作哪一個(gè)沒有被執(zhí)行,數(shù)據(jù)庫都不會反映該業(yè)務(wù)執(zhí)行正確。
數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)庫操作時(shí)強(qiáng)迫進(jìn)行事務(wù)定義,這意味著或者一個(gè)事務(wù)定義的應(yīng)用的全部操作結(jié)果都反映在數(shù)據(jù)庫中,或者都沒有反映在數(shù)據(jù)庫中,即使數(shù)據(jù)庫在事務(wù)執(zhí)行過程中崩潰的情況下。
事務(wù)定義是關(guān)系數(shù)據(jù)庫中最重要的關(guān)系之一。上述例子包含了兩個(gè)數(shù)據(jù)庫操作:從借方數(shù)據(jù)中扣除資金,并且在貸方記錄中加入這部分資金。如果系統(tǒng)在執(zhí)行事務(wù)的過程中崩潰,如果此時(shí)已修改完畢借方數(shù)據(jù),但還沒有修改貸方數(shù)據(jù),資金就會在此時(shí)物化。把這兩個(gè)步驟合并成一個(gè)事務(wù)命令,這樣在數(shù)據(jù)庫系統(tǒng)執(zhí)行時(shí),要么全部完成,要么全部不完成,但當(dāng)只完成一步時(shí),系統(tǒng)是不會對已作的這一步做出響應(yīng)的。
數(shù)據(jù)庫崩潰恢復(fù)
一個(gè)運(yùn)行著數(shù)據(jù)庫系統(tǒng)的計(jì)算機(jī)隨時(shí)都可能宕機(jī)。然而“已借未貸”或“已貸未借”的情況都可能出現(xiàn)。當(dāng)系統(tǒng)崩潰后重啟時(shí),數(shù)據(jù)庫管理系統(tǒng)必須允許這種可能性的發(fā)生,也就是說,在磁盤數(shù)據(jù)文件中可能包含一些部分完成的事務(wù),在應(yīng)用能夠訪問數(shù)據(jù)庫數(shù)據(jù)之前,這些必須全部被檢出。
防止上述情況發(fā)生的基本技術(shù)就是保存一份連續(xù)日志,記錄將做的和完成的操作。當(dāng)需要修復(fù)損壞的數(shù)據(jù)庫時(shí),數(shù)據(jù)庫系統(tǒng)重新應(yīng)用這些日志,尋找那些將要執(zhí)行但未完成的任務(wù)。如果任何類似的事務(wù)的已經(jīng)在數(shù)據(jù)庫中反映,這一定是顛倒的,并且數(shù)據(jù)庫必須回滾。
使用這種日志重新應(yīng)用的技術(shù),數(shù)據(jù)庫系統(tǒng)可以避免宕機(jī)所帶來的已接受事務(wù)(應(yīng)用已確認(rèn)執(zhí)行完畢的事務(wù))的丟失。數(shù)據(jù)修復(fù)時(shí),那些在宕機(jī)時(shí)處理結(jié)果還存在緩存中的已接受事務(wù),結(jié)果會存放到磁盤文件中。未接受事務(wù)(還沒有被應(yīng)用確認(rèn)的事務(wù))會被回滾,消除它所帶來的對其他數(shù)據(jù)的影響。為了幫助解釋數(shù)據(jù)庫日志如何工作,F(xiàn)igure 1-1描述了一個(gè)簡單的數(shù)據(jù)庫管理組件。
[page]
文件系統(tǒng)緩存和數(shù)據(jù)庫恢復(fù)
如果使用文件作為數(shù)據(jù)庫的數(shù)據(jù)存儲方式會給我們的討論增加一些額外的復(fù)雜性,因?yàn)槲募芾硐到y(tǒng)有它自己的緩存。如果一個(gè)數(shù)據(jù)庫系統(tǒng)在宕機(jī)后立刻重新啟動,那么它所包含的文件可能并沒有實(shí)時(shí)刷新到存儲中,這是由于在系統(tǒng)宕機(jī)時(shí),文件系統(tǒng)的緩存沒有寫入到存儲的原因 。在這種情況下,數(shù)據(jù)庫恢復(fù)進(jìn)程必須重新應(yīng)用數(shù)據(jù)日志刷新。也就是說,在系統(tǒng)宕機(jī)的情況下已接受事務(wù)也不會丟失。
歸檔日志:
長時(shí)間的數(shù)據(jù)庫恢復(fù)
大多數(shù)的數(shù)據(jù)庫都支持?jǐn)?shù)據(jù)庫日志歸檔,支持企業(yè)保存一個(gè)長時(shí)間的數(shù)據(jù)刷新歷史。如果所有的基于一次全備份時(shí)間點(diǎn)之后的歸檔數(shù)據(jù)全部可用,那么就可以通過以下步驟恢復(fù)成為一個(gè)最新的數(shù)據(jù)庫。
恢復(fù)備份拷貝
在已經(jīng)恢復(fù)的數(shù)據(jù)庫上重新應(yīng)用所有的歸檔日志。
在已經(jīng)恢復(fù)的數(shù)據(jù)庫上重新應(yīng)用數(shù)據(jù)庫日志。
這也許是一個(gè)災(zāi)難后完全喪失服務(wù)能力數(shù)據(jù)中心的唯一恢復(fù)數(shù)據(jù)方法。在這個(gè)工作過程步驟中,數(shù)據(jù)庫全備份數(shù)據(jù)和歸檔日志必須快速的傳送到災(zāi)難恢復(fù)中心。為了實(shí)現(xiàn)完全的實(shí)時(shí)數(shù)據(jù)庫恢復(fù),鏡像或復(fù)制當(dāng)前的數(shù)據(jù)庫日志到恢復(fù)中心也是必需的,就如我們在錯(cuò)誤!未找到引用源。中描述的那樣。
數(shù)據(jù)庫備份技術(shù)
就如前面對恢復(fù)作用的描述,一個(gè)數(shù)據(jù)庫的數(shù)據(jù)庫備份必須必須是一個(gè)數(shù)據(jù)庫的完整的映像,在這個(gè)映像的時(shí)間點(diǎn)上,沒有部分完成的事務(wù)存在。這可以通過數(shù)據(jù)庫的離線備份來實(shí)現(xiàn),因?yàn)樵谶@種情況下,沒有事務(wù)需要處理。這種方式的缺點(diǎn)在于,在備份過程中,沒有應(yīng)用能夠使用數(shù)據(jù)庫。數(shù)據(jù)庫在線的時(shí)候也可以進(jìn)行備份,在這種情況下,備份程序要確保不管數(shù)據(jù)訪問多么活躍,都能夠得到一個(gè)完整的數(shù)據(jù)拷貝。
離線數(shù)據(jù)備份
如果備份時(shí)數(shù)據(jù)庫不可以被應(yīng)用所訪問,那么我們稱這種備份為離線備份或冷備份。冷備份可以通過關(guān)閉數(shù)據(jù)庫然后進(jìn)行文件備份來實(shí)現(xiàn)。離線數(shù)據(jù)庫備份是簡單的,也是被認(rèn)為有效的備份技術(shù)。但是逐漸的,企業(yè)發(fā)現(xiàn)把他們的數(shù)據(jù)庫停下來,然后進(jìn)行備份,這種方式完全不切實(shí)際。而且,在一些老的數(shù)據(jù)庫管理系統(tǒng)中,冷備份拷貝不能用來進(jìn)行前滾,因?yàn)樗鼈兣c數(shù)據(jù)庫日志不同步。在新的數(shù)據(jù)庫設(shè)計(jì)中,已經(jīng)解決了冷備份拷貝與數(shù)據(jù)庫日之間的同步問題,所以前面的問題也就逐漸不成為問題了。
在線數(shù)據(jù)庫備份
現(xiàn)在大多數(shù)的數(shù)據(jù)庫都可以在應(yīng)用進(jìn)行數(shù)據(jù)訪問時(shí)進(jìn)行數(shù)據(jù)備份。在備份活躍數(shù)據(jù)庫時(shí)有兩種基本技術(shù),被稱作邏輯的和物理的在線分別備份。
大多數(shù)數(shù)據(jù)庫管理系統(tǒng)都支持邏輯在線備份。例如:被包含在Oracle數(shù)據(jù)庫的RMAN工具和Sybase數(shù)據(jù)庫的“dump database”命令。邏輯在線備份之所以這么命名,是因?yàn)樗截惲藬?shù)據(jù)庫的邏輯單元,而不是存儲設(shè)備列表或是存儲邏輯單元的文件。邏輯數(shù)據(jù)庫備份工具通常和恢復(fù)、修復(fù)工具放在一起,因此產(chǎn)生有問題備份的幾率較小。邏輯數(shù)據(jù)庫備份的主要缺點(diǎn)就是他無法利用存儲設(shè)備的快照技術(shù)來減少對應(yīng)用的影響。因?yàn)樵谝粋€(gè)邏輯數(shù)據(jù)庫備份的過程中,系統(tǒng)性能會大大的降低,因此它對總是處在活躍狀態(tài)的數(shù)據(jù)庫并不合適。
在線數(shù)據(jù)庫備份也可以通過物理的備份數(shù)據(jù)庫底層所包含的文件來實(shí)現(xiàn)。數(shù)據(jù)庫的數(shù)據(jù)文件并不是隨時(shí)都可以進(jìn)行拷貝的,因?yàn)閿?shù)據(jù)庫始終在不斷的刷新這些文件。一個(gè)文件的拷貝包含有非全部完整事務(wù)的概率很高,而且也不要期望通過數(shù)據(jù)庫修復(fù)來恢復(fù)數(shù)據(jù)的一致性。
要確保一個(gè)具有一致性的系列文件備份,數(shù)據(jù)庫必須處于一個(gè)靜止?fàn)顟B(tài),沒有事務(wù)提交,也沒有緩存的數(shù)據(jù)需要寫到存儲中。當(dāng)備份結(jié)束后,數(shù)據(jù)庫可以被重新激活。當(dāng)然在數(shù)據(jù)庫備份時(shí),數(shù)據(jù)庫時(shí)不可用的,這樣的結(jié)果與離線數(shù)據(jù)備份基本相同。
一些文件系統(tǒng)和卷管理器支持?jǐn)?shù)據(jù)快照。如果可以制作一個(gè)基于數(shù)據(jù)庫所包含文件的快照,那么數(shù)據(jù)庫只需要在快照初始化的一瞬間是靜止的即可。一旦快照初始化完畢,數(shù)據(jù)庫就可以重新提供訪問能力??煺帐箓浞菘梢赃M(jìn)行在應(yīng)用正在訪問“實(shí)際”的數(shù)據(jù)庫的過程中。因此,物理數(shù)據(jù)庫備份可以是在(近)線的,而且能夠保證數(shù)據(jù)庫拷貝的一致性。
數(shù)據(jù)庫靜止?fàn)顟B(tài)
不同的數(shù)據(jù)庫支持不同的備份技術(shù)。例如:Oracle,將表空間(一組表)置于在線的備份模式。這樣的一份備份數(shù)據(jù)就可能不一致,因?yàn)閿?shù)據(jù)庫會在備份模式下會不斷的刷新數(shù)據(jù)。然而恢復(fù)卻可以是一致的,因?yàn)樵趥浞葸^程中,額外的信息被數(shù)據(jù)庫的管理日志記錄下來。重新應(yīng)用日志記錄了數(shù)據(jù)庫在備份狀態(tài)下的變化,并將它恢復(fù)成一致的狀態(tài)。
其它的數(shù)據(jù)庫管理,包括Sybase ASE和DB2,會暫時(shí)的掛起所有事務(wù)并且將緩存保存,這樣一個(gè)基于快照的數(shù)據(jù)庫所包含文件的拷貝就是一個(gè)一致性的數(shù)據(jù)庫拷貝。
包含了卷管理和文件系統(tǒng)快照的物理數(shù)據(jù)庫備份技術(shù)是一種非常強(qiáng)大的技術(shù),因?yàn)樗鞠藨?yīng)用不能進(jìn)行數(shù)據(jù)訪問的備份窗口時(shí)間。例如:數(shù)據(jù)庫可以將數(shù)據(jù)直接或間接的存儲在鏡像的邏輯卷上。要進(jìn)行備份的情況下,數(shù)據(jù)庫管理員可以將數(shù)據(jù)庫暫時(shí)靜止,將鏡像卷與存儲分離,然后重新激活數(shù)據(jù)庫。被分離的鏡像卷包含了一個(gè)一致的數(shù)據(jù)拷貝,可以通過它完成一個(gè)數(shù)據(jù)庫復(fù)制。這種情況下的應(yīng)用不能訪問數(shù)據(jù)庫的備份窗口只有幾秒鐘或幾分鐘。圖1-3描述了這種剝離鏡像的在線備份方式。
[page]
當(dāng)被剝離的鏡像卷連接到存儲網(wǎng)絡(luò)中,可使用一個(gè)額外的服務(wù)器來進(jìn)行數(shù)據(jù)的拷貝。因?yàn)槭褂昧霜?dú)立的存儲設(shè)備和服務(wù)器資源,因此對數(shù)據(jù)庫應(yīng)用性能沒有任何影響。唯一的缺點(diǎn)是,當(dāng)基于被剝離的鏡像卷的數(shù)據(jù)庫備份拷貝完成后,鏡像卷需要重新連接到數(shù)據(jù)庫存儲卷中。重新同步所有的I/O會影響應(yīng)用的I/O。鏡像技術(shù)可以記錄所有在剝離鏡像卷后改變了的數(shù)據(jù),在鏡像卷重新接入后快速同步數(shù)據(jù),這種技術(shù)使同步對應(yīng)用的影響降到最低。圖1-4使用流程圖描述了脫離主機(jī)的備份方式。流程圖同樣強(qiáng)調(diào)了快照可以在運(yùn)行著數(shù)據(jù)庫的服務(wù)器上進(jìn)行備份。
數(shù)據(jù)庫增量備份
數(shù)據(jù)庫的不斷增長和對可用性要求的提高,使數(shù)據(jù)庫全備份在許多情況下無法完成。如同文件系統(tǒng)一樣,如果在兩次備份間只有少量的數(shù)據(jù)變化,數(shù)據(jù)庫增量備份可以縮短數(shù)據(jù)庫備份時(shí)間。如果只是變化了的數(shù)據(jù)被拷貝,可以節(jié)省備份時(shí)間和備份介質(zhì)。與全備份類似,增量備份也可以是邏輯的或是物理的。
邏輯增量備份
歸檔數(shù)據(jù)庫日志是邏輯數(shù)據(jù)庫增量備份的一種方式。通過恢復(fù)一次數(shù)據(jù)庫全備份和重新應(yīng)用歸檔日志,可以將數(shù)據(jù)庫恢復(fù)到歸檔的最新時(shí)刻。把全備份數(shù)據(jù)和所有的歸檔日志存放在一個(gè)安全的地方,是一個(gè)很有用處的恢復(fù)技術(shù)。
隨著歸檔日志的堆積,恢復(fù)時(shí)間和對介質(zhì)的占用都會隨之增長。對于每一個(gè)企業(yè),都有一個(gè)對增量恢復(fù)窗口的可容忍的極限。因此,增量備份策略應(yīng)該包含定期的數(shù)據(jù)庫全備份,以便經(jīng)常建立新的基點(diǎn)。
一些數(shù)據(jù)庫管理器可以在數(shù)據(jù)庫正在運(yùn)行時(shí)執(zhí)行數(shù)據(jù)庫邏輯增量備份。一個(gè)邏輯增量備份在開始時(shí)首先檢測自上次備份后改變了的數(shù)據(jù)塊的列表。這些塊被讀取并被傳送到備份服務(wù)器。增量備份減少了全備份必須被執(zhí)行的頻率。使用這種技術(shù),數(shù)據(jù)庫恢復(fù)就可以是自動的,因?yàn)閿?shù)據(jù)庫管理器的恢復(fù)功能可以從以前的全備份和后來的增量備份創(chuàng)建一個(gè)較新的數(shù)據(jù)庫映像。增量備份使數(shù)據(jù)庫性能只是稍有加強(qiáng),因?yàn)閿?shù)據(jù)庫管理器必須創(chuàng)建一個(gè)變化數(shù)據(jù)塊的列表。
物理增量備份
包含數(shù)據(jù)庫系列文件的文件系統(tǒng)的增量備份有效的創(chuàng)建了一個(gè)數(shù)據(jù)庫的物理增量備份。但當(dāng)一個(gè)數(shù)據(jù)庫管理器刷新表中的一行數(shù)據(jù)時(shí),只有包含這條數(shù)據(jù)的文件塊改變了,其余的文件塊并沒有受到影響。然而針對文件的任何改變都會導(dǎo)致在增量備份中整個(gè)文件被拷貝,這種基于文件的增量備份通常等同于數(shù)據(jù)庫全備份。如果數(shù)據(jù)庫管理器或者備份程序能夠識別在數(shù)據(jù)庫文件中變化了的數(shù)據(jù)塊,就可以只備份變化的數(shù)據(jù)塊;有這么一種技術(shù)被稱作數(shù)據(jù)塊級增量備份。
在使用快速鏡像不太現(xiàn)實(shí)的情況下,除使用更少的備份介質(zhì)外,數(shù)據(jù)庫增量備份能夠減小備份窗口。一些數(shù)據(jù)庫管理器能夠執(zhí)行透明的數(shù)據(jù)庫物理增量備份和恢復(fù),使對個(gè)別增量備份的管理降到最低。要完成一個(gè)基于塊級別的備份的數(shù)據(jù)庫恢復(fù),首先應(yīng)恢復(fù)最新的全備份,然后重新應(yīng)用所有的后面的增量備份來恢復(fù)數(shù)據(jù)庫映像。
恢復(fù)任何的增量備份都需要花費(fèi)時(shí)間。數(shù)據(jù)庫管理員通常制定周期全備份計(jì)劃,以便定期改變新的數(shù)據(jù)恢復(fù)基點(diǎn),限制最高的增量跳越數(shù)量(和最糟糕情況下的恢復(fù)時(shí)間)。一些備份程序可以實(shí)現(xiàn)被稱為“合成全備份”的功能,這是通過第二臺服務(wù)器上的增量來實(shí)現(xiàn)的。這些合成全備份在每一次增量的恢復(fù)后都會產(chǎn)生一個(gè)新的基點(diǎn)。
[page]
從備份恢復(fù)數(shù)據(jù)庫
通過正規(guī)備份,并且快速的將備份介質(zhì)運(yùn)送到安全的地方,數(shù)據(jù)庫就能夠在大多數(shù)的災(zāi)難中得到恢復(fù)?;謴?fù)是文件的使用是從一個(gè)基點(diǎn)的數(shù)據(jù)庫映像開始,到一些綜合的備份和日志。由于不可預(yù)知的物理災(zāi)難,一個(gè)完全的數(shù)據(jù)庫恢復(fù)(重應(yīng)用日志)可以使數(shù)據(jù)庫映像恢復(fù)到盡可能接近災(zāi)難發(fā)生的時(shí)間點(diǎn)的狀態(tài)。對于邏輯災(zāi)難,如:人為破壞或者應(yīng)用故障等,數(shù)據(jù)庫映像應(yīng)該恢復(fù)到錯(cuò)誤發(fā)生前的那一點(diǎn)。
在一個(gè)數(shù)據(jù)庫的完全恢復(fù)過程中,基點(diǎn)后所有日志中的事務(wù)被重新應(yīng)用,所以結(jié)果就是一個(gè)數(shù)據(jù)庫映像反映所有在災(zāi)難前已接受的事務(wù),而沒有被接受的事務(wù)則不被反映。為了恢復(fù)數(shù)據(jù)庫誤操作等錯(cuò)誤,完全的恢復(fù)時(shí)不合適的,因?yàn)槿绻匦聭?yīng)用所有事務(wù),錯(cuò)誤就會重復(fù)。數(shù)據(jù)庫恢復(fù)應(yīng)用程序允許管理員停止日志前滾在錯(cuò)誤發(fā)生前一點(diǎn)。數(shù)據(jù)庫恢復(fù)可以恢復(fù)到錯(cuò)誤發(fā)生前的最后一個(gè)時(shí)刻。
檢驗(yàn)數(shù)據(jù)庫備份
大多數(shù)的企業(yè)都會定期地對他們的數(shù)據(jù)庫進(jìn)行備份,但是卻沒能經(jīng)常地對數(shù)據(jù)庫備份進(jìn)行檢驗(yàn)。數(shù)據(jù)庫備份會由于以下各種原因而變得無效:
元數(shù)據(jù)(例如一個(gè)Oracle控制文件或SQL Server控制數(shù)據(jù)庫)缺失
在物理備份的過程中數(shù)據(jù)庫處于非靜止的狀態(tài)
一個(gè)或多個(gè)必需的數(shù)據(jù)庫文件從備份中丟失
數(shù)據(jù)庫被破壞后才進(jìn)行備份
從某種意義而言,無效的數(shù)據(jù)庫備份比根本不做備份的情況更糟,因?yàn)闊o效的數(shù)據(jù)庫備份會造成一種安全的假象。
因此,檢驗(yàn)數(shù)據(jù)庫備份是一項(xiàng)非常重要的工作,尤其是在進(jìn)行了自動備份進(jìn)程之后或是在數(shù)據(jù)庫結(jié)構(gòu)改變之后。即使是沒有任何改變發(fā)生,定期進(jìn)行檢驗(yàn)也是必需的,例如可以定期地檢測損壞的介質(zhì)或磁帶驅(qū)動器等等。
為了將檢驗(yàn)工作對數(shù)據(jù)庫生產(chǎn)運(yùn)行的影響沖突降至最低,備份的檢驗(yàn)工作需要使用備用資源。一個(gè)正在用于檢驗(yàn)修復(fù)備份的數(shù)據(jù)庫應(yīng)該帶有一個(gè)備用數(shù)據(jù)庫標(biāo)識符或服務(wù)器名稱以免客戶端會將信息錯(cuò)誤地發(fā)送給檢驗(yàn)數(shù)據(jù)庫。檢驗(yàn)內(nèi)容應(yīng)該既包括使用全部的歸檔日志的數(shù)據(jù)庫恢復(fù)資源,也包括使用廠商提供工具進(jìn)行數(shù)據(jù)庫一致性的檢驗(yàn)。
管理數(shù)據(jù)庫日志
對于容災(zāi)而言,數(shù)據(jù)庫備份應(yīng)當(dāng)存貯在遠(yuǎn)離數(shù)據(jù)庫的地方。為了達(dá)到最優(yōu)容災(zāi)狀態(tài),在災(zāi)難發(fā)生后能夠容易地獲取數(shù)據(jù)庫日志也是非常必要的。數(shù)據(jù)庫歸檔日志通常保存在備份儲存的地點(diǎn)。數(shù)據(jù)庫管理員必須在數(shù)據(jù)庫實(shí)時(shí)恢復(fù)和資源占用量兩者之間找到平衡,從而決定進(jìn)行數(shù)據(jù)庫日志歸檔的頻率。過多地進(jìn)行歸檔可以降低數(shù)據(jù)損失的潛在危險(xiǎn),但是浪費(fèi)了更多的進(jìn)程和I/O資源,很有可能增加了處理的響應(yīng)時(shí)間。過少地進(jìn)行歸檔可以降低資源的平均占用量,但是延長了兩次歸檔的間隔時(shí)間,很有可能導(dǎo)致不能做到精確的實(shí)時(shí)恢復(fù)。
如果一個(gè)數(shù)據(jù)庫和它的聯(lián)機(jī)日志被損壞了,那么即使馬上進(jìn)行了嚴(yán)密的數(shù)據(jù)庫備份和日志歸檔,數(shù)據(jù)也極有可能丟失。因此,一個(gè)完整的數(shù)據(jù)庫融災(zāi)策略的一個(gè)重要部分就是對聯(lián)機(jī)的數(shù)據(jù)庫日志進(jìn)行復(fù)制,這樣在進(jìn)行修復(fù)處理時(shí)就可以及時(shí)利用這些復(fù)制的內(nèi)容準(zhǔn)確無誤地修復(fù)數(shù)據(jù)庫。聯(lián)機(jī)數(shù)據(jù)庫日志可以通過有限的距離進(jìn)行鏡像。(錯(cuò)誤!未找到引用源。).如果距離過長,數(shù)據(jù)庫管理員可以通過多路轉(zhuǎn)接技術(shù)或者通過企業(yè)網(wǎng)絡(luò)同時(shí)進(jìn)行本地和遠(yuǎn)處的日志拷貝。多路轉(zhuǎn)接技術(shù)通常比鏡像和低水平復(fù)制(如數(shù)據(jù)卷)的速度要慢一些,因此如果可以的話要盡量選擇后一種方式。
最高級別的數(shù)據(jù)庫實(shí)時(shí)恢復(fù)是在每次事務(wù)提交的之前同步進(jìn)行數(shù)據(jù)庫日志的傳輸和歸檔。換句話說,必須要在日志已經(jīng)被轉(zhuǎn)移到另外地點(diǎn)后,才進(jìn)行事務(wù)的提交。顯而易見,這種選擇執(zhí)行起來的代價(jià)是非常昂貴的,因而在實(shí)踐中較少采用。
數(shù)據(jù)庫復(fù)制
周圍環(huán)境的災(zāi)難,例如:地震、洪水,或者暴亂會使整個(gè)數(shù)據(jù)中心及周圍環(huán)境徹底喪失數(shù)據(jù)服務(wù)的能力。為了恢復(fù)一個(gè)災(zāi)難中的數(shù)據(jù)庫,必須有一個(gè)災(zāi)難破壞范圍之外的一個(gè)數(shù)據(jù)的冗余拷貝,并且當(dāng)恢復(fù)中心數(shù)據(jù)恢復(fù)完畢后,必須可以響應(yīng)客戶端的請求。
使用傳輸日志方法的復(fù)制
保證數(shù)據(jù)庫可恢復(fù)的環(huán)境容災(zāi)的最基本挑戰(zhàn)就是如何保證容災(zāi)地點(diǎn)具有最新的數(shù)據(jù)?;蛟S實(shí)現(xiàn)這種狀態(tài)的最簡單辦法就是在數(shù)據(jù)中心與容災(zāi)地點(diǎn)間物理的傳送歸檔日志,例如,使用快遞或運(yùn)輸服務(wù)。在恢復(fù)地點(diǎn),日志被備份數(shù)據(jù)庫(有的叫做備用數(shù)據(jù)庫)重新應(yīng)用來實(shí)現(xiàn)數(shù)據(jù)“刷新”。對于應(yīng)用來說,如果可以容忍一整天的數(shù)據(jù)丟失,那么這種簡單的方法也許就足夠了。它的主要缺點(diǎn)就是數(shù)據(jù)刷新和重路由客戶端請求的勞動強(qiáng)度比較高,很容易出現(xiàn)人為錯(cuò)誤。
對于簡單應(yīng)用和小型數(shù)據(jù)庫,日志傳輸和數(shù)據(jù)庫刷新技術(shù)可以通過在網(wǎng)絡(luò)上執(zhí)行定期的日志傳送和刷新任務(wù)來自動完成。
數(shù)據(jù)庫管理器復(fù)制
今天,大多數(shù)數(shù)據(jù)庫管理器支持精密的實(shí)施復(fù)制,允許例如一對多、雙向的復(fù)制。也可以是數(shù)據(jù)庫子集的復(fù)制,只將感興趣的數(shù)據(jù)復(fù)制到目標(biāo)端。在分布式數(shù)據(jù)庫最初設(shè)計(jì)時(shí),數(shù)據(jù)庫管理器復(fù)制就可以用來實(shí)現(xiàn)容災(zāi)復(fù)制。
數(shù)據(jù)庫復(fù)制需要在主站點(diǎn)和恢復(fù)站點(diǎn)間有一個(gè)高性能網(wǎng)絡(luò)的連接,但即使這樣也不能實(shí)時(shí)同步,這意味著在數(shù)據(jù)庫完全將數(shù)據(jù)反映到備用數(shù)據(jù)庫有一個(gè)時(shí)間延遲。一些數(shù)據(jù)庫支持同步復(fù)制,雖然解決了上面的問題,但是它明顯減低了主數(shù)據(jù)庫的性能,因?yàn)橹挥挟?dāng)所有的復(fù)制任務(wù)全部結(jié)束后,數(shù)據(jù)庫才能繼續(xù)接收數(shù)據(jù)。
針對數(shù)據(jù)庫的存儲復(fù)制
數(shù)據(jù)庫復(fù)制要求具有專門的數(shù)據(jù)庫管理技術(shù)。額外的,一些基于數(shù)據(jù)庫的信息服務(wù)在數(shù)據(jù)庫之外存儲了額外的數(shù)據(jù)。為了實(shí)現(xiàn)災(zāi)難恢復(fù),所有的應(yīng)用信息都必須復(fù)制到遠(yuǎn)程站點(diǎn)。存儲復(fù)制是針對數(shù)據(jù)庫復(fù)制的一個(gè)簡單可行的辦法,它可以將數(shù)據(jù)庫數(shù)據(jù)和其它數(shù)據(jù)全部從數(shù)據(jù)中心復(fù)制到恢復(fù)站點(diǎn)。
數(shù)據(jù)庫的內(nèi)容可以在卷一級或者文件一級進(jìn)行復(fù)制。穩(wěn)定的、高性能的文件系統(tǒng)復(fù)制也相當(dāng)優(yōu)秀??煽康母咝阅芫韽?fù)制能夠使遠(yuǎn)程復(fù)制數(shù)據(jù)文件、在線日志和歸檔日志變得非常簡單。如果所有的數(shù)據(jù)文件、日志文件,及其它的輔助數(shù)據(jù)都存放在一個(gè)獨(dú)立的文件系統(tǒng)或獨(dú)立的卷中,復(fù)制就會變得非常簡單。
卷管理器對數(shù)據(jù)庫恢復(fù)的非常有利,原因在于它在數(shù)據(jù)中心與容災(zāi)站點(diǎn)執(zhí)行同樣順序的操作。如果沒有這個(gè)特點(diǎn),它的數(shù)據(jù)不能夠保證與實(shí)際數(shù)據(jù)庫先前的狀態(tài)一致,也就是說復(fù)制就不能作為數(shù)據(jù)庫恢復(fù)的基礎(chǔ)。
[page]
復(fù)制的延時(shí)
無論數(shù)據(jù)庫復(fù)制還是存儲復(fù)制,都會將認(rèn)為無操作和應(yīng)用錯(cuò)誤復(fù)制到恢復(fù)端。例如,在主站點(diǎn)錯(cuò)誤的刪除了一個(gè)表,那么恢復(fù)中心也同會刪除,因此使用復(fù)制無法糾正錯(cuò)誤。
如果在數(shù)據(jù)中心與恢復(fù)中心的數(shù)據(jù)刷新上存在一定的可配制的延時(shí),數(shù)據(jù)庫復(fù)制就可以用來一些邏輯錯(cuò)誤。例如,如果復(fù)制日志在應(yīng)用到備用數(shù)據(jù)庫前保留一小時(shí),而邏輯錯(cuò)誤在一小時(shí)之內(nèi)被發(fā)現(xiàn)(通常是這樣),這樣錯(cuò)誤還沒有反映到復(fù)制數(shù)據(jù)庫中??梢粤⒓磳?fù)制停止,然后可以使用備用數(shù)據(jù)庫恢復(fù)主數(shù)據(jù)庫。
全局群集管理
因?yàn)楦訄?jiān)固,在群集上,數(shù)據(jù)庫應(yīng)用可以同時(shí)運(yùn)行在主站點(diǎn)和備用站點(diǎn)。在一個(gè)單獨(dú)的數(shù)據(jù)中心內(nèi)兩個(gè)或更多的群集計(jì)算機(jī)可以通過一個(gè)大范圍的網(wǎng)絡(luò)連接成全局群集,他們是一個(gè)平等的高可用系統(tǒng)。當(dāng)配制了多個(gè)恢復(fù)站點(diǎn),或者一個(gè)恢復(fù)站點(diǎn)復(fù)制到第二個(gè)恢復(fù)站點(diǎn),可以使用全局群集進(jìn)行復(fù)雜的管理。
在錯(cuò)誤切換的復(fù)雜性上和站點(diǎn)切換操作的限制性上,全局群集不同于本地群集。與本地群集相比,全局群集的錯(cuò)誤切換往往不是自動的,管理員的決定通常需要經(jīng)過嚴(yán)肅的考慮。全局群集的任務(wù)就是方便的提供一個(gè)分布的高可用服務(wù)器的全局的視圖,并且可以通過一個(gè)單獨(dú)的點(diǎn)來進(jìn)行控制。
概要:數(shù)據(jù)庫恢復(fù)層次
下面列出的數(shù)據(jù)庫恢復(fù)技術(shù)是按照他們所能夠提供的保護(hù)能力的順序列出的,也同時(shí)是使用他們所需要的資金,方便程度,和技術(shù)復(fù)雜性的排列順序。每一種技術(shù)都必須與他前面的技術(shù)共同使用。例如,磁盤鏡像必須伴隨著數(shù)據(jù)庫備份和日志歸檔。
正規(guī)數(shù)據(jù)庫備份和日志歸檔
磁盤鏡像
本地群集
數(shù)據(jù)庫復(fù)制
全局群集
對于希望恢復(fù)時(shí)間(RTO)時(shí)間在幾個(gè)小的內(nèi)的企業(yè),正規(guī)的數(shù)據(jù)庫備份和日志歸檔也許就能滿足。數(shù)據(jù)庫備份和歸檔日志應(yīng)該被保存在離數(shù)據(jù)中心有一定距離的地方。高級的備份軟件的特性,如自動的定期的塊增量備份可以減少管理成本,縮短備份窗口,以及最小化恢復(fù)時(shí)間。
通過簡單的鏡像硬件和網(wǎng)絡(luò),鏡像數(shù)據(jù)庫存儲dada減少了因?yàn)橛布收纤鸬臄?shù)據(jù)庫停機(jī)。也可以通過剝離鏡像的備份提高數(shù)據(jù)庫的可用性。
可以通過群集技術(shù)提高數(shù)據(jù)庫級信息服務(wù)的可用性。一個(gè)本地群集可以使由于系統(tǒng)的單點(diǎn)而出現(xiàn)故障的可能降到最小。當(dāng)錯(cuò)誤引起臨時(shí)的損耗,服務(wù)恢復(fù)時(shí)自動的。在共享數(shù)據(jù)的群集中,損耗窗口可以為零。在群集中,備份可以運(yùn)行在導(dǎo)入了數(shù)據(jù)庫服務(wù)器鏡像數(shù)據(jù)的輔助服務(wù)器上。
為防止站點(diǎn)實(shí)效而進(jìn)行的災(zāi)難恢復(fù)中,數(shù)據(jù)庫必須復(fù)制到遠(yuǎn)程站點(diǎn)。數(shù)據(jù)庫復(fù)制的最簡單方法就是將歸檔日志傳送到遠(yuǎn)端,然后在備用服務(wù)器上重新應(yīng)用。這種技術(shù)丟失的數(shù)據(jù)數(shù)量是固定的。不能容忍在災(zāi)難中丟失數(shù)據(jù)的企業(yè)應(yīng)該使用數(shù)據(jù)庫或存儲復(fù)制。
最高的數(shù)據(jù)庫可用性應(yīng)該使用全局群集來完成,它在多個(gè)互相連接的站點(diǎn)中調(diào)整數(shù)據(jù)庫和應(yīng)用的可用程度。
彈性數(shù)據(jù)庫通過不同方法使用冗余拷貝。數(shù)據(jù)庫可以通過額外的拷貝提高訪問性能。存儲數(shù)據(jù)庫數(shù)據(jù)的磁盤可以被鏡像來提高彈性。實(shí)時(shí)備份可以用來避免災(zāi)難和故障。事務(wù)日志可以使導(dǎo)致數(shù)據(jù)錯(cuò)誤的時(shí)間前滾。最后,完全的數(shù)據(jù)鏡像可以在遠(yuǎn)端保存一份數(shù)據(jù)來避免災(zāi)難。高級的數(shù)據(jù)庫管理器可以自行分發(fā)它們所管理的數(shù)據(jù)以提高數(shù)據(jù)庫彈性和性能。
就目前常見的數(shù)據(jù)庫備份軟件,如果數(shù)據(jù)庫備份要求數(shù)據(jù)庫在線進(jìn)行備份,通常要求數(shù)據(jù)庫處于歸檔模式,而數(shù)據(jù)庫如果處于歸檔模式,那么一,影響速度,二,一旦歸檔空間被占滿,數(shù)據(jù)庫就會停止,直到有新的歸檔空間。
有沒有可能進(jìn)行非歸檔模式的備份?
一個(gè)理論,在數(shù)據(jù)庫的底層,也就是使用磁盤陣列進(jìn)行數(shù)據(jù)備份,當(dāng)然磁盤陣列不具備備份功能,但是可以使用復(fù)制、鏡像等功能進(jìn)行備份,或者在主機(jī)與存儲鍵使用虛擬存儲,利用虛擬存儲的俄外功能進(jìn)行備份,但是備份下來的數(shù)據(jù)可不可用沒有經(jīng)過實(shí)際的環(huán)境測試,我的模擬環(huán)境是沒有問題的。據(jù)廠家講,有可能造成數(shù)據(jù)庫的數(shù)據(jù)文件時(shí)間點(diǎn)不一致,即使修復(fù)也不一定成功。
但是,此時(shí)的備份狀態(tài)應(yīng)該與突然斷電的狀態(tài)相同,難道數(shù)據(jù)庫在突然斷電的情況下有可能導(dǎo)致再也無法啟動嗎?
希望那個(gè)有實(shí)際數(shù)據(jù)庫操作經(jīng)驗(yàn)的dx解答。
國內(nèi)有一家dsg公司,制作了一個(gè)oracle的備份軟件,號稱可在非歸檔模式下進(jìn)行數(shù)據(jù)庫備份,聽說很不錯(cuò),但我沒有用過,不知效果怎么樣。