使用GoldenGate初始化的兩種方式

2021-09-07 16:45:19 字數 2820 閱讀 6195

在使用ogg開始增量資料的實時複製之前,一般需要對當前的存量資料進行初始化,如果是同構資料庫,則可以使用資料庫自帶的工具完成,比如oracle db中的rman, expdp/impdp等。

其實ogg自己也可以實現初始化,而且支援異構平台的初始化,即使用ogg同步不同db之間的存量資料。主要有兩種配置方式,一種是抽取存量資料為ogg的佇列檔案,然後在目標節點上再讀取此佇列檔案後載入到目標庫上;一種是抽取程序讀取存量資料後直接呼叫目標端的replicat程序,資料不落地,直接寫入目標db。另外,從抽取效能方面,ogg可以基於欄位的取值,配置多個抽取程序,從而實現並行抽取以提公升初始化的效能,一般以id主鍵欄位或列舉值為拆分原則。

以下分別介紹初始化的兩種配置方式。

第一種,存量資料需要落地

此方法與傳統的抽取增量資料的方法類似,只是引數上配置略有不同。

以下示例假設的mysql的user.tb1表有100w條記錄,配置兩個抽取程序,分別以主鍵id欄位進行劃分,資料在本地不落地,直接傳輸到目標oracle主機上。

ggsci>add extract exta, sourceistable

ggsci>add extract extb, sourceistable

分別啟動兩個程序,此時在目標端將會生成兩個佇列:ea, eb

ggsci>start exta

ggsci>start extb

在目標端的ogg上配置

replicat repa

userid gguser, password oracle1

discardfile ./dirrpt/lmysql.dsc, purge

reportcount every 60 seconds, rate

map user1.tb1, target scott.tb1;replicat repb

userid gguser, password oracle1

discardfile ./dirrpt/lmysql.dsc, purge

reportcount every 60 seconds, rate

map user1.tb1, target scott.tb1;

ggsci>add replicat repa, exttrail ./dirdat/ea

ggsci>add replicat repb, exttrail ./dirdat/eb

ggsci>start repa

ggsci>start repb

如果源表資料量很大,也可以針對每個源端的抽取配置多個replicat程序,進一步實現並行投遞。

從以上可以看到,需要落地的存量資料初始化方式與傳統增量複製的配置基本一致,除了源端抽取程序新增略有不同之外。

第二種方法,資料不落地

仍然以前面的場景為準

extract exta

userid ggadmin, password oracle1

rmthost oelmysql, mgrport 7809

rmttask replicat, group rinita

reportcount every 60 seconds, rate

table user.tb1, filter (id < 500000);             extract extb

userid ggadmin, password oracle1

rmthost oelmysql, mgrport 7809

rmttask replicat, group rinitb

reportcount every 60 seconds, rate

table user.tb1, filter (id > 500000);

ggsci>add extract exta, sourceistable

ggsci>add extract extb, sourceistable

現在還不能啟動抽取程序

在目標端的ogg上配置

replicat rinita

userid gguser, password oracle1

discardfile ./dirrpt/lmysql.dsc, purge

reportcount every 60 seconds, rate

map user1.tb1, target scott.tb1;

replicat rinitb

userid gguser, password oracle1

discardfile ./dirrpt/lmysql.dsc, purge

reportcount every 60 seconds, rate

map user1.tb1, target scott.tb1;               

ggsci>add replicat repa, specialrun

ggsci>add replicat repb, specialrun

此時,啟動源端的抽取程序

ggsci>start ext*

然後在源端檢視程序狀態

ggsci>info ext*

再到目標端目標端檢視程序狀態

ggsci>info rinit*

會發現目標端程序已經被抽取程序自動拉起,不需要人工啟動。

如果源表的資料量很小,有可能在檢視目標端程序時,資料已經初始化完成。

goldengate個別表的重新初始化十大步驟

表的重新再同步 無需生產端時間視窗 如果是某些表由於各種原因造成兩邊資料不一致,需要重新進行同步,但實際業務始終24小時可用,不能提供時間視窗,則可以參照以下步驟。因較為複雜,使用需謹慎!列出需要重新初始化的表和當時exclude的原因 檢查下面兩個地方 生產端抽取程序exclude表 容災端複製程...

初始化 指定初始化

id alloc 物件的誕生過程,主要是從作業系統獲得一塊足夠大的記憶體,以存放該類的全部例項變數,並將其指定為存放記憶體物件的實力變數的位置。alloc方法同時將這塊記憶體全部設定為0。結果是 bool變數初始化為no,所有的int型別變數為0,float變數為0.0,所有的指標為nil.obje...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...