許上鑒
摘要:在信息系統(tǒng)的規(guī)劃建設中,保護信息數(shù)據(jù)的安全一直是關(guān)注的重點。如何構(gòu)建一個完備的容災備份方案,保障業(yè)務系統(tǒng)的高可用性、信息數(shù)據(jù)的完整性、災難恢復的及時性。該文在介紹信息數(shù)據(jù)容災備份的概念、Oracle RAC概念、Data Guard概念的基礎上,詳細分析了Data Guard關(guān)鍵技術(shù)、部署優(yōu)勢,進一步研究Data Guard容災技術(shù)帶來的高可靠性和高可用性。
關(guān)鍵詞:Oracle Data Guard 容災備份;信息數(shù)據(jù);架構(gòu)
中圖分類號:TP311? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)36-0051-02
開放科學(資源服務)標識碼(OSID):
在信息數(shù)據(jù)爆炸性增長的大數(shù)據(jù)時代,信息數(shù)據(jù)成為各行各業(yè)的基礎和命脈。信息數(shù)據(jù)的缺失將嚴重影響業(yè)務系統(tǒng)的正常運行,導致企業(yè)的生產(chǎn)經(jīng)營受到重大影響和損失。突發(fā)意外斷電、服務器硬盤故障、操作系統(tǒng)中毒、人為操作失誤、自然災害造成數(shù)據(jù)中心的災難都可能造成信息數(shù)據(jù)的缺失。從戰(zhàn)略角度研究信息數(shù)據(jù)容災備份,保證信息數(shù)據(jù)安全可用,保障企業(yè)信息資產(chǎn)顯得尤為重要。
甲骨文公司的Oracle數(shù)據(jù)庫是一款關(guān)系數(shù)據(jù)庫管理系統(tǒng),由于其系統(tǒng)可移植性好、使用方便、功能強等優(yōu)點,廣泛部署在各類大、中、小服務器環(huán)境[1]。隨著Oracle數(shù)據(jù)庫軟件版本不斷地更新、升級,軟件提供的各種高可用、高可靠的特性也隨之出現(xiàn),Data Guard就是其中一個。
1 信息數(shù)據(jù)容災備份
容災和備份是信息數(shù)據(jù)安全保障特別重要的組成部分,兩者互相協(xié)助配合但目的卻各不相同。備份是容災的基礎和根本,從服務器硬盤、存儲資源池中手工拷貝或使用備份軟件將數(shù)據(jù)復制到其他存儲介質(zhì)的過程,目的是保證信息數(shù)據(jù)的安全。而容災目的不僅僅為了保護信息數(shù)據(jù)的安全,更重要的是保障業(yè)務系統(tǒng)連續(xù)性、可靠性。數(shù)據(jù)級容災就是信息數(shù)據(jù)的容災備份,當發(fā)生災難時數(shù)據(jù)級容災可以及時恢復信息數(shù)據(jù),保證數(shù)據(jù)完整性。
2 Oracle RAC
Oracle RAC是Oracle數(shù)據(jù)庫的實時應用集群技術(shù)的簡稱,它結(jié)合多臺服務器共同運行數(shù)據(jù)庫。不僅可以實現(xiàn)數(shù)據(jù)庫并行處理和負載均衡,而且排除了數(shù)據(jù)庫的單點故障隱患和數(shù)據(jù)丟失風險,保障數(shù)據(jù)庫的高可用性和高可靠性。假如Oracle RAC的某一個數(shù)據(jù)庫節(jié)點發(fā)生故障,數(shù)據(jù)庫可以繼續(xù)運行在其他節(jié)點上,完全不影響業(yè)務系統(tǒng)的正常運行。Oracle RAC支持至少兩臺或多臺服務器組成集群節(jié)點,可以在集群正常運行時增加節(jié)點,既不影響數(shù)據(jù)庫運行的同時又提高系統(tǒng)負載能力。
Oracle RAC中各個節(jié)點之間通過心跳線來進行通信傳輸,為了實現(xiàn)冗余防止單點故障問題,各個交換機之間同時也需要做好冗余備份。Oracle RAC的容災備份是建立在網(wǎng)絡設備冗余的基礎上,對硬件的要求比較高,因此Oracle另外一個高可用、高可靠的特性慢慢浮出水面。
3 Data Guard概述
Data Guard是Oracle數(shù)據(jù)庫提供的高可用性和高可靠性的容災解決方案。主數(shù)據(jù)庫的重做傳輸服務日志通過網(wǎng)絡傳輸?shù)絺鋽?shù)據(jù)庫來實現(xiàn)主數(shù)據(jù)庫與備數(shù)據(jù)庫的數(shù)據(jù)同步,保障信息數(shù)據(jù)的高可用性。當發(fā)生災難時,主數(shù)據(jù)庫狀態(tài)變?yōu)椴豢捎?,備?shù)據(jù)庫被啟動并作為主數(shù)據(jù)庫與業(yè)務系統(tǒng)通信。備數(shù)據(jù)庫除了可以保障主數(shù)據(jù)庫發(fā)生災難時作為替代以外,還可以服務于其他業(yè)務系統(tǒng)讀取信息數(shù)據(jù)。Data Guard配置的備數(shù)據(jù)庫既可以放置在相同的局域網(wǎng)中,也可以放置在通信可達的廣域網(wǎng)內(nèi)。處于局域網(wǎng)中的備數(shù)據(jù)庫可以響應快速的故障解決能力,而處于廣域網(wǎng)內(nèi)的備數(shù)據(jù)庫則能夠更好地抵御破壞數(shù)據(jù)中心或同城災備中心的災難[2]。Data Guard方案可以選擇合適的保護級別,配置一個主數(shù)據(jù)庫和幾個備數(shù)據(jù)庫,將災難帶來的損失降到最低。
4 Data Guard架構(gòu)
由一個主數(shù)據(jù)庫和一個或多個備數(shù)據(jù)庫組成Data Guard環(huán)境,各個備數(shù)據(jù)庫可以分布于不同地域,主數(shù)據(jù)庫與各個備數(shù)據(jù)庫之間可以相互通信[3]。
4.1 主數(shù)據(jù)庫
主數(shù)據(jù)庫指業(yè)務系統(tǒng)訪問的生產(chǎn)數(shù)據(jù)庫,我們需要搭建Data Guard來保護主數(shù)據(jù)庫的高可用性。主數(shù)據(jù)庫既可以是單節(jié)點服務器或也可以是RAC服務器。
4.2 備數(shù)據(jù)庫
備數(shù)據(jù)庫是主數(shù)據(jù)庫的完整復制,Data Guard在備數(shù)據(jù)庫建立后自動從主數(shù)據(jù)庫傳輸日志文件并應用。在一個Data Guard環(huán)境中可以有最多9個備數(shù)據(jù)庫,備數(shù)據(jù)庫既可以是單節(jié)點服務器也可以是RAC服務器[4]。備數(shù)據(jù)庫還可以分為物理備數(shù)據(jù)庫和邏輯備數(shù)據(jù)庫。
4.2.1 物理備數(shù)據(jù)庫
物理備數(shù)據(jù)庫是指通過接收、應用主數(shù)據(jù)庫的重做傳輸服務日志,并以數(shù)據(jù)恢復的方式實現(xiàn)同步。物理備數(shù)據(jù)庫和主數(shù)據(jù)庫不僅文件的物理結(jié)構(gòu)相同,數(shù)據(jù)塊在磁盤上的存儲位置都是一模一樣的。
4.2.2 邏輯備數(shù)據(jù)庫
邏輯備數(shù)據(jù)庫是指通過接收來自主數(shù)據(jù)庫的重做傳輸服務日志,將其轉(zhuǎn)換成SQL語句后,在備數(shù)據(jù)庫上執(zhí)行SQL語句,從而實現(xiàn)數(shù)據(jù)同步。
5 Data Guard關(guān)鍵技術(shù)
保證Oracle數(shù)據(jù)庫容災備份的穩(wěn)定可靠,必須了解Oracle數(shù)據(jù)庫Data Guard的一些關(guān)鍵技術(shù),如何滿足Oracle數(shù)據(jù)庫高可用、高可靠的特性需求。
5.1 重做機制(Redo)
重做機制目的是保證已經(jīng)提交的事務不會丟失,從而避免數(shù)據(jù)不一致,重做機制是實現(xiàn)數(shù)據(jù)庫容災的基礎。重做機制的工作模式分為非歸檔模式和歸檔模式。當重做機制運行在非歸檔模式時,只能在系統(tǒng)非正常關(guān)機、機房停電等一般情況做數(shù)據(jù)恢復;而當重做機制運行在歸檔模式時,可以實現(xiàn)任意時間點、任意數(shù)據(jù)產(chǎn)生點、任意表等數(shù)據(jù)恢復。
5.1.1 聯(lián)機重做日志(Online Redo Log)
無論重做機制運行在非歸檔模式或者歸檔模式,聯(lián)機重做日志都是必不可少的。系統(tǒng)需要最少兩個聯(lián)機重做日志文件,將數(shù)據(jù)庫的所有變更記錄循環(huán)寫入聯(lián)機重做日志文件,當一個日志文件寫滿之后,變更記錄會繼續(xù)寫入另外一個日志文件。
5.1.2 歸檔重做日志(Archive Redo Log)
只有數(shù)據(jù)庫運行在歸檔模式下才會產(chǎn)生歸檔重做日志文件。當聯(lián)機重做日志寫滿之后,切換到下一個聯(lián)機重做日志文件時,數(shù)據(jù)庫將上一個聯(lián)機重做日志生成一個脫機副本文件,歸檔重做日志就是這么產(chǎn)生的[5]。歸檔重做日志是實現(xiàn)數(shù)據(jù)庫任意時間點、任意數(shù)據(jù)產(chǎn)生點、任意表等數(shù)據(jù)恢復的關(guān)鍵。
5.2 備份方式
5.2.1 邏輯備份
邏輯備份是對數(shù)據(jù)庫表和數(shù)據(jù)庫對象的備份,但會丟失數(shù)據(jù)庫部分物理結(jié)構(gòu),比如索引、視圖等。邏輯備份的方法有很多,比如傳統(tǒng)的EXP、數(shù)據(jù)泵EXPDP或第三方工具都可以進行數(shù)據(jù)庫的邏輯備份。
5.2.2 物理備份
物理備份是對數(shù)據(jù)庫文件中的數(shù)據(jù)文件、控制文件、日志文件等數(shù)據(jù)庫文件的備份,物理備份可以分為脫機備份、聯(lián)機備份。脫機備份指在數(shù)據(jù)庫關(guān)閉的情況下對數(shù)據(jù)庫文件的備份;聯(lián)機備份是利用歸檔日志對正在運行中的數(shù)據(jù)庫進行備份,可以使用Oracle RMAN、OS Copy等工具操作備份。
5.3 Data Guard保護模式
Data Guard共有三種數(shù)據(jù)庫保護模式可以選擇,依次是最大保護模式、最高性能模式和最高可用模式。
5.3.1 最大保護模式
最大保護模式為數(shù)據(jù)庫提供了最高水平的數(shù)據(jù)保護,是數(shù)據(jù)庫的一個整體無數(shù)據(jù)丟失的數(shù)據(jù)恢復解決方案。Data Guard工作在最大保護模式下,要求所有的事務在提交前期重做日志時不但被寫入主數(shù)據(jù)庫重做日志中,還要同時寫入備用數(shù)據(jù)庫的重做日志中。并且系統(tǒng)需要確保重做日志數(shù)據(jù)至少在一個備用數(shù)據(jù)庫中可用時,才會在主數(shù)據(jù)庫上提交并應用事務。當主數(shù)據(jù)庫因為系統(tǒng)故障,無法把重做日志寫到至少一個備數(shù)據(jù)庫時,主數(shù)據(jù)庫將主動關(guān)閉以防止數(shù)據(jù)丟失。
5.3.2 最高性能模式
Data Guard默認的保護模式為最高性能模式,運行在最高性能模式時可以保證不影響主數(shù)據(jù)庫性能的同時,擁有最高級別的數(shù)據(jù)庫數(shù)據(jù)保護。最高性能模式下事務可以隨時提交,并且至少一個備份數(shù)據(jù)庫被同時寫入重做日志。最高性能模式提供了數(shù)據(jù)庫高可用性的數(shù)據(jù)保護,僅僅輕微影響了主數(shù)據(jù)庫的性能損耗[6]。
5.3.3 最高可用模式
最高可用模式的特點是,既可以對主數(shù)據(jù)庫提供最大化的最高級別的數(shù)據(jù)保護,也不需要為了主數(shù)據(jù)庫的可用性而折中考慮其他措施。與最大保護模式相同的是,事務提交前至少一個備份數(shù)據(jù)庫被同時寫入重做日志;與最大保護模式不同的是,如果主數(shù)據(jù)庫由于系統(tǒng)故障,無法寫入備數(shù)據(jù)庫重做日志時,主數(shù)據(jù)庫不會因此主動關(guān)閉。主數(shù)據(jù)庫立即以最大性能模式運行,直到故障被消除。當所有故障被處理后,主數(shù)據(jù)庫將自動切換回最大可用性模式運行。
要確定選擇哪種數(shù)據(jù)保護模式,我們需要根據(jù)業(yè)務對系統(tǒng)響應時間的要求來評估數(shù)據(jù)保護的業(yè)務要求,分析各種數(shù)據(jù)保護模式的利弊,從而制訂相應數(shù)據(jù)保護方案。
6 Data Guard部署優(yōu)勢
6.1 低容災成本
Data Guard主數(shù)據(jù)庫、備數(shù)據(jù)庫服務器既可以部署在物理機上也可以部署在虛擬機上,且主數(shù)據(jù)庫、備數(shù)據(jù)庫的服務器資源配置無須一致或相近。這樣可以把空閑的硬件資源、服務器虛擬化資源添加到數(shù)據(jù)庫災備環(huán)境中,降低數(shù)據(jù)庫容災備份成本。如果通過多個部署多個數(shù)據(jù)庫服務器充當備數(shù)據(jù)庫,可以在主數(shù)據(jù)庫發(fā)生故障時及時切換,消除了單點故障隱患。
6.2 資源有效利用
企業(yè)的發(fā)展依托業(yè)務系統(tǒng)信息化快速成長,企業(yè)對業(yè)務系統(tǒng)的各類查詢和報表需求也不斷增加。在信息數(shù)據(jù)爆炸性增長的大數(shù)據(jù)時代,應對這類需求可以利用Data Guard,以只讀方式連接備數(shù)據(jù)庫,提供對實時性要求比較低的查詢、報表業(yè)務。我們可以利用Oracle RMAN采取新的一種備份模式,在主數(shù)據(jù)
庫中只備份參數(shù)文件和控制文件,而在備數(shù)據(jù)庫中備份占用數(shù)據(jù)庫資源大的數(shù)據(jù)文件、歸檔文件。這樣操作下來既不會影響數(shù)據(jù)的備份作業(yè)運行,也可以最大限度減少對主數(shù)據(jù)庫的性能干擾,保障主數(shù)據(jù)庫以最高性能運行。
6.3 完整的數(shù)據(jù)保護
Data Guard不僅可以保證災難發(fā)生后,主數(shù)據(jù)庫服務器受到損壞后,備數(shù)據(jù)庫能夠及時提供數(shù)據(jù)的恢復。并且當主數(shù)據(jù)庫服務器的存儲資源池由于災難導致?lián)p壞、人為因素操作失誤導致數(shù)據(jù)損壞也能被解決。因為Data Guard的保護機制,重做日志在被寫入備數(shù)據(jù)庫時需要經(jīng)過確認,從而確保主數(shù)據(jù)和備數(shù)據(jù)庫的數(shù)據(jù)一致性。
7 結(jié)束語
Data Guard在簡單的環(huán)境需求下滿足容災備份需求,它具有很好的可靠性、高安全性,消除了單點故障的隱患。在投入相對較少的硬件資源情況下充分利用,對性能的影響非常小。企業(yè)可以根據(jù)業(yè)務系統(tǒng)后期增長需求,在原來基礎上對備數(shù)據(jù)庫進行擴展,結(jié)合Oracle數(shù)據(jù)庫其他高可用、高可靠等特性,保障數(shù)據(jù)庫服務滿足企業(yè)業(yè)務系統(tǒng)日益增加的需求。Data Guard的實用性決定它將來的發(fā)展前景是非常廣闊的。
參考文獻:
[1] 張曉明.大話Oracle RAC[M].北京:人民郵電出版社,2014.
[2] 呂元海,孫江輝,馬龍.基于Oracle RAC的校園網(wǎng)數(shù)據(jù)庫集群系統(tǒng)設計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2016,39(4):72-75.
[3] Sam R.Alapati.Oracle Database 11g數(shù)據(jù)庫管理藝術(shù)[M].北京:人民郵電出版社,2010.
[4] 明日科技.Oracle從入門到精通[M].北京:清華大學出版社,2012.
[5] 格林威爾.Oracle精髓[M].北京:機械工業(yè)出版社,2009.
[6] 李春蘭.基于Linux的Oracle Data Guard數(shù)據(jù)容災系統(tǒng)[J].黑龍江科技信息,2017(15):172-176.
【通聯(lián)編輯:代影】