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