DataGuard日誌傳輸模式

wzq609發表於2016-01-07

【前言】學習技術跟學習武功一樣,之前整理了DataGuard的搭建和切換,這些都是武功招式,但是心法還沒有學。本文件介紹DataGuard的重要心法,DataGuard的三種保護模式跟日誌傳輸模式的關係,文章的主要內容來自於Oracle DataGuard 11G的參考手冊。

 

【1】DataGuard日誌傳輸模式的介紹

DataGuard的原理簡單來說就是把ORL寫入本地的同時,傳送一份到備庫上面進行執行,日誌傳輸是整個DataGuard的核心,就很有必要對日誌傳輸的幾種模式進行介紹;

 

DATAGUARD所有的同步模式都可以簡化成下面這張圖:
image 

1、主資料庫的LGWR 程式將重做資料寫入到自己的ORL 中,同時Log Network Server(LNS)程式從SGA的重做緩衝區中讀取重做日誌的資訊,交由Oracle Net服務傳輸到備份資料庫;

2、備用資料庫由另一個Data Guard程式Remote File Server(RFS)接收。RFS 在備用資料庫上接收重做資料,然後將其寫入一個名為備用重做日誌(StandbyRedo Log,SRL)檔案的順序檔案中。

當了解了簡單的原理之後,便可以深入的瞭解詳細的三種傳輸模式了;

 

同步方式:同步傳輸(synchronous transport,SYNC)又稱“零資料損失”方法,因為要等到LNS確認事務恢復所需的重做資料已被寫入備用站點的磁碟上,才允許LGWR 認可提交操作成功。

image

(1) 使用者提交一個事務,事務在SGA 中建立一個重做記錄。LGWR從日誌緩衝區中讀取重做記錄,寫入ORL,然後等待LNS 的確認。
(2) LNS 從日誌緩衝區中讀取相同的重做記錄,透過Oracle Net 服務傳給備用資料庫。備用資料庫上的RFS 接收重做資料,然後將其寫入備用重做日誌檔案中。
(3) 當RFS 從磁碟接收到一個寫完訊息時,會將一個確認訊息傳回給主資料庫上的LNS程式,LNS 接著通知LGWR 傳輸完成。LGWR 接著向使用者傳送提交確認資訊。

優點:保證了資料的安全;

缺點:影響主庫的效能;

 

非同步傳輸方式:(asynchronous transport,ASYNC)與SYNC 的不同之處在於,LGWR不必等待來自LNS 的確認訊息,無論主資料庫與備用資料庫相距多遠,都幾乎不會影響到主資料庫的效能。

image

原理圖如上:

 

非同步傳輸方式會根據場景的不同,調節讀取日誌的方式,所有的場景都在下面的原理圖中,請細看

9910228

場景一:LNS的讀取速度跟得上重做日誌產生的速度(系統比較空閒或者網路頻寬比較高),這種情況下非同步傳輸的鏈路跟同步傳輸的情景是一樣的。LNS程式從日誌緩衝池中讀取重做日誌,然後透過Oracle Net服務傳給備用資料庫。

 

場景二:當LNS趕不上SGA重做日誌的產生速度(可以聯想到一個水池,其注水速度比排水速度快)。在將重做資料傳給備用資料庫前就回收了日誌緩衝區,LNS 將自行轉為從ORL 讀取和傳送重做資料(從Data Guard 11g 開始提供此項功能)。當LNS 趕上進度後,將自行轉回到直接從日誌緩衝區中讀取/傳送。

 

場景三:(這種情況比較複雜,這邊也是摘錄了Data Guard的完全參考手冊整理而成)

在極少數情況下,(ORL產生的速率非常快,或者網路出現故障的情況下),LNS還在傳送第一個ORL檔案的時候,但是系統已經發生了多次日誌切換,LNS傳送的完當前的檔案,下個要傳送的檔案已經被歸檔。

這時候Data Guard在主資料庫上使用ARCH 程式連續ping備用資料庫來確定其狀態。當還原與備用資料庫的通訊後,ARCH ping 程式會查詢備用控制檔案(透過其RFS 程式),來確定備用資料庫從主資料庫收到的最後一個完整日誌檔案。Data Guard 確定需要哪些日誌檔案來重新同步備用資料庫,然後立即開始使用其他ARCH 程式傳輸相應檔案。

接下來執行日誌切換時,LNS 會試圖連線備用資料庫,成功後開始傳輸當前重做資料,而ARCH 程式在後臺處理間隔。一旦備用應用程式能趕上當前重做記錄的進度,應用程式就自行轉換,不再讀取歸檔重做日誌,改而讀取當前SRL(假定使用者已經配置了Data Guard“實時應用”)。

最後需要注意的一點是,從Data Guard 10g 開始,主資料庫的一個ARCH程式一直專門負責本地歸檔,從而確保在處理間隔期間,遠端歸檔操作不影響主資料庫回收;

為使備用資料庫趕上進度,主資料庫必須以遠超平時生成重做資料的速度傳輸資料。Data Guard 架構允許使用多個後臺ARCH 程式來快速處理間隔,與此同時,LNS 程式像通常一樣執行當前日誌流的SYNC 或者ASYNC 傳輸。

 

總結非同步傳輸方式:

1、LNS首先會讀取SGA中的重做日誌快取,這種情況下是最佳情況;

2、當LNS從第1個操作裡面讀取不到資料的情況下就去獲取當前聯機重做日誌的資料;

3、當LNS從第1、2個操作裡面均獲取不到資料的情況下就要去檢視備庫上面日誌的傳輸情況,檢視完成後主庫透過返回的資訊進行傳輸資料;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12679300/viewspace-1973194/,如需轉載,請註明出處,否則將追究法律責任。

相關文章