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