Oracle GoldenGate 之--异构平台同步(Mysql到Oracle)
Oracle GoldenGate 異構平臺同步(Mysql到Oracle)
如圖所示:源端采用Mysql庫,目標端采用Oracle庫
一、OGG安裝配置(源端)
1、OGG下載
https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=14841438
https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=14841440
[oracle@ogg ogg_ms]$ uname -a
Linux ogg 2.6.32-71.el6.i686 #1 SMP Wed Sep 1 01:26:34 EDT 2010 i686 i686 i386 GNU/Linux
[oracle@ogg?~]$?cd?/u01/ogg_ms/ [oracle@ogg?ogg_ms]$?ls ggs_Linux_x86_MySQL_32bit.tar [oracle@ogg?ogg_ms]$?tar?xvf?ggs_Linux_x86_MySQL_32bit.tar[oracle@ogg?ogg_ms]$?./ggsci Oracle?GoldenGate?Command?Interpreter?for?MySQL Version?11.2.1.0.1?OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230 Linux,?x86,?32bit?(optimized),?MySQL?Enterprise?on?Apr?23?2012?04:29:30 Copyright?(C)?1995,?2012,?Oracle?and/or?its?affiliates.?All?rights?reserved. GGSCI?(ogg)?1>?create?subdirs Creating?subdirectories?under?current?directory?/u01/ogg_ms Parameter?files????????????????/u01/ogg_ms/dirprm:?already?exists Report?files???????????????????/u01/ogg_ms/dirrpt:?created Checkpoint?files???????????????/u01/ogg_ms/dirchk:?created Process?status?files???????????/u01/ogg_ms/dirpcs:?created SQL?script?files???????????????/u01/ogg_ms/dirsql:?created Database?definitions?files?????/u01/ogg_ms/dirdef:?created Extract?data?files?????????????/u01/ogg_ms/dirdat:?created Temporary?files????????????????/u01/ogg_ms/dirtmp:?created Stdout?files???????????????????/u01/ogg_ms/dirout:?created
二、數據庫配置
源端:mysql庫配置
數據庫配置文件: [root@ogg?~]#?cat?/etc/my.cnf #?Replication?Master?Server?(default) #?binary?logging?is?required?for?replication log-bin=mysql-bin#?binary?logging?format?-?mixed?recommended #binlog_format=mixedbinlog_format=row啟動數據庫服務 [root@ogg?~]#?service?mysql?start Starting?MySQL??連接數據庫???????????????????????????????????????????[??OK??] [root@ogg?~]#?mysql?-h?localhost?-u?mysql?-p Enter?password: Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?\g. Your?MySQL?connection?id?is?1 Server?version:?5.6.4-m7-log?Source?distribution Copyright?(c)?2000,?2010,?Oracle?and/or?its?affiliates.?All?rights?reserved. This?software?comes?with?ABSOLUTELY?NO?WARRANTY.?This?is?free?software, and?you?are?welcome?to?modify?and?redistribute?it?under?the?GPL?v2?license Type?'help;'?or?'\h'?for?help.?Type?'\c'?to?clear?the?current?input?statement. mysql>?show?databases; +--------------------+ |?Database???????????| +--------------------+ |?information_schema?| |?mysql??????????????| |?performance_schema?| |?test???????????????| +--------------------+ 4?rows?in?set?(0.00?sec) mysql>?use?test; Database?changed mysql>?show?tables; Empty?set?(0.00?sec)創建測試表(存儲引擎采用innodb) mysql>?create?table?test2?(id?int,name?char(10))?engine=innodb; Query?OK,?0?rows?affected?(0.02?sec) mysql>?show?tables; +----------------+ |?Tables_in_test?| +----------------+ |?test2??????????| +----------------+ 1?row?in?set?(0.00?sec) mysql>?select?*?from?test2; Empty?set?(0.00?sec)目標端:Oracle 庫配置:
[java]?view plaincopyprint?三、OGG同步配置
源端:Mysql庫配置
[oracle@ogg ogg_ms]$ ./ggsci
Oracle?GoldenGate?Command?Interpreter?for?MySQL Version?11.2.1.0.1?OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230 Linux,?x86,?32bit?(optimized),?MySQL?Enterprise?on?Apr?23?2012?04:29:30 Copyright?(C)?1995,?2012,?Oracle?and/or?its?affiliates.?All?rights?reserved. 用戶登錄(root): GGSCI?(ogg)?2>?dblogin?sourcedb?test@localhost:3306,userid?root,password?oracle Successfully?logged?into?database.配置mgr: GGSCI?(ogg)?3>?edit?param?mgr port?7809 dynamicportlist?7800-8000 autorestart?extract?*,waitminutes?2,resetminutes?5GGSCI?(ogg)?4>?start?mgr Manager?started. GGSCI?(ogg)?5>?info?mgr Manager?is?running?(IP?port?ogg.7809).GGSCI?(ogg)?6>?info?all Program?????Status??????Group???????Lag?at?Chkpt??Time?Since?Chkpt MANAGER?????RUNNING配置extract進程組: GGSCI?(ogg)?7>?edit?param?ext_1 extract?ext_1 setenv?(MYSQL_HOME=”/var/lib/mysql”) tranlogoptions?altlogdest?/var/lib/mysql/mysql-bin.index sourcedb?test@localhost:3306,userid?root,password?oracle exttrail?./dirdat/e2 dynamicresolution gettruncates table?test.test2;GGSCI?(ogg)?11>?add?extract?ext_1,tranlog,begin?now EXTRACT?added. GGSCI?(ogg)?12>?add?exttrail?./dirdat/e2,extract?ext_1 EXTTRAIL?added.配置pump進程組: GGSCI?(ogg)?13>?edit?params?pump_1 extract?pump_1 rmthost?192.168.8.249,mgrport?7809 rmttrail?/u01/ogg/dirdat/e2 passthru gettruncates table?test.test2;GGSCI?(ogg)?14>?add?extract?pump_1,exttrailsource?./dirdat/e2 EXTRACT?added.GGSCI?(ogg)?15>?add?rmttrail??/u01/ogg/dirdat/e2,extract?pump_1 RMTTRAIL?added.異構平臺配置defgen:GGSCI?(ogg)?16>?edit?params?defgen defsfile?/u01/ogg_ms/dirdef/defgen.prm sourcedb?test@localhost:3306,?userid?root,password?oracle table?test.test2;[oracle@ogg?ogg_ms]$?./defgen?paramfile?dirprm/defgen.prm ***********************************************************************Oracle?GoldenGate?Table?Definition?Generator?for?MySQLVersion?11.2.1.0.1?OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230Linux,?x86,?32bit?(optimized),?MySQL?Enterprise?on?Apr?23?2012?04:59:19 Copyright?(C)?1995,?2012,?Oracle?and/or?its?affiliates.?All?rights?reserved.Starting?at?2014-09-26?16:01:05 *********************************************************************** Operating?System?Version: Linux Version?#1?SMP?Wed?Sep?1?01:26:34?EDT?2010,?Release?2.6.32-71.el6.i686 Node:?ogg Machine:?i686soft?limit???hard?limit Address?Space?Size???:????unlimited????unlimited Heap?Size????????????:????unlimited????unlimited File?Size????????????:????unlimited????unlimited CPU?Time?????????????:????unlimited????unlimited Process?id:?2606 *********************************************************************** **????????????Running?with?the?following?parameters??????????????????** *********************************************************************** defsfile?/u01/ogg_ms/dirdef/defgen.prm sourcedb?test@localhost:3306,?userid?root,password?****** table?test.test2; Retrieving?definition?for?test.test2 Definitions?generated?for?1?table?in?/u01/ogg_ms/dirdef/defgen.prm傳送defgen文件到目標端: [oracle@ogg?ogg_ms]$?scp?dirdef/defgen.prm?rh6:/u01/ogg/dirdef GGSCI?(ogg)?5>?info?all Program?????Status??????Group???????Lag?at?Chkpt??Time?Since?Chkpt MANAGER?????RUNNING EXTRACT?????ABENDED?????EXT_1???????00:00:00??????00:21:03 EXTRACT?????RUNNING?????PUMP_1??????00:00:00??????00:00:06啟動extract和pump進程: GGSCI?(ogg)?6>?start?extract?ext_1 Sending?START?request?to?MANAGER?... EXTRACT?EXT_1?starting GGSCI?(ogg)?7>?info?all Program?????Status??????Group???????Lag?at?Chkpt??Time?Since?Chkpt MANAGER?????RUNNING EXTRACT?????ABENDED?????EXT_1???????00:00:00??????00:21:17 EXTRACT?????RUNNING?????PUMP_1??????00:00:00??????00:00:09 extract進程啟動異常(abended)!
查看日志:
GGSCI (ogg) 36> view ggsevt
2014-09-26 17:24:56 ?INFO ? ?OGG-01053 ?Oracle GoldenGate Capture for MySQL, ext_1.prm: ?Recovery completed for target file ./dirdat/e20
00026, at RBA 961.
2014-09-26 17:24:56 ?INFO ? ?OGG-01057 ?Oracle GoldenGate Capture for MySQL, ext_1.prm: ?Recovery completed for all targets.
2014-09-26 17:24:56 ?INFO ? ?OGG-00182 ?Oracle GoldenGate Capture for MySQL, ext_1.prm: ?VAM API running in single-threaded mode.
2014-09-26 17:24:56 ?INFO ? ?OGG-01515 ?Oracle GoldenGate Capture for MySQL, ext_1.prm: ?Positioning to begin time Sep 26, 2014 3:52:01
PM.
2014-09-26 17:24:56 ?ERROR ? OGG-00146 ?Oracle GoldenGate Capture for MySQL, ext_1.prm: ?VAM function VAMInitialize returned unexpected
result: error 600 - VAM Client Report <CAUSE OF FAILURE : ERROR NO 13 - Failed to access index file : Check File PATH/EXISTENCE/PERMISSI
ONS - /var/lib/mysql/mysql-bin.index
WHEN FAILED : While initializing binary log configuration
WHERE FAILED : MySQLBinLog Reader Module
CONTEXT OF FAILURE : No Information Available!>.
2014-09-26 17:24:56 ?ERROR ? OGG-01668 ?Oracle GoldenGate Capture for MySQL, ext_1.prm: ?PROCESS ABENDING.
附錄:解決方法(參考網絡文檔)
GoldenGate的官方文檔明確表示,GoldenGate需要將MySQL的日志格式(binlog_format)設置為ROW,其他兩種格式(MIXED or STATEMENT)是不支持。
########################################################################官方描述如下:
binlog_format: This parameter sets the format of the logs. It must be set to the value of ROW, which directs the database to log DML statements in binary format. Any other log format (MIXED or STATEMENT) causes Extract to abend.
########################################################################
但是MySQL在版本5.1.5之前是不支持ROW和MIXED格式(MySQL 5.1.5引入ROW,5.1.8引入MIXED)
#### ?官方描述如下:http://dev.mysql.com/doc/refman/5.1/en/binary-log-formats.html
Support for row-based logging was added in MySQL 5.1.5. Mixed logging is available beginning with MySQL 5.1.8. In MySQL 5.1.12,MIXED?become the default logging mode; in 5.1.29, the default was changed back to?STATEMENT?for compatibility with MySQL 5.0.
########################################################################
目前客戶的MySQL版本是5.0.6-beta版:
D:\MySQL Server 5.0\bin>mysql -u root -p
Enter password: *****
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 111 to server version: 5.0.6-beta-nt-log
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the buffer.
mysql> select version();
+-------------------+
| version()???????? |
+-------------------+
|?5.0.6-beta-nt-log|
+-------------------+
1 row in set (0.02 sec)
這個版本是不支持binlog_format=ROW,所以安裝好GolenGate后,啟動抽取進程時,進程abend
########################################################################下面是出錯信息:
2014-09-16 16:55:16? ERROR?? OGG-00146? VAM function VAMRead returned unexpected result: error 600 - VAM Client Report <CAUSE OF FAILURE : STATEMENT or MIXED level logging found so abending
WHEN FAILED : While reading log event from binary log
WHERE FAILED : MySQLBinLog Reader Module
CONTEXT OF FAILURE : No Information Available!>
因此如果想要采用GoldenGate來實現MySQL的數據實時同步,需要將MySQL版本升級到5.1.5以上.
四、目標端ogg配置
配置MGR GGSCI?(rh6.cuug.net)?4>?edit?params?mgr port?7809 dynamicportlist?7800-8000 autorestart?extract?*,waitminutes?2,resetminutes?5 ~ GGSCI?(rh6.cuug.net)?5>?start?mgr Manager?started. GGSCI?(rh6.cuug.net)?6>?info?mgr Manager?is?running?(IP?port?rh6.cuug.net.7809).配置replicat進程組: [oracle@rh6?ogg]$?./ggsci Oracle?GoldenGate?Command?Interpreter?for?Oracle Version?11.2.1.0.1?OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO Linux,?x86,?32bit?(optimized),?Oracle?11g?on?Apr?23?2012?08:09:25 Copyright?(C)?1995,?2012,?Oracle?and/or?its?affiliates.?All?rights?reserved. GGSCI?(rh6.cuug.net)?1> GGSCI?(rh6.cuug.net)?1>?edit?param?rep_1 replicat?rep_1 sourcedefs?/u01/ogg/dirdef/defgen.prm userid?ogg,password?ogg reperror?default,discard discardfile?/u01/ogg/dirrpt/rep_1.dsc,append,megabytes?50 dynamicresolution map?test.test2,?target?test.test2;GGSCI?(rh6.cuug.net)?1>??add?replicat?rep_1,exttrail?/u01/ogg/dirdat/e2 REPLICAT?added.啟動mgr和replicat進程: GGSCI?(rh6.cuug.net)?3>?start?mgr Manager?started. GGSCI?(rh6.cuug.net)?4>?info?all Program?????Status??????Group???????Lag?at?Chkpt??Time?Since?Chkpt MANAGER?????RUNNING REPLICAT????STOPPED?????REP_1???????00:00:00??????00:00:34 REPLICAT????ABENDED?????RORA_1??????00:00:00??????383:08:47GGSCI?(rh6.cuug.net)?5>?start?replicat?rep_1 Sending?START?request?to?MANAGER?... REPLICAT?REP_1?starting GGSCI?(rh6.cuug.net)?6>?info?all Program?????Status??????Group???????Lag?at?Chkpt??Time?Since?Chkpt MANAGER?????RUNNING REPLICAT????RUNNING?????REP_1???????00:00:00??????00:00:00?
? ?由于源端extract進程異常,數據不能同步,問題未解決,歡迎指導,待續...
問題解決:
更換mysql-5.5.12的版本,目前Golden Gate 版本不支持mysql-5.6
GGSCI (ogg) 1> edit param ext_1
配置/etc/my.cnf文件:
[java]?view plaincopyprint?并編輯extract進程組配置文件
GGSCI (ogg) 1> edit param ext_1
extract ext_1
setenv (MYSQL_HOME=”/var/lib/mysql”)
tranlogoptions altlogdest /var/lib/mysql/mysql-bin.index
sourcedb test@localhost:3306,userid root,password oracle
exttrail ./dirdat/e2
dynamicresolution
gettruncates
table test.test2;
啟動extract 進程
[java]?view plaincopyprint?仍然失敗,以下為ogg日志:
[root@ogg ogg_ms]# tail ggserr.log
[java]?view plaincopyprint?
重新刪除extract進程組,重新添加
[java]?view plaincopyprint?extract進程,啟動成功!
查看日志:
-bash-4.1$ tail? ggserr.log
[java]?view plaincopyprint?總結
以上是生活随笔為你收集整理的Oracle GoldenGate 之--异构平台同步(Mysql到Oracle)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NFS技术实现图片共享存储
- 下一篇: Nginx和lvs在负载均衡方面的对比