袁超
摘 要 在多數(shù)企業(yè)里,信息化支撐著各種業(yè)務(wù)。很多企業(yè)關(guān)注的不僅僅是業(yè)務(wù)的安全問題,對于業(yè)務(wù)的容災(zāi)能力、災(zāi)難發(fā)生后的恢復(fù)也非常重視。本文對甲骨文公司DG產(chǎn)品進行了研究,結(jié)合本人參與的災(zāi)備系統(tǒng)實踐經(jīng)驗,為企業(yè)的災(zāi)備系統(tǒng)建設(shè)提供了一種容災(zāi)技術(shù)方案和可借鑒的建設(shè)經(jīng)驗。
關(guān)鍵詞 災(zāi)備系統(tǒng);容災(zāi)技術(shù):DATAGUARD
引言
災(zāi)備系統(tǒng)也稱為災(zāi)難備份系統(tǒng),它是企業(yè)預(yù)先建立的、具備業(yè)務(wù)運行環(huán)境的備份系統(tǒng),在短時間內(nèi)能恢復(fù)業(yè)務(wù)系統(tǒng)的正常運行。
通常企業(yè)的業(yè)務(wù)系統(tǒng)由許多硬件和軟件組成,而數(shù)據(jù)庫系統(tǒng)是其中最重要的一環(huán),因為它存儲著企業(yè)最有價值的資產(chǎn):數(shù)據(jù)。當災(zāi)難發(fā)生導(dǎo)致生產(chǎn)系統(tǒng)無法提供服務(wù)時,災(zāi)備系統(tǒng)就需要暫時接管。ORACLE DG技術(shù)通過將生產(chǎn)數(shù)據(jù)同步到災(zāi)備,并可以在短時間內(nèi)完成主備角色切換,從而保證業(yè)務(wù)系統(tǒng)的可用性。
1ORACLE DG技術(shù)原理
1.1 DG概述
通過創(chuàng)建、維護、管理和監(jiān)視一個或多個備庫,使生產(chǎn)庫能夠應(yīng)對災(zāi)難的發(fā)生而不丟失數(shù)據(jù),Oracle DG提供的是一整套技術(shù)手段。這些備庫作為生產(chǎn)庫的副本由DG來進行維護。當生產(chǎn)庫計劃內(nèi)或計劃外停機無法提供服務(wù)時,DG可以將任何備庫切換為生產(chǎn)角色,從而降低業(yè)務(wù)的停機時間。
1.2 DG工作原理
當主庫的LGWR進程寫日志時,LNS進程從Redo buffer中讀取日志數(shù)據(jù),通過ONS將日志數(shù)據(jù)傳輸?shù)絺鋷焐?備庫上的RFS進程接收日志數(shù)據(jù)并寫到備用日志文件中;應(yīng)用服務(wù)驗證日志數(shù)據(jù)并應(yīng)用,從而與主庫數(shù)據(jù)保持一致。
1.3 DG日志傳輸方式和備庫類型
DG有兩種日志傳輸方式:同步和異步。
同步模式下只有當LNS進程確認日志數(shù)據(jù)被傳輸?shù)絺鋷烨冶粦?yīng)用后,主庫上的提交操作才會被成功執(zhí)行。異步模式下LGWR無須等待LNS的確認信息即可在主庫上執(zhí)行提交,對主庫的性能幾乎沒有任何的影響。
DG包含三種備庫類型:
物理備庫:主備庫的物理結(jié)構(gòu)完全相同。通過日志應(yīng)用與主庫保持同步。邏輯備庫:與主庫有相同的邏輯信息,但物理結(jié)構(gòu)可能不同。通過SQL應(yīng)用與主庫保持同步。快照備庫:它從主庫接收日志數(shù)據(jù),但并不應(yīng)用。只有當它轉(zhuǎn)換為物理備庫時,才開始應(yīng)用日志數(shù)據(jù)。
1.4 DG保護模式和故障切換
DG支持最大性能、最大可用、最大保護三種保護模式:
運行在最大性能模式時主庫事務(wù)正常提交,備庫故障不會影響到主庫的運行;運行在最大可用模式時要求主庫的事務(wù)能夠提交的條件是至少一個備庫收到日志數(shù)據(jù)后;最大保護模式下主庫日志不能寫入備庫時,會自動關(guān)閉。
DG提供了switchover和failover兩種切換方法。
failover是主庫發(fā)生災(zāi)難時的故障切換;switchover是計劃內(nèi)的角色轉(zhuǎn)換。
2ORACLE DG在災(zāi)備項目中的實際應(yīng)用
2.1 DG部署環(huán)境要求
在實際項目的DG部署中需要滿足以下關(guān)鍵要求:
(1)主備庫服務(wù)器的操作系統(tǒng)版本必須一致;
(2)主備庫的數(shù)據(jù)庫軟件版本、補丁號必須一致;
(3)備庫安裝數(shù)據(jù)庫軟件后,不必創(chuàng)建庫;
(4)主備庫的DB_UNIQUE_NAME必須不同;
(5)生產(chǎn)和災(zāi)備之間的網(wǎng)絡(luò)須連通;
(6)建議采用相同型號和配置的服務(wù)器。
2.2 日志傳輸方式和保護模式選擇
災(zāi)備建設(shè)中建議最大保護、最大可用模式使用同步日志傳輸模式,最大性能使用異步日志傳輸模式。
在實際的實施過程中,業(yè)務(wù)系統(tǒng)和數(shù)據(jù)丟失之間的關(guān)系需要平衡。如果采用最大保護模式,雖然可以實現(xiàn)零數(shù)據(jù)丟失,但是只要備庫出現(xiàn)問題,主庫就會自動關(guān)閉,業(yè)務(wù)系統(tǒng)就會中斷,此種模式下建議配置2個以上的備庫。最大可用模式雖然也是同步傳輸,但不會立即關(guān)閉,它會降級到最大性能模式,直到故障解除。最大性能模式不受備庫故障的影響,而且能在備庫恢復(fù)后補傳日志數(shù)據(jù)。在實際的項目中,如果生產(chǎn)和災(zāi)備間的網(wǎng)絡(luò)質(zhì)量能夠保證,延時能低于5ms,建議采用最大可用性模式;如果延時較大,建議采用最大性能模式。
2.3 備庫類型的選擇
災(zāi)備系統(tǒng)建設(shè)的初衷就是作為生產(chǎn)系統(tǒng)的備份,另外再分擔部分業(yè)務(wù)系統(tǒng)查詢工作。11G發(fā)布后,新增了ADG功能,備庫與主庫同步時,能以只讀模式打開,可以進行數(shù)據(jù)查詢。由于物理備庫是基于塊對塊級別拷貝技術(shù),因此效率要高于邏輯備庫,且不會有SQL性能問題。在實際應(yīng)用中,建議配置物理備庫,完全能滿足企業(yè)需求。
2.4 災(zāi)備系統(tǒng)切換演練
通過對災(zāi)備系統(tǒng)進行定期切換演練,可以驗證和檢查災(zāi)備系統(tǒng)的容災(zāi)功能。數(shù)據(jù)庫層面可通過DG的switchover來驗證。
switchover和failover之間的差異是:switchover是計劃內(nèi)的角色轉(zhuǎn)換,不會破壞現(xiàn)有DG架構(gòu)。因而,可以更安全地執(zhí)行切換演練。而failover則是破壞現(xiàn)有的DG架構(gòu),雖然可以執(zhí)行切換演練,但演練結(jié)束后需要重新配置DG架構(gòu),對于以演練為目的切換來說,代價太大。所以在實際的災(zāi)備切換演練中,執(zhí)行switchover就能達到目的??梢允褂肈G Broker工具來執(zhí)行切換,只需一條命令,一般能在2分鐘內(nèi)切換完成。
2.5 網(wǎng)絡(luò)帶寬要求
假設(shè)主庫的日志數(shù)據(jù)在業(yè)務(wù)最繁忙時生成的速度為1MB/s,那么對帶寬傳輸速度的最低要求就是1MB/s,帶寬的大小為1MB/s*8=8M,考慮到網(wǎng)絡(luò)損耗假設(shè)為80%,實際帶寬需求為10M。計算公式為:1/0.8*8=10Mbps。
在實際的項目中,不僅要考慮帶寬是否滿足日志傳輸?shù)囊螅€要考慮是否滿足災(zāi)難恢復(fù)的要求。帶寬越大,災(zāi)難恢復(fù)花費的時間就越少,對業(yè)務(wù)的影響就越小。所以一般要求帶寬必須為千兆網(wǎng)絡(luò)。
3結(jié)束語
企業(yè)都希望自己的數(shù)據(jù)能得到最好的保護,不管發(fā)生何種災(zāi)難,數(shù)據(jù)都不會丟失。災(zāi)備系統(tǒng)是一個復(fù)雜的系統(tǒng)工程,可以提升企業(yè)應(yīng)對災(zāi)難發(fā)生的能力。而Oracle DG容災(zāi)技術(shù)能完善企業(yè)的災(zāi)備系統(tǒng),避免數(shù)據(jù)丟失,保護企業(yè)的投資,對企業(yè)來說具有重要意義。
參考文獻
[1] 佚名.Oracle官方文檔:Oracle? Data Guard Concepts and Administration 11g Release 2 (11.2)[ED/OL].https://www.doc88.com/p-6701552258020.html,2016-11-13.
[2] Oracle官方文檔:Oracle? Data Guard Concepts and Administration 12c Release 2 (12.2)[ED/OL].https://docs.oracle.com/database/121/SBYDB/title.htm,2017-5-8.