Oracle Dataguard(主庫為 Oracle 11g 單節點)配置詳解(1):Oracle Dataguard 概述
目錄
- Oracle Dataguard(主庫為 Oracle 11g 單節點)配置詳解(1):Oracle Dataguard 概述
- 一、Oracle Dataguard 概念
- 二、Oracle Dataguard 基本原理
- 三、Oracle Dataguard 的特點
- 四、Oracle Dataguard 的功能
- 五、Oracle Dataguard 進程結構
- 六、重做應用和 SQL 應用
- 1、物理備用數據庫:重做應用
- 2、邏輯備用數據庫:SQL 應用
- 3、實時應用
- 七、Oracle Dataguard 數據保護模式
- 1、最大保護
- 2、最高可用性
- 3、最高性能
一、Oracle Dataguard 概念
Dataguard 是保證企業數據的高可用性(high availability,HA)、數據保護(data protection)與災難恢復(disaster recovery)的集成化災難恢復解決方案。
Dataguard 針對生產數據庫創建一個或多個同步備份,由一個生產數據庫和若干個備用數據庫組成,形成一個獨立的、易于管理的數據保護方案。
二、Oracle Dataguard 基本原理
1、當某次事務更改生產數據庫中的數據時,Oracle 在聯機重做日志文件(redo log)中記錄此次更改。
2、在 Dataguard 中,除了把日志記錄到本地的聯機日志文件和歸檔日志文件中,還通過網絡,把日志信息發送到遠程的備用數據庫服務器上。
備用日志文件寫入過程可以實時同步(最大保護模式),以實現零數據丟失。也可以是異步的(最大可用性模式),以減少對網絡帶寬的壓力。或者通過歸檔日志文件的批量傳輸模式(最大性能模式),以減少對生產系統的性能影響。
3、當備份數據庫接收到日志信息時,Dataguard 可以自動利用日志信息實現數據的同步。
4、當主數據庫打開并處于活動狀態時,備份數據庫可以執行恢復操作。如果主數據出現了故障,備用數據庫即可以被激活并接管生產數據庫的工作。
圖1 Oracle Dataguard 結構
三、Oracle Dataguard 的特點
1、需要有冗余的服務器硬件。
2、需要冗余的存儲設備,主機和備機都需要同樣的存儲空間。
3、安裝配置較復雜,需要更多的配置步驟。
4、管理與維護成本高,該模式對維護人員的要求較高。
5、具備一定的容災特性,當主機數據庫不可用,可以把數據庫系統切換到備機上,具備容災的功能。
6、備機可以用作只讀查詢,備機可以切換到只讀狀態供報表之類的查詢操作,減輕主機的壓力。
四、Oracle Dataguard 的功能
Oracle Dataguard 包括一個生產數據庫,也稱為主數據庫,以及一個或多個備用數據庫,這些備用數據庫是與主數據庫在事務上一致的副本。
Dataguard 利用重做數據保持這種事務一致性。當主數據庫中發生事務時,則生成重做數據并將其寫入本地重做日志文件中。并且將重做數據傳輸到備用站點上,并應用到備用數據庫中,從而使備用數據庫與主數據庫保持同步。
Dataguard 允許管理員選擇將重做數據同步還是異步地發送到備用站點上。
備用數據庫的底層技術是 Dataguard 重做應用(物理備用數據庫)和 Dataguard SQL 應用(邏輯備用數據庫)。
物理備用數據庫在磁盤上擁有和主數據庫逐塊相同的數據庫結構,并且使用 Oracle 介質恢復進行更新。邏輯備用數據庫是一個獨立數據庫,它與主數據庫包含相同的數據。它使用 SQL 語句進行更新。
Dataguard 簡化了主數據庫和選定的備用數據庫之間的轉換和故障切換,從而減少了由計劃停機和計劃外故障所導致的總停機時間。
為了獲得更簡便的可管理性,Dataguard 還提供了一個分布式管理框架(稱為 Dataguard Broker),它不但自動化了 Dataguard 配置的創建、維護和監控,并對這些操作進行統一管理。管理員可以使用 Oracle Enterprise Manager 或 Broker 自己的專用命令行界面(DGMGRL) 來利用 Broker 的管理功能。
圖2 Oracle Dataguard 結構組件
五、Oracle Dataguard 進程結構
Oracle Dataguard 的進程結構如圖3所示:
圖3 Oracle Dataguard 進程結構
在主數據庫上,Oracle Dataguard 使用日志寫入器進程(LGWR)或歸檔器進程(ARCH)收集事務重做數據,并將其傳輸到備用數據庫中。使用獲取存檔日志進程(FAL)提供一個客戶服務器機制,用于在主數據庫和備用數據庫之間出現通信中斷之后將存檔日志發送到備用數據庫中,以實現自動填充間隔和重新同步。
在備用數據庫上,Oracle Dataguard 使用遠程文件服務器(RFS)進程從主數據庫接收重做記錄。使用管理恢復進程 (MRP)將重做信息應用到物理備用數據庫中。使用邏輯備用進程(LSP)將經過 SQL 轉換的重做信息應用到邏輯備用數據庫中。
如果啟用了 Dataguard Broker,Oracle Dataguard 還使用 Dataguard Broker Monitor(DMON)進程將主數據庫和備用數據庫作為一個統一的配置進行管理和監控。
六、重做應用和 SQL 應用
一旦創建了備用數據庫,Dataguard 自動將主數據庫重做數據傳輸給備用系統,然后將重做數據應用到備用數據庫中,從而使備用數據庫保持為與主數據庫在事務上一致的副本。
Dataguard 提供了兩種方法將這些重做數據應用到備用數據庫中,并使之與主數據庫在事務上保持一致。這些方法與 Data guard 支持的兩種類型的備用數據庫對應:
(1)重做應用,用于物理備用數據庫。
(2)SQL 應用,用于邏輯備用數據庫。
就從主數據庫進行的數據傳輸而言,這兩種類型的備用數據庫之間沒有差別。一旦重做數據到達備用服務器,這兩種類型的備用數據庫在將重做數據應用到備用數據庫的方式上就存在差異了。
1、物理備用數據庫:重做應用
通過使用 Oracle 介質恢復應用從主數據庫接收到的重做數據,物理備用數據庫與主數據庫保持同步。它在物理上與主數據庫逐塊相同,因而數據庫模式(包括索引)是相同的。
重做應用的工作過程:主數據庫上的日志切換將觸發備用數據庫上的日志切換,從而使備用數據庫上的歸檔器進程將當前的備用重做日志文件歸檔到備用數據庫上的一個存檔日志中。隨后,Dataguard 重做應用使用一個專用進程(稱為管理的恢復進程:MRP)讀取存檔日志,并將重做數據應用到物理備用數據庫中。如果啟用了實時應用,則 MRP 將在 RFS 進程寫滿當前的備用重做日志文件時直接從其中讀取重做數據。
2、邏輯備用數據庫:SQL 應用
盡管數據的物理組織和結構可能不同,但邏輯備用數據庫包含與主數據庫相同的邏輯信息。SQL 應用技術將從主數據庫接收到的重做數據轉換成 SQL 語句,然后在備用數據庫上執行 SQL 語句,以使邏輯備用數據庫與主數據庫保持同步。從而,在將 SQL 應用到邏輯備用數據庫上的同時,可以訪問邏輯備用數據庫來進行查詢和報表操作。
SQL 應用的工作過程:SQL 應用使用許多并行的執行服務器和后臺進程,它們將來自主數據庫的更改應用到邏輯備用數據庫中。讀取器進程從存檔日志(如果啟用了實時應用,也可以是備用重做日志)中讀取重做記錄。準備器進程將塊更改轉換成表更改或邏輯更改記錄(LCR)。構造器進程對來自各個 LCR 的已完成事務進行組合。分析器進程檢查完成的事務,辨明不同事務之間的相關性。協調器進程(也稱為邏輯備用進程,即 LSP)負責將事務分配給應用進程、監控事務之間的相關性以及批準將更改提交給邏輯備用數據庫。應用器進程將已指定事務的 LCR 應用到數據庫中,并在協調器指示提交事務時提交。
3、實時應用
實時應用可以在將重做數據一寫到備用重做日志中時,就將重做數據應用到備用數據庫中(無論采用重做應用還是 SQL 應用)。實時應用特性允許備用數據庫與主數據庫保持密切同步,從而啟用最新和實時報表。同時,這一特性也可減少轉換時間和故障切換時間,進而降低計劃內和計劃外業務停機時間。
要啟用物理備用數據庫的實時應用,應使用以下命令在物理備用數據庫上啟動恢復:
ALTER DATABASE RECOVER MANAGED STANDY DATABASE USING CURRENT LOGFILE;
要啟用邏輯備用數據庫的實時應用,應使用以下命令在邏輯備用數據庫上啟動應用進程:
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
七、Oracle Dataguard 數據保護模式
Oracle Dataguard 提供三種數據保護模式(最大保護、最高可用性、最高性能)來平衡成本、可用性、性能和事務保護。在主數據庫上執行下面的 SQL 語
句可用于設置三種數據保護模式:
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {PROTECTION | AVAILABILITY | PERFORMANCE};
下表從數據丟失風險的角度概述了各種模式的適用性。
保護模式 | 在出現災難時數據丟失的風險 | 重做傳輸機制 |
---|---|---|
最大保護 | 零數據丟失;雙重故障保護 | LGWR SYNC |
最高可用性 | 零數據丟失;單故障保護 | LGWR SYNC |
最高性能 | 最小數據丟失 — 通常從 0 到幾秒 | LGWR ASYNC 或 ARCH |
1、最大保護
最大保護模式為主數據庫提供了最高水平的數據保護,從而確保一個全面的零數據丟失的災難恢復解決方案。當在最大保護模式下運行時,重做記錄由日志寫入器(LGWR)進程從主數據庫同步地傳輸到備用數據庫,并且直到確認事務數據在至少一個備用服務器上的磁盤上可用時,才在主數據庫上提交事務。
這種模式必須配置至少兩個備用數據庫,從而提供雙重故障保護。當最后參與的備用數據庫不可用時,主數據庫上的處理將停止。這就確保了當主數據庫與其所有備用數據庫失去聯系時,不會丟失事務。
由于重做傳輸的同步特性,這種最大保護模式可能潛在地影響主數據庫響應時間。可以通過配置一個低延遲網絡,并為它分配足夠應付高峰事務負載的帶寬來將這種影響減到最小。需要這種最大保護模式的企業有股票交易所、貨幣交易所、金融機構等。
2、最高可用性
最高可用性模式擁有僅次于最高水平的主數據庫數據可用性。如同最大保護模式一樣,重做數據由 LGWR 從主數據庫同步地傳輸到備用數據庫,直到確認事務數據在備用服務器的磁盤上可用時,事務才在主數據庫上完成。不過,在這種模式下,如果最后參與的備用數據庫變為不可用,處理將在主數據庫上繼續進行。
備用數據庫與主數據庫相比,可能暫時落在后面,但當它再次變為可用時,備用數據庫將自動同步,而不會丟失數據。
由于同步重做傳輸,這種保護模式可潛在地影響響應時間和吞吐量。可以通過配置一個低延遲網絡,并為它分配足夠應付高峰事務負載的帶寬來將這種影響減到最小。
最高可用性模式適用于想要在生產站點上出現嚴重中斷時(假定沒有其他故障)確保獲得零數據丟失保護,但不想讓生產數據庫受網絡/備用服務器故障影響的企業。
3、最高性能
最高性能模式是默認的保護模式。它與最高可用性模式相比,提供了稍微少一些的主數據庫數據保護,但提供了更高的性能。在這種模式下,當主數據庫處理事務時,重做數據由 LGWR 進程異步傳輸到備用數據庫上。另外,也可以將主數據庫上的歸檔器進程(ARCH)配置為在這種模式下傳輸重做數據。
在任何情況下,均先完成主數據庫上的寫操作,主數據庫的提交操作不等待備用數據庫確認接收。如果任意備用目標數據庫變為不可用,則處理將在主數據庫上繼續進行,這對性能只有很小的影響或沒有影響。
不過在這種情況下,數據庫告警日志將記錄錯誤消息,并可以通過 Enterprise Manager 相應地設置告警。 在主數據庫出現故障的情況下,可能有一些在主數據庫上提交了的事務沒有傳輸到備用數據庫中。如果網絡有足夠的吞吐量來跟上重做流量高峰,則丟失的事務將非常少或者為零。