dataguard

甲骨文公司推出的資料庫方案

DataGuard是甲骨文推出的一種高可用性資料庫方案,在Oracle 8i之前被稱為Standby Database。從Oracle 9i開始,正式更名為Data Guard。它是在主節點與備用節點間通過日誌同步來保證數據的同步,可以實現資料庫快速切換與災難性恢復。Data Guard只是在軟體上對資料庫進行設置,並不需要額外購買任何組件。用戶能夠在對主資料庫影響很小的情況下,實現主備資料庫的同步。而主備機之間的數據差異只限於在線日誌部分,因此被不少企業用作數據容災解決方案。

方案概述


DataGuard是一種資料庫級別的HA方案,最主要功能是容災、數據保護、故障恢復等。
DataGuard是生產資料庫的"事務一致性copy",創建時,使用生產庫的物理copy.創建完成後,備庫會通過生產庫傳輸過來的歸檔日誌(或重做條目)自動維護備用資料庫。將重做數據應用到備用庫。

類型


DataGuard分為"物理standby"和"邏輯standby"
物理standby
主備庫之間物理結構,邏輯結構保持一致。通常情況下備用庫通過主庫傳輸過來的歸檔日誌做恢復。
基於"塊對塊"方式。與主資料庫相同。物理standby等同於生產庫。物理standby能以read only方式打開(或者在flashback資料庫下以"讀寫方式打開")。
物理standby一旦以"讀寫"方式打開,備用庫將不會從主資料庫接受重做數據。只有當備庫flashback到過去的點,當備用庫flashback到"讀寫"打開時間點前的狀態時, DataGuard會自動同步備庫與主庫。才能恢復standby角色。
邏輯standby
只保證邏輯結構與主庫一致。備用庫要處於打開狀態,通過從主庫歸檔日誌文件中提取出來的SQL語句做恢復。
創建時,與物理standby一樣,使用主庫copy.
邏輯備庫通過執行SQL語句來更新。 DataGuard轉換日誌文件中的數據為SQL語句,然後在邏輯standby上執行SQL語句。因為邏輯standby是通過SQL語句來實現數據同步,那麼在同步期間其必須保持打開狀態。

服務


1.重做傳輸服務
控制重做數據從生產機傳輸到一個或多個備用庫。
2.日誌應用服務
2.1 生產庫上通過ARCH進程生成歸檔日誌文件,然後傳輸到備用庫,備用庫再從歸檔日誌中恢複數據
2.2 實時模式時,生產庫上的操作通過LGWR進程實時反映在備用庫的備用日誌文件中,備用庫從備用日誌文件實時恢複數據。
3.角色切換
主備庫用戶角色的切換。

三種保護模式


1.最大保護
這種模式主備庫之間數據是同步的。即主庫提交的同時,備庫會做相應的恢復。最大限度的保證了數據完整性。不允許數據的丟失。
如果主備庫之間網路,或者備庫出現問題會直接影響主庫操作。導致主庫宕機。
2.最大可用性
這種模式和"最大保護"基本上差不多。正常情況下,主備庫之間是同步的。
當網路或者備庫出現問題時,不會影響到主庫的宕機,主庫會自動轉換庫"最大性能"模式,等待備庫可用時,將歸檔傳輸到備庫做恢復。
可以把這種模式理解為"最大保護"和"最大性能"兩種模式的中間體。
3.最大性能
這種模式保證主庫性能最大化,主備庫之間數據是非同步傳輸的。即,主庫日誌歸檔以後才會傳輸到備用庫,在備庫上使用歸檔日誌文件做恢復操作。