1. 程式人生 > >Dataguard基礎原理介紹

Dataguard基礎原理介紹

 一、摘要

Oracle DataGuard是Oracle自帶的資料同步功能,基本原理是將日誌檔案從原資料庫傳輸到目標資料庫,然後在目標資料庫上應用這些日誌檔案,從而使目標資料庫與源資料庫保持同步,是一種資料庫級別的高可用性方案。

DataGuard可以提供Oracle資料庫的冗災、資料保護、故障恢復等,實現資料庫快速切換與災難性恢復。

在生產資料庫的保證"事務一致性"時,使用生產庫的物理全備份建立備庫,備庫會通過生產庫傳輸過來的歸檔日誌或重做條目自動維護備用資料庫。

DataGuard資料同步技術有以下優勢:

1. Oracle資料庫自身內建的功能,與每個Oracle新版本的新特性都完全相容,且不需要另外付費。

2. 配置管理較簡單,不需要熟悉其他第三方的軟體產品。

3. 物理Standby資料庫支援任何型別的資料物件和資料型別。

4. 邏輯Standby資料庫處於開啟狀態,可以在保持資料同步的同時執行查詢等操作。

5. 在最大保護模式下,可確保資料的零丟失。

二、架構

Oracle DataGuard由一個Primary資料庫(生產資料庫)及一個或多個Standby資料庫(最多9個)組成。組成Data Guard的資料庫通過Oracle Net連線,並且有可以分佈於不同地域。

只要各庫之間可以相互通訊,它們的物理位置並沒有什麼限制,不受作業系統的限制。

1. Primary 資料庫

DataGuard包含一個Primary資料庫即被大部分應用訪問的生產資料庫,該庫既可以是單例項資料庫,也可以是RAC。

2. Standby 資料庫

Standby資料庫是Primary資料庫的複製(事務上一致)。在同一個Data Guard中可以最多建立9個standby資料庫,一旦建立完成,Data Guard通過應用Primary資料庫的redo自動維護每一個Standby資料庫。

Standby資料庫同樣即可以是單例項資料庫,也可以是RAC結構。

3. 結構圖

三、Standby資料庫型別

Standby資料庫通常分兩類:邏輯standby和物理standby。

1. 邏輯standby 

a. 邏輯standby是通過接收primary資料庫的redo log並轉換成sql語句,然後在standby資料庫上執行SQL語句實現同步;

b. 與主庫共享同樣的模式定義;

c. 通過應用SQL(sql apply)與主庫保持一致;

d. 當從主庫接受到日誌後,邏輯備用資料庫是通過logmnr將日誌轉換成sql,在邏輯備庫的表中,表可以同時用於恢復,報表查詢功能;

2. 物理standby

a. 物理standby是通過接收並應用primary資料庫的redo log以介質恢復的方式實現同步,不僅檔案的物理結構相同,連塊在磁碟上的儲存位置都是一模一樣的;

b. 基於資料塊級別和主資料庫一致;

c. 通過應用日誌(redo apply)與主庫保持同步;

d. 在mount standby階段進行應用日誌恢復,而同時也可以open read only提供報表查詢;

四、備份庫狀態

1. 物理備庫

(1). Managed recovery state

該模式下log transport service歸檔日誌到備庫,log apply service 自動應用這些日誌。資料庫不處於mount狀態,任何讀都不允許。

(2). Read only state

如果我們想做備庫為報表功能,那麼在備庫環境中,我們以read only形式開啟資料庫。在備庫log apply service將不能夠應用歸檔日誌到備庫,但是主庫的log transport service可以繼續傳遞迴檔日誌到備庫。

我們可以非產輕鬆的在上述兩種執行下程序切換,一般情況下我們會在如下的場景下程序切換:

a. 物理備庫用於報表模式

b. 為了災難的保護,檢查資料是否正常的傳遞到了備庫

2. 邏輯備庫

Open read write mode

該種模式,備庫仍然可以不斷的應用歸檔日誌,但是該備庫同時可以提供報表查詢功能。

當log apply service正在更新一張表時,該表仍然可以查詢,但是在該表上無法做任何的DML操作。如果其他模式下的物件沒有被log apply service所維護,那麼我們可以更新該模式下的那些物件。

五、服務

1. 重做傳輸服務(Redo Transport Services) 

控制redo資料的傳輸到一個或多個歸檔目的地。

2. 日誌應用服務(Log Apply Services) 

應用redo資料到standby資料庫,以保持與primary資料庫的事務一致。redo資料即可以從standby資料庫的歸檔檔案讀取,也可直接應用備用日誌檔案讀取。

3. 角色轉換服務(Role Transitions) 

DataGuard中有兩種角色:primary和standby。角色轉換就是讓資料庫在這兩個角色中切換,

4. 切換分兩種:switchover和failover  

(1). switchover:

a. 轉換primary資料庫與standby資料庫。

b. switchover可以確保不會丟失資料。

c. 計劃中角色轉換,主要用於作業系統和硬體的維護,備庫切換成主庫,而主庫切換成備庫,在切換完成後,這個過程沒有任何的資料丟失和損失。

(2). failover:

a. 當primary資料庫出現故障並且不能被及時恢復時,會呼叫failover將一個standby資料庫轉換為新的primary資料庫。

b. 在最大保護模式或最高可用性模式下,failover可以保證不會丟失資料。

c. 非計劃中的角色轉換,在緊急情況下使用,根據資料的保護模式的不同,只有少量的或者是很少的資料損失

六、保護模式

1. 最大保護

這種模式是預設的資料保護模式,在不影響源資料庫效能的條件下提供儘可能高的資料保護等級。

在該種模式下,一旦日誌資料寫到源資料庫的聯機日誌檔案,事務即可提交,不必等待日誌寫到目標資料庫,如果網路頻寬充足,該種模式可提供類似於最大可用模式的資料保護等級。

2. 最大可用性

這種模式和"最大保護"基本上差不多。正常情況下,主備庫之間是同步的。

當網路或者備庫出現問題時,不會影響到主庫的當機,主庫會自動轉換庫"最大效能"模式,等待備庫可用時,將歸檔傳輸到備庫做恢復。

3. 最大效能

這種模式保證主庫效能最大化,主備庫之間資料是非同步傳輸的。

即,主備日誌歸檔以後才會傳輸到備用庫,在備庫上使用歸檔日誌檔案做恢復操作。

七、安裝條件

執行DataGuard需要具備以下幾個條件:

1. 在主庫和從庫的所有機器上必須安裝同一個版本的Oracle企業版。

2. 主庫必須執行在歸檔模式下。

3. 主庫和從庫的作業系統必須一樣(允許版本不同),從庫可以使用與主庫不同的目錄結構。

4. 主從庫硬體系統的體系結構必須相同。比如:主庫執行在64位的Sun Sparc系統上,如果從庫是32位的Linux Intel系統就不允許。主從庫硬體的配置可以不同,比如:CPU數量、記憶體大小、儲存配置等。

Thanks and Regards