ogg在異構資料庫實時雙向同步中如何防止資料死迴圈同步
最近在ORACLE 到MYSQL的使用OGG進行資料遷移中遇到了資料在雙向同步資料死迴圈的問題,在正常對oracle的同步上,我們使用以下引數來防止抽取程式對複製程式提交的事務進行抽取:
TRANLOGOPTIONS EXCLUDEUSER OGG GETAPPLOPS IGNOREREPLICATES
實際上 tranlogoptions excludeuser OGG 的作用是在抽取日誌時排除掉OGG使用者, GETAPPLOPS 指抓取應用的事務, IGNOREREPLICATES是忽略掉複製程式的事務。
GETAPPLOPS | IGNOREAPPLOPS: Controls whether or not data operations (DML) produced by business applications except Replicat are included in the content that Extract writes to a specific trail or file. GETREPLICATES | IGNOREREPLICATES: Controls whether or not DML operations produced by Replicat are included in the content that Extract writes to a specific trail or file.
但到了MYSQL 端進行抽取發現抽取程式不支援tranlogoptions excludeuser引數,此時即使加了 IGNOREREPLICATES因識別不到複製程式而不生效。
導致mysql 往 oracle同步時仍會抽取掉一部分資料往oracle走,而在我的 ORACLE 到MYSQL的同步中我實際是的關係是
O ———>O————>M 之後M再分別往兩個O同步。
在《Administering Oracle GoldenGate for Windows and UNIX》手冊上 9.3 Preventing Data Looping中介紹了各種資料庫端如何識別複製程式的的引數,可以來防止抽取程式抽取複製程式的事務:
DB2 z/OS, DB2 LUW, DB2 for i, and Informix
TRANLOGOPTIONS EXCLUDEUSER user
Informix中需要特別使用
EXCLUDEUSERID
Database_uid
MySQL and NonStop SQL/MX
TRANLOGOPTIONS FILTERTABLE table_name
這個 table_name是指checkpointtable
Oracle
在複製程式設定標籤,例如
DBOPTIONS SETTAG 0935
然後在抽取程式排除標籤
TRANLOGOPTIONS EXCLUDETAG 0935
如果有多個標籤,抽取程式必須每個都加上
當然也可用使用排除使用者的
TRANLOGOPTIONS EXCLUDEUSER user
SQL Server
TRANLOGOPTIONS EXCLUDETRANS transaction_name
這個事務名不理解,如果未設定應該預設的事務名是 ggs_repl.。原文解釋:
This parameter statement is only required if the Replicat transaction name is set to something other than the default of ggs_repl .
Sybase
TRANLOGOPTIONS EXCLUDETRANS transaction name
or
TRANLOGOPTIONS EXCLUDEUSER user name
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-2656381/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫同步利器 otter 雙A同步配置資料庫
- unison+inotify實現web資料雙向同步Web
- OGG實現兩臺oracle資料庫的同步Oracle資料庫
- GoldenGate實現oracle和sqlserver雙向資料同步GoOracleSQLServer
- 資料同步:教你如何實時把資料從 MySQL 同步到 OceanBaseMySql
- 實戰資料結構(5)_雙向迴圈連結串列的基本操作資料結構
- 在winform中如何實現雙向資料繫結?ORM
- MySQL異構資料同步–tair為例MySqlAI
- 什麼是資料實時同步,為什麼資料實時同步很重要
- Mysql 資料庫主庫,備庫實時同步配置MySql資料庫
- 資料庫同步資料庫
- Mysql資料實時同步實踐MySql
- 如何在 PyQt 中實現非同步資料庫請求QT非同步資料庫
- Oracle GoldenGate系統之----雙向同步資料表OracleGo
- 利用python實現mysql資料庫向sqlserver的同步PythonMySql資料庫Server
- 資料庫同步方案資料庫
- kettle 實時同步資料(插入/更新/刪除資料)
- MySQL 拼接Insert批量同步異構表資料MySql
- 【資料結構】雙迴圈連結串列(c++)資料結構C++
- 在兩個資料庫之間進行資料同步資料庫
- Linux 實現本、異地遠端資料實時同步功能Linux
- Mysql資料庫單向同步(一主兩從)MySql資料庫
- sqlldr 載入資料 OGG 是否會同步SQL
- 資料結構初階--雙向迴圈連結串列(講解+類别範本實現)資料結構
- 認識資料實時同步神器—Canal
- 迴圈中的非同步&&迴圈中的閉包非同步
- 使用 RMAN 同步資料庫資料庫
- 資料庫同步問題資料庫
- 用impdp同步資料庫資料庫
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- SQL Server 2014如何使用遊標迴圈向遠端資料庫插入資料SQLServer資料庫
- 臨時表在Oracle資料庫與SQL Server資料庫中的異同Oracle資料庫SQLServer
- 教你如何運用python實現不同資料庫間資料同步功能Python資料庫
- 技術乾貨|如何利用 ChunJun 實現資料實時同步?
- Kafka 叢集如何實現資料同步?Kafka
- 如何將本地資料同步到 shopify 或 shopify 資料同步到本地
- DBSync如何連線並同步MySQL資料庫MySql資料庫
- AJAX資料互動中的同步非同步非同步