OGG_mysql 12c複製到OGG_oracle 11g部署方案
OGG_mysql 12c 複製到 OGG_oracle 11g 部署方案
1、 環境
源端資料庫: mysql 5.7.31
目標端資料庫: oracle 11.2.0.4
源端 ogg 介質: 122022_ggs_Linux_x64_MySQL_64bit
目標端 ogg 介質: Oracle-GoldenGate-11.2.1.0
注意:
( 1 )這裡源端使用 ogg 12.2.0.2 的版本,如果使用低版本,抽取程式啟動會報 600 錯誤
( 2 )目標端使用 11g 的版本,使用 ogg initial load 工具進行初始化,直接載入的方式不支援新增版本引數 ” FORMAT RELEASE 11.2 ” ,只能使用檔案載入方式進行初始化,效能相對較慢。因此,有條件的建議目標端也使用 12c 版本。
( 3 )雖然 mysql 端設定了表名大小寫不敏感的引數 lower_case_table_names=1 ,但是 ogg 對錶名大小寫依然敏感。
2 、源端配置
2.1 Mysql 引數許可權
與 ogg 相關的 Mysql 資料庫引數配置
binlog-format=ROW
log-bin=mysql-bin
需要同步的表要先授權
>GRANT INSERT, UPDATE, DELETE,select ON `psd`.`testb` TO 'ogg'@'%';
2.2 管理程式: mgr
> view param mgr PORT 1739 DYNAMICPORTLIST 1740-1838 AUTORESTART EXTRACT *,RETRIES 999,WAITMINUTES 3 STARTUPVALIDATIONDELAY 5 PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3 LAGREPORTHOURS 1 LAGINFOMINUTES 30 LAGCRITICALMINUTES 45
2.3 抽取程式: extpr
> view param EXTTS extract extts setenv(MYSQL_HOME="/usr/") sourcedb ogg@196.14.1.1:1306,userid ogg,password ogg tranlogoptions altlogdest /mysql/data/mdb-bin.index discardfile ./dirrpt/extts.dsc,append,megabytes 1024 exttrail ./dirdat/ts,format release 11.2 gettruncates dynamicresolution table psd_bpm.testb;
MYSQL_HOME 可以透過執行 show variables like '%basedir%' 來確定
tranlogoptions altlogdest 配置的是 log-bin 的 index 檔案,可以透過檢視 my.cnf 配置檔案確定,也可以執行 show variables like '%datadir%' 來確定
因為目標端 ogg 為 11g 版本,需要在 exttail 引數配置 format release 11.2
2.4 傳輸程式 :dpepr
> view param DPETS extract dpets sourcedb ogg@196.14.1.1:1306,userid ogg,password ogg rmthost 196.14.1.2,mgrport 1839 rmttrail ./dirdat/ts,format release 11.2 gettruncates table psd_bpm.testb;
因為目標端 ogg 為 11g 版本,需要在 rmttrail 引數配置 format release 11.2
2.5 源端初始化引數檔案 :etsinit
> view param etsinit SOURCEISTABLE setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8) sourcedb ogg@196.14.1.1:1306,userid ogg,password ogg rmthost 196.14.1.2,mgrport 1839 RMTFILE /ogg/dirdat/tsinit,FORMAT RELEASE 11.2, MEGABYTES 1024,PURGE table psd_bpm.testb;
SOURCEISTALBE 參數列示初始化載入程式直接從源表抽取資料。
RMTFILE 引數配置初始化程式抽取的資料檔案存放目標位置,為目標端的位置。目標端版本為 11g ,這裡也要配置 FORMAT RELEASE 11.2 的選項。
2.6 生成 def 檔案
在 ogg 主目錄新建一個 rtsdef.prm 檔案
>vi rtsdef.prm defsfile ./dirdef/rtsdef.def,purge sourcedb ogg@196.14.1.1:13306,userid ogg,password ogg table psd.testb;
生成 def 檔案
>./defgen paramfile rtsdef.prm
找到生成的 rtsdef.def 檔案中的內容:
Database type: MYSQL Character set ID: UTF-8 National character set ID: UTF-16 Locale: en_US Case sensitivity: 00 00 00 22 22 00 00 00 00 00 00 00 11 00 00 00 TimeZone: CST
這裡的 Case sensitivity 表示資料庫的表名大小寫是否敏感, mysql 資料庫引數檔案配置了 lower_case_table_names=1 ,表示大小寫不敏感,這裡對應的值就是表名大小寫不敏感。但是我們發現 ogg 11g 入庫程式對大小寫敏感, mysql 端生成的 def 檔案中的表名都是小寫,所以我們需要把這個值修改為大小寫敏感,其值可以參考 oracle 生產的 def 檔案。具體配置:
Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14
這裡如果不做修改,入庫程式引數檔案配置了 SOURCEDEFS 引數,啟動程式會報找不到表定義。這裡應該是 ogg 11g 的 bug , ogg 12c 已經修復了該問題,無需修改該值。
Ogg 11g 版本不支援 TimeZone: CST ,我們需要手動刪除該值。
3 、目標端配置
3.1 入庫程式 repts
> view param REPTS REPLICAT repts SETENV(ORACLE_SID = "ffdb") SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2/db_1") setenv (NLS_LANG=AMERICAN_AMERICA.UTF8) USERID ogg, PASSWORD ogg REPORT AT 01:59 REPORTCOUNT EVERY 30 MINUTES, RATE REPERROR DEFAULT, ABEND SOURCEDEFS ./dirdef/repts.def DISCARDFILE ./dirrpt/repts.dsc, APPEND, MEGABYTES 1024 DISCARDROLLOVER AT 02:30 GETTRUNCATES ALLOWNOOPUPDATES HANDLECOLLISIONS map psd.testb,target bpm.testb,KEYCOLS(TID);
跨版本同步, ogg initial load 只能使用檔案載入方式,初始化不設定檢查點,因此入庫程式啟動前需要配置 HANDLECOLLISIONS 引數,忽略錯誤。
3.2 目標端初始化程式 repinit
> view param rtsinit SPECIALRUN END RUNTIME USERID ogg, PASSWORD GG_yxcb161 SOURCEDEFS ./dirdef/repts.def REPERROR DEFAULT,DISCARD EXTFILE /ogg/dirdat/tsinit map psd.testb,target bpm.testb,KEYCOLS(TID);
SPECIALRUN 表示將初始化程式實現為不使用檢查點的一次性執行
END RUNTIME 表示初始化程式在載入完成後終止
EXTFILE 配置源端傳過來的初始化資料檔案在本地的位置
4、 新增並啟動程式
4.1 新增程式
4.1.1 源端
> add extract extts,tranlog,begin now > add exttrail ./dirdat/ts,extract extts,MEGABYTES 512 > add extract dpets,exttrailsource ./dirdat/ts > add rmttrail ./dirdat/ts,extract dpets,MEGABYTES 512
4.1.2 目標端
>add replicat repts,exttrail ./dirdat/ts,nodbcheckpoint
4.2 啟動程式
4.2.1 源端
啟動抽取和傳輸程式
>start extract extpr
>start extract dpepr
啟動初始化載入工具
>./extract paramfile dirprm/etsinit.prm reportfile ./dirrpt/estinitrp.log
etsinit.prm就是上面配置的初始化引數檔案,estinitrp.log為初始化載入日誌檔案。
跟蹤日誌estinitrp.log輸出:
Report at 2022-03-17 09:38:57 (activity since 2022-03-17 09:38:52) Output to /ogg/oraogg/dirdat/tsinit: From Table psd_bpm.testb: # inserts: 11 # updates: 0 # deletes: 0 # discards: 0
看到上面的日誌,表示資料已經抽取完成,第一行為完成時間,要記住這個時間,入庫程式刪除HANDLECOLLISIONS引數就是以這個時間點作為標準,必須在這之後才能刪除。
4.2.2 目標端
啟動初始化載入工具
>./replicat paramfile dirprm/rtsinit.prm reportfile ./dirrpt/rstinitrp.log
載入完成後,啟動入庫程式
>start replicat repts
跟蹤觀察入庫程式,直到入庫到初始化抽取完成時間之後
>info replicat repts
刪除入庫程式中的HANDLECOLLISIONS引數,並重啟入庫程式
5 、問題解決
Q1 :啟動抽取程式報 error 600
2022-03-11 10:39:01 ERROR OGG-00146 VAM function VAMRead returned unexpected result: error 600 - VAM Client Report <CAUSE OF FAILURE : Sanity Check Failed for events WHEN FAILED : While reading log event from binary log WHERE FAILED : MySQLBinLog Reader Module CONTEXT OF FAILURE : No Information Available!>.
解決方法: 源端 mysql 使用 OGG-11.2.0.1 ,啟動抽取程式會報上面的錯誤,需要升級到 12.2.0.2 以上版本。
Q2 :入庫程式啟動報 ERROR OGG-00303
2022-03-16 17:10:21 ERROR OGG-00303 Problem at line 37. Expecting file, table, or record definition: TimeZone: CST. 2022-03-16 17:10:21 ERROR OGG-01668 PROCESS ABENDING.
解決方法: def 檔案使用 12c 的 defgen 生成, ogg 11g 不支援 TimeZone: CST 引數,需要手動刪除該行。
Q3 :入庫程式啟動報 ERROR OGG-00423
2022-03-14 15:59:01 ERROR OGG-00423 Oracle GoldenGate Delivery for Oracle, repbpm.prm: Could not find definition for psd_bpm.bpm_worklist_cur. 2022-03-14 15:59:01 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, repbpm.prm: PROCESS ABENDING.
解決方法: 修改 def 檔案中的 case sensitivity 值
Case sensitivity: 00 00 00 22 22 00 00 00 00 00 00 00 11 00 00 00
改為
Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14
上面的是 mysql 的,表示大小寫不敏感
下面複製 oracle 的值,表示大小寫敏感
Q4 :抽取程式無資料生成
抽取程式啟動後不報錯, trail 檔案大小不增長
解決方法: 表名大小寫問題,修改程式中的表名大小寫與資料庫字典中的一致
Q5 :傳輸程式資料不傳輸
傳輸程式啟動後不報錯,目標端 trail 檔案大小不增長
解決方法: 表名大小寫問題,修改程式中的表名大小寫與資料庫字典中的一致
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31374736/viewspace-2871615/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OGG 12c mysql複製到oracle部署方案MySqlOracle
- MySQL 8 複製(八)——組複製安裝部署MySql
- Oracle 11g升級到12COracle
- PostgreSQL 主從複製方案SQL
- Windows Mysql主從複製部署WindowsMySql
- MySQL主從複製環境部署MySql
- 12c複製 RAC ASM中的密碼檔案到檔案系統ASM密碼
- MYSQL主從複製製作配置方案MySql
- 二二複製公排系統丨二二複製公排系統開發詳細及方案丨二二複製公排開發原始碼部署原始碼
- 【PG流複製】Postgresql流複製部署過程及效能測試SQL
- Mysql MHA部署-02主從複製MySql
- Mysql分散式部署 - 多級複製MySql分散式
- mysql主從複製詳細部署MySql
- 複製git倉庫到ServerGitServer
- MySQL 主從複製安裝部署配置MySql
- MYSQL並行複製(parallel replication部署篇)MySql並行Parallel
- mysql5.5.9半同步複製功能部署MySql
- js一鍵複製到剪下板JS
- ORACLE複製舊錶到新表Oracle
- visio 物件複製到其他程式物件
- Linux下Redis主從複製以及SSDB主主複製環境部署記錄LinuxRedis
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- Oracle 11g GoldenGate單向複製配置(DML)OracleGo
- SQLServer複製到execl丟失資料SQLServer
- excel如何複製到word不變形Excel
- JavaScript複製內容到剪貼簿JavaScript
- 複製瀏覽器請求到Postman瀏覽器Postman
- Java引用複製、淺複製、深複製Java
- Redis 主從複製與哨兵優化部署解析Redis優化
- MySQL 同步複製及高可用方案總結MySql
- MySQL主從複製延遲解決方案MySql
- PDF複製亂碼 -- 原因及解決方案
- JS物件複製:深複製和淺複製JS物件
- poi操作excel,複製sheet,複製行,複製單元格,複製styleExcel
- 11g從活動資料庫複製資料庫資料庫
- Oracle goldengate 11g (二)【DML and DDL單向複製】OracleGo
- PostgreSQL邏輯複製資料同步到kafkaSQLKafka
- MongoDB mongoshake 遷移分片到複製集合MongoDB