ogg單向復制原理?
OGG技術原理
OGG架構
在一個典型的OGG環境中,會有兩個數據庫存在,同時也會有兩個GG實例運行,主要包括四個核心對象:源數據庫、目標數據庫、源GG、目標GG。
數據復制運行流程大概如下:
源數據庫在運行過程中,LGWR進程會源源不斷地把日志記錄到聯機日志中(online log)。源GG的工作起點或者整個GG數據庫流的起點也就是從源數據庫的聯機日志開始。
在源GG端:
1) Extract進程從聯機日志挖掘數據,記錄到本地的Source Trail文件中。
2) Data Pump進程從Source Trail文件把數據出來,然后通過網絡,丟給目標GG上的Collector進程。
在目標端:
Collector進程從接收數據到一個本地文件(Remote Trail)中。
2)另一個Replicate進程從這些文件中挖取數據,然后在目標數據庫上更新數據。
注:可以把源GG端步驟1,2合并成一個,直接把數據挖掘出來發送給目標端。
Capture(Local Extract)Process
捕獲進程就是源GG把源數據庫中變化(插入、更新、刪除)數據抓出來的過程。通常指Local Extract進程,抽取進度還包括Data Pump Extract ,Inital-Load Extact和Discard File。
Inital-Load:主要用于目標數據庫的初始化,這個過程類似Oracle EXP/IMP,數據泵。
Local Extract進程特點
可以直接把挖掘的數據發給目標GG或者緩存本地Source Trail
只會記錄已經提交的變化,而把其他的活動(如回滾)過濾掉。
可以捕獲DML,也可以捕獲DDL
支持多進程或者單進程處理全部表或多個表
支持Schema級別、表級別、列級別不同粒度的抓取
Source Trail
Source Trail作為一個中間文件,保存抓取進程捕獲的數據,以大塊方式進行存儲,等待下一個環節(Data Pump Extract)處理。Trail文件是一種GG特有的文件,具有自己的元數據。在每個文件或者每條記錄上,都一個“頭”記錄。為了跟蹤事物和保證數據一致性,采用CSN(Commit Sequece Number)這個概念,把CSN寫到檢查點文件(checpoint)和Trail文件中。