和力記易:論Oracle數(shù)據(jù)庫的四大備份方式
和力記易 發(fā)表于:13年07月01日 13:30 [來稿] DOIT.com.cn
Oracle作為目前世界上市場份額占有率最高的大型通用數(shù)據(jù)庫,在世界上各行各業(yè)的信息化建設(shè)中起著核心首腦的作用。它(軟件自身以及它所依賴運(yùn)行的硬件)一旦出現(xiàn)問題,輕則導(dǎo)致業(yè)務(wù)中斷,重則丟失部分?jǐn)?shù)據(jù),嚴(yán)重則全部數(shù)據(jù)不可逆轉(zhuǎn)性損毀!這種情況在信息化越來越占生產(chǎn)主導(dǎo)地位的今天意味著什么各大CIO都非常清楚,所以他們想盡一切辦法堅決杜絕這種情況的發(fā)生!
中國有句古話,凡事預(yù)則立不預(yù)則廢。這句話在信息化建設(shè)高度發(fā)達(dá)的今天同樣適用。針對數(shù)據(jù)庫可能中斷服務(wù)以及丟失數(shù)據(jù)的“預(yù)”就是“備”。針對Oracle數(shù)據(jù)庫來說,主要有以下四種備份方式。
一、導(dǎo)出/導(dǎo)入(Export/Import)
導(dǎo)出導(dǎo)入是一種最初級的備份方式,它采用定時將全量、增量或者差異數(shù)據(jù)以表、用戶或者全庫為單位導(dǎo)出到某種格式的文件中達(dá)到備份的目的。它作為標(biāo)準(zhǔn)的命令被集成到了Oracle開發(fā)語言中?梢酝ㄟ^DBA手動執(zhí)行備份命令,或者通過腳本和工具自動執(zhí)行。RMAN就是此類工具中的佼佼者,曾經(jīng)有很多DBA在使用。
但它是一種定時備份的模式,具有明顯的備份時間窗口。備份間隔內(nèi)仍然存在數(shù)據(jù)丟失的可能,比如每一天做一個增量備份的話,那么最大會丟失一天的數(shù)據(jù)。如果是可以允許一段時間內(nèi)數(shù)據(jù)丟失的業(yè)務(wù),可以采用這種模式。反之只能采用下面的一種備份模式--熱備份。
二、熱備份
對于熱備份來說,故名思議就是剛出爐的數(shù)據(jù)還是熱乎的就開始執(zhí)行備份的操作。實現(xiàn)熱備份的方式目前主要有兩種方式,邏輯方式和物理方式。
1、邏輯方式
如果把Oracle數(shù)據(jù)庫比作一個美女的話,那么實例庫就是她的整個身體,表空間就是她的骨骼,表是她的筋絡(luò),數(shù)據(jù)是她的血肉。視圖、事務(wù)、函數(shù)、pack包等是她身體上毛發(fā)和的飾品。
對于邏輯方式備份來說就是用一種方式勾勒出了這位美女的模樣,讓人看上去能認(rèn)出就是那位美女,但是仔細(xì)看的話可能又有所不同。
這種勾勒的方式又分為兩種:
1)SQL語句模式
SQL的全稱是,它是一種語言,而不是專指一種數(shù)據(jù)庫。很多人習(xí)慣把MSSQL簡稱為SQL,這是不對的。SQL之前必須加了MS(Microsoft)才能是一種數(shù)據(jù)庫的名字。
SQL這種語言,大多數(shù)數(shù)據(jù)庫都支持。Oracle的老大埃里森當(dāng)年也是因為首先致力于對SQL語言的支持,才在SQL成為標(biāo)準(zhǔn)后挫敗了很多當(dāng)時沒有納入到SQL語言標(biāo)準(zhǔn)范疇內(nèi)的數(shù)據(jù)庫。
既然Oracle支持SQL語句,那么就可以用SQL語句進(jìn)行邏輯勾勒。我們知道當(dāng)我們提交數(shù)據(jù)的時候并不關(guān)心是提交到了哪種數(shù)據(jù)庫里面去了,以什么樣的方式存儲。最終只要能提交成功并能查、改、刪皆可。這些都是通過SQL語句來實現(xiàn)的,它同樣不關(guān)心數(shù)據(jù)庫的種類和存儲方式。這就意味著我們就可以用SQL語句將數(shù)據(jù)從源端數(shù)據(jù)庫抽取出來,然后將它裝載在某個目標(biāo)的數(shù)據(jù)庫里面。源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫可以是不一樣的品牌,甚至可以不在同一平臺上。就如同我們在勾勒美女的時候是用油畫布還是國畫宣紙都不影響最終對美女的展現(xiàn)。
CDC(Change Data Capture)就是以這種模式對Oracle進(jìn)行增量備份的,當(dāng)然它更多情況下用以做數(shù)據(jù)整合。
這種模式聽起來似乎很美,可以不用管平臺不用管數(shù)據(jù)庫,直接抽取和裝載數(shù)據(jù)庫。但是要素描我們首先得雇傭一個畫家,這一塊的投資頗大,就如同CDC價值不菲一樣。
另外畫家在素描的時候,美女需要配合。這就如同在執(zhí)行SQL語句的時候占用了Oracle自身大量的資源,甚至影響到了它的正常運(yùn)行。
其次,在執(zhí)行SQL語言時對于SQL語言細(xì)分的組成部分:DDL (數(shù)據(jù)定義語言)、DML (數(shù)據(jù)操作語言)、DCL (數(shù)據(jù)控制語言)和TCL(事務(wù)控制語言)以及特殊的字段比如blob和clob字段等的支持并不完美,效率低下甚至就不支持。
2)日志重做模式
我們用素描的方式來比喻邏輯備份里面的SQL語句模式,那么對于歸檔重做的模式我們稱之為復(fù)印。歸檔日志是Oracle獨有的一種模式,它會將自己做過的所有事情的過程都記錄在里面。如果照著歸檔重新做一遍,則能得到同樣的結(jié)果,這個結(jié)果是相對比較接近源生產(chǎn)庫的。在這里之所以使用“相對比較接近”是因為還是有所差別的,就如彩色照片復(fù)印出來是黑白的,內(nèi)容看上去差不多,但還是有差別,且存在很多限制。OGG(Oracle Goldengate)以及ODG(Oracle Dataguard)就是兩款Orcle兩款典型的日志重做工具。前者是Oracle收購的公司,后者是Oracle企業(yè)版包含的一個工具。
使用日志重做模式首先采用這種方法數(shù)據(jù)庫必須至于歸檔模式下,且要是Force Logging(強(qiáng)制記錄日志)狀態(tài)。這才能滿足日志重做的基本條件。因為Oracle的日志分為OnlineLog(聯(lián)機(jī)日志)和ArchiveLog Log(歸檔日志)。如果寫入的數(shù)據(jù)量較小,那么可以直接對OnlineLog進(jìn)行重做。但如果寫入的數(shù)據(jù)量很大或者巨大,那么對OnlineLog進(jìn)行重做是來不及的,就只有延后對ArchiveLog Log進(jìn)行重做。而對于一下NoLogging(無日志)的數(shù)據(jù)操作就沒有辦法進(jìn)行重做了,所以必須采用將數(shù)據(jù)庫模式設(shè)置為Force Logging(強(qiáng)制記錄日志)狀態(tài)。這對數(shù)據(jù)庫的使用具有很大的限制。
另外OGG(Oracle Goldengate)以及ODG(Oracle Dataguard)的邏輯Standby模式雖然在源端獲取數(shù)據(jù)是通過歸檔日志,但是在目標(biāo)端(備份機(jī))上進(jìn)行數(shù)據(jù)還原的時候是轉(zhuǎn)換成SQL語句來進(jìn)行的。這就具有了1)中所述使用SQL語句的一些缺點。
2、物理方式
同于我們將SQL邏輯方式比如素描,把日志重做邏輯方式比作復(fù)印,則物理方式就是復(fù)制人。
卷復(fù)制、分割鏡像快照等技術(shù)就是一種常用的物理方式。乍看起來這種模式要優(yōu)于邏輯方式,但是它的優(yōu)勢恰恰就是它的劣勢。就如同我們打得復(fù)制人的比方,在復(fù)制人的時候必須每一個染色體每一個DNA都不能出差錯。否則將會前功盡棄。對于Oracle這種結(jié)構(gòu)化數(shù)據(jù)來說,它的精密性不亞于人體。一旦在物理復(fù)制的時候不完整或者出錯,將會導(dǎo)致整個數(shù)據(jù)庫不可用。所以物理復(fù)制不能是單純的把數(shù)據(jù)庫當(dāng)作文件進(jìn)行表面復(fù)制,必須是建立在對Oracle數(shù)據(jù)的邏輯存儲結(jié)構(gòu)深入分析的基礎(chǔ)之上,才能保證復(fù)制出來的數(shù)據(jù)是100%可用的。
三、冷備份
從前文課件不管是邏輯方式的熱備份還是物理方式的熱備份,它都存在一些問題。舉個例子來說:源端數(shù)據(jù)庫的一個事務(wù)寫完生產(chǎn)ArchiveLog Log后,ArchiveLog Log轉(zhuǎn)換成SQL語句在備份機(jī)上執(zhí)行,執(zhí)行到一半的時候正好停機(jī)了。再開機(jī)時這個沒有執(zhí)行完的SQL就有可能導(dǎo)致整個Oracle數(shù)據(jù)庫無法Open。
為了盡可能的避免這種情況,用戶往往在指定的時間(比如凌晨2-3點)將源端數(shù)據(jù)庫合法Shutdown(關(guān)閉),以確保數(shù)據(jù)庫在可用的狀態(tài)時拷貝出一份完成的數(shù)據(jù)出來。
很明顯拷貝的前提是將數(shù)據(jù)庫Shutdown,就是說業(yè)務(wù)需要停止。所以這種備份叫做冷備份。
四、CDP
SNIA(全球網(wǎng)絡(luò)存儲工業(yè)協(xié)會StorageNetworkingIndustryAssociation)對什么是CDP做了明確界定:1、有變化就備份2、至少備份到另外一個地方3、可以恢復(fù)到任意時間點。實現(xiàn)的模式主要有三種:基于塊、基于文件、基于應(yīng)用。
按照這一點來卡的話ODG的物理Standby模式可以算是。
ODG的物理Standby模式在創(chuàng)建時,使用主庫進(jìn)行一個全copy(可以理解為不用shutdown的冷備份)。在此基礎(chǔ)之上以“基于塊”的模式對數(shù)據(jù)進(jìn)行物理的拷貝和恢復(fù)。此時目標(biāo)段(備份機(jī))就是完全是源端數(shù)據(jù)庫的一個復(fù)制,因為它是Oracle自身的工具,所以它深入了解Oracle自身的邏輯結(jié)構(gòu),從而有效的避免了物理復(fù)制存在數(shù)據(jù)庫不可用的問題。
但是對于CDP里面的第3點:可以恢復(fù)到任意時間點。它必須借助Oracle的另外一個功能Oracle Undo(撤消日志)。
我們知道Oracle的中文名是甲骨文,它一定意義上反映了Oracle數(shù)據(jù)庫操作的難易程度。
ODG的物理Standby模式雖然看起來很美,但是第一:它只屬于Oracle,第二:需要專業(yè)DBA配置和維護(hù)。這就使得它的使用成本過高而成為“王謝堂前燕” ,難以飛入“尋常百姓家”。
針對這種情況,國內(nèi)老牌CDP容災(zāi)備份廠家--北京和力記易科技有限公司在深入研究Oracle數(shù)據(jù)庫存儲結(jié)構(gòu)十余家的基礎(chǔ)之上,集ODG的邏輯Standby和Undo功能于一體。以最簡單的圖形化界面實現(xiàn)了CDP實時備份和任意時間點回退。不但支持Oracle,還是支持Windows、Linux、Unix下的MSSQL\Oracle\DB2\Sybase\Informix\Interbase\人大金倉\神舟通用等數(shù)據(jù)庫,支持主流的雙機(jī)集群環(huán)境:MSCS、Lifekeeper、NEC、PlusWell、Oracle RAC+ASM等模式。真正實現(xiàn)了“舊時王謝堂前燕,飛入尋常百姓家”。
公司簡介 | 媒體優(yōu)勢 | 廣告服務(wù) | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯(lián)系我們 | 會員注冊 | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.