Oracle數據庫目前依然處於商用數據庫的霸主地位。 運行在Oracle數據庫上的核心業務及核心數據的安全性尤為重要。
目前市場上針對Oracle數據庫常見的容災產品大致可以分為兩大類。
- Oracle 公司自己的容災產品
- 非Oracle公司的容災產品
Oracle公司目前的容災產品有我們常見的DataGuard和屬於中間件部門的Oracle GoldenGate(以下簡稱OGG)產品。非Oracle公司的有DSG迪思傑 及DDS九橋,這兩種產品和OGG在實現原理上大致相同。
Oracle GoldenGate和DSG/DDS等產品,其license相對較為昂貴,而在購買了Oracle RDBMS軟件license之后,DataGuard使用是免費的。Oracle 11g Active DataGuard(ADG)需要額外付費。
對於數據遷移,OGG/DDS/DSG 優勢更明顯。數據倉庫數據大集中到Oralce中做數據分析 使用DataGuard 則顯得太臃腫,不夠靈活。OGG在對異構平台的數據遷移同步上也有顯著的優勢。同時也用於停機時間較短的數據遷移方案。 通過其初始化數據及后期的增量同步可以極大地減少業務遷移的停機時間。OGG的容災同步可以滿足多樣性的需求,如只同步數據庫的某個或幾個用戶下的數據。同時OGG可以實現多進程抽取,OGG 12.x版本支持從DataGuard備庫中抽取數據到異地容災數據庫中。現在更推薦的架構是ADG+OGG 12.x從備庫抽取數據到異地容災機房。
在Oracle到Oracle的容災方面,DataGuard在維護及預算支持上都優於Oracle GoldenGate。Oracle 11g Active DataGuard(ADG)備庫實只讀時查詢可以支持報表業務,將主庫的壓力分散到備庫上。11g的snapshot DataGuard將備庫臨時轉換成一個可以讀寫的測試環境,數據完全和生產一致,為測試通過了一套最真實的仿真環境。測試完之后一鍵切回備庫模式。測試數據自動抹去,不會影響數據的同步容災。
這里插入稍微說一下Oracle的Extended RAC 容災高可用。Extended RAC就是將傳統的RAC兩個節點從同一個機房改成分別放在兩個不同的機房來實現單點容災。然而考慮到RAC本身的一些問題及存儲需求。RAC兩個節點不能放置的距離太遠(隨着網絡延遲的增加,RAC的性能成幾何倍的衰弱,這就是為什么Exadata為什么將RAC所有節點放在同一個機櫃的原因),而距離太近又不能實現真正的災備,如電網,台風,水災,地震等等。同時需要存儲復制的支持,預算將會是一個比較大的問題。
DataGuard 容災的高可用性切換時間需要多久? 在我們現有的客戶環境中,DataGuard都是作為Oracle RAC的災備環境。當RAC環境出現災難性的損害徹底無法使用的時候可以通過一鍵failover腳本切換到備庫。數據庫本身在同步正常的情況下,切換可以在2分鍾內完成。
關於DataGuard 和 OGG 在對網絡帶寬上的對比。DataGuard由於要傳輸比OGG更多的數據,其帶寬占用要略多於OGG。但是也沒有我們想象的那么恐怖。在正常的DataGuard同步中,oracle選擇通過LNS將redo buffer中的重做數據推送到standby數據庫中。這些其實是很小的一些量,對網絡帶寬的要求並不是很高。具體量的大小,可以通過業務高峰期間的awr報告中的load profile來大致分析。Oracle 11g配置DataGuard log_archive_dest_n屬性中已經取消了arch/lgwr屬性。 默認使用lgwr來傳輸。也就是說除非有GAP存在,Oracle DataGuard容災本質上不再依賴歸檔日志。
Oracle 11g DataGuard 在實施上也比 10g 要方便很多。 通過Duplicate From Active DataBase備份不落地的方式復制數據庫,可以在主庫不停止的情況下直接實施DataGuard環境(前提是主庫已經開啟了歸檔模式,否則需要一次停機操作)。
如果需要使用ADG作為報表庫,建議同時部署DataGuard監控。通過linux shell + oracle procedure實現監控ADG同步狀態的腳本。可以監控出實時同步是否正常及延遲時間。