/*
參數文件裏,TABLE參數中有cols和COLSEXCEPT 項
前者用來選擇要capture的字段,後者指定要排除的字段
可是官方文檔上有一句
Do not exclude key columns, and do not use COLSEXCEPT to exclude columns that contain unsupported data types.
*/
scott.bonus表無主鍵無惟一索引,如果在gg源端發出,會致使gg目的端abend,除非目的端複製進程參數文件有APPLYNOOPUPDATES 或者ALLOWNOOPUPDATES 參數)mysql
--當目標端爲oracle時 用rowid解決增量同步
--1.
--源端
--add trandata hr.ah9 cols(id) nokey
--目標端
alter table hr.ah9 add (row_id rowid);
alter table hr.ah9 add constraint ah9_pk unique (row_id) enable;
map hr.ah9, target hr.ah9 colmap (usedefaults, row_id = @token ("TKN-ROWID")) keycols (row_id);sql
--2.編輯ext1,排除不須要同步的列 或用COLS捕獲須要同步的列
table ggs.test_pri, COLSEXCEPT (NAME2,NAME3);數據庫
1、環境描述:
源端:
ip:192.168.92.31
os:redhat5.4
Oracle: 11.2.0.1.0
goldgate:12.1.2.1.0 for oracle
字符集:gbk
目標端:
os:redhat5.4
Mysql:5.7.18
goldgate:12.1.2.1.0 for mysql
ip:192.168.92.61
字符集:utf8
2、Oracle to Mysql 須要注意的地方:
Supported data types for mysql:
CHARDOUBLETINYTEXTVARCHARDATEMEDIUMTEXTINTTIMELONGTEXTTINYINTYEARBLOBSMALL INTDATETIMETINYBLOBMEDIUM INTTIMESTAMPMEDIUMBLOBBIG INTBINARYLONGBLOBDECIMALVARBINARYENUMFLOATTEXTBIT(M)
Oracle GoldenGate supports InnoDB storage engine for a source MySQL database
goldengate對mysql只支持innodb引擎
因此,在建立mysql端的表的時候,要指定表爲innodb引擎。
create table mysql (name char(10)) engine=innodb;
固然5.5默認的存儲引擎就是InnoDB。
3、Oracle端的基礎配置
1.安裝oracle11g略過
2.初始化ogg
將ogg壓縮包(V34339-01.zip)解壓到 /home/oracle/app/oracle/ogg 下
cd /home/oracle/app/oracle/ogg
./ggsciwindows
--已存在 不須要執行
create subdirs
Creating subdirectories under current directory /home/oracle/app/oracle/ogg
Parameter files /home/oracle/app/oracle/ogg/dirprm: already exists
Report files /home/oracle/app/oracle/ogg/dirrpt: created
Checkpoint files /home/oracle/app/oracle/ogg/dirchk: created
Process status files /home/oracle/app/oracle/ogg/dirpcs: created
SQL script files /home/oracle/app/oracle/ogg/dirsql: created
Database definitions files /home/oracle/app/oracle/ogg/dirdef: created
Extract data files /home/oracle/app/oracle/ogg/dirdat: created
Temporary files /home/oracle/app/oracle/ogg/dirtmp: created
Stdout files /home/oracle/app/oracle/ogg/dirout: created
3.修改oracle數據庫的參數
3.1 修改數據庫爲歸檔模式
3.2 打開輔助日誌
alter database add supplemental log data;
3.3 關閉回收站
alter system set recyclebin=off deferred;服務器
--Oracle11.2.0.4版本須要更改 ENABLE_GOLDENGATE_REPLICATION
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;數據結構
3.4 建立複製用的用戶,並受權
--建立相應表空間
create tablespace oggtbs datafile '/home/oracle/app/oracle/oradata/ORCL/datafile/oggtbs01.dbf' size 500M autoextend on;多線程
--受權
create user ggs identified by ggs default tablespace oggtbs;
GRANT create table to ggs;
GRANT CONNECT TO ggs;
GRANT ALTER ANY TABLE TO ggs;
GRANT ALTER SESSION TO ggs;
GRANT CREATE SESSION TO ggs;
GRANT FLASHBACK ANY TABLE TO ggs;
GRANT SELECT ANY DICTIONARY TO ggs;
GRANT SELECT ANY TABLE TO ggs;
GRANT RESOURCE TO ggs;
GRANT DELETE ANY TABLE TO ggs;
GRANT INSERT ANY TABLE TO ggs;
GRANT UPDATE ANY TABLE TO ggs;
GRANT RESTRICTED SESSION TO ggs;
3.5 登錄到ogg,執行初始化
在源庫上執行:
GGSCI (ora11g) 2> edit params ./globals
在統計模式下輸入並保存:ggschema ggsoracle
在SQLPLUS 下去運行:
quit
sqlplus / as sysdba
@sequence.sql 根據提示輸入:ggsapp
--#必須,針對ddl複製
alter system set recyclebin=off deferred scope=both;
--ogg安裝目錄執行配置腳本 prompt輸入 ggs
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql dom
grant GGS_GGSUSER_ROLE to ggs;
@ddl_enable.sql
--10g須要安裝dbms_share_pool包:
@?/rdbms/admin/dbmspool.sql ho
@ddl_pin ggs;
4、Mysql端的基礎配置
1.安裝mysql5.7略過
2.給root配置密碼:
mysql> use mysql
mysql> UPDATE user SET authentication_string =PASSWORD('123456') where USER='root' and host='root' or host='localhost';
mysql> show grants for root;
mysql> FLUSH PRIVILEGES;
mysql> exit
3.由於複製須要二進制日誌,因此啓動mysql的時候須要啓用二進制日誌
mysqld_safe --user=mysql --log-bin=/tmp/binlog.001 --log-bin-index=/tmp/binlog.index --max-binlog-size=10M --binlog-do-db=mysql &
--解壓安裝ogg by zhuyj
unzip V47367-01_GoldenGate\ V12.1.2.1.0\ for\ MySQL\ on\ Linux\ x86-64.zip
mkdir /usr/local/ogg
tar -xvf ggs_Linux_x64_MySQL_64bit.tar /usr/local/ogg
4.建立ogg的初始化目錄
[mysql@nosql2 11.2]$ ./ggsci
Oracle GoldenGate Command Interpreter for MySQL
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
Linux, x64, 64bit (optimized), MySQL Enterprise on Apr 23 2012 04:34:25
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
GGSCI (nosql2) 1> create subdirs
Creating subdirectories under current directory /usr/local
Parameter files /usr/local/dirprm: already exists
Report files /usr/local/dirrpt: created
Checkpoint files /usr/local/dirchk: created
Process status files /usr/local/dirpcs: created
SQL script files /usr/local/dirsql: created
Database definitions files /usr/local/dirdef: created
Extract data files /usr/local/dirdat: created
Temporary files /usr/local/dirtmp: created
Stdout files /usr/local/dirout: created
源端配置大體分爲以下三個步驟:配置mgr,配置抽取進程,配置投遞進程
在源端先建立一張表,記得帶主鍵:
create table ah4(id int ,name varchar(10),primary key(id));
1.登錄ogg,配置全局設置
./ggsci
dblogin userid ggs password ggs
--查看遠端全局變量
view params ./globals
ggschema ggs
2.配置mgr
GGSCI (ora11g) 3> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7909
--AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
PS:
MANAGER進程參數配置說明:
PORT:指定服務監聽端口;這裏以7809爲例,默認端口爲7809
DYNAMICPORTLIST:動態端口:能夠制定最大256個可用端口的動態列表,當指定的端口不可用時,管理進程將會從列表中選擇一個可用的端口,源端和目標段的Collector、Replicat、GGSCI進程通訊也會使用這些端口;
COMMENT:註釋行,也能夠用--來代替;
AUTOSTART:指定在管理進程啓動時自動啓動哪些進程;
AUTORESTART:自動重啓參數設置:本處設置表示每3分鐘嘗試從新啓動全部EXTRACT進程,共嘗試5次;
PURGEOLDEXTRACTS:按期清理trail文件設置:本處設置表示對於超過3天的trail文件進行刪除。
LAGREPORT、LAGINFO、LAGCRITICAL:
定義數據延遲的預警機制:本處設置表示MGR進程每隔1小時檢查EXTRACT的延遲狀況,若是超過了30分鐘就把延遲做爲信息記錄到錯誤日誌中,若是延遲超過了45分鐘,則把它做爲警告寫到錯誤日誌中。
3.啓動mgr,並查看狀態
start mgr
info all
4.添加並查看須要複製的表:
add trandata hr.ah4
add trandata hr.ah5
info trandata hr.*
Logging of supplemental redo log data is enabled for table HR.AH1.
Columns supplementally logged for table HR.AH1: ID.
Logging of supplemental redo log data is enabled for table HR.AH2.
Columns supplementally logged for table HR.AH2: ID.
Logging of supplemental redo log data is enabled for table HR.AH3.
Columns supplementally logged for table HR.AH3: ID.
Logging of supplemental redo log data is enabled for table HR.AH4.
Columns supplementally logged for table HR.AH4: ID.
Logging of supplemental redo log data is disabled for table HR.COUNTRIES.
Logging of supplemental redo log data is disabled for table HR.DEPARTMENTS.
Logging of supplemental redo log data is disabled for table HR.EMPLOYEES.
Logging of supplemental redo log data is disabled for table HR.JOBS.
Logging of supplemental redo log data is disabled for table HR.JOB_HISTORY.
Logging of supplemental redo log data is disabled for table HR.LOCATIONS.
Logging of supplemental redo log data is disabled for table HR.REGIONS.
Logging of supplemental redo log data is disabled for table HR.SURE1.
5.配置抽取進程
edit params ext3
extract ext3
dynamicresolution
userid ggs,password ggs
exttrail /home/oracle/app/oracle/ogg/dirdat/xs
table hr.ah4;
table hr.ah5;
add extract ext3,tranlog,begin now
add exttrail /home/oracle/app/oracle/ogg/dirdat/xs,extract ext3
--跟蹤文件配置關鍵字長度<=2
--添加多線程
edit params ext4
extract ext4
dynamicresolution
userid ggs,password ggs
exttrail /home/oracle/app/oracle/ogg/dirdat/xs4
table hr.ah4;
table hr.ah5;
add extract ext4,tranlog,begin now
add exttrail /home/oracle/app/oracle/ogg/dirdat/x4,extract ext4
edit params ext5
extract ext5
dynamicresolution
userid ggs,password ggs
exttrail /home/oracle/app/oracle/ogg/dirdat/xs4
table hr.ah4;
table hr.ah5;
add extract ext5,tranlog,begin now
add exttrail /home/oracle/app/oracle/ogg/dirdat/x5,extract ext5
PS:
ext的模板能夠是:
EXTRACT extmb
setenv (NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV (ORACLE_HOME = "/u01/oracle/product/11.2.0/db_1")
SETENV (ORACLE_SID = "orcl")
USERID ggs, PASSWORD ggs
--GETTRUNCATES
REPORTCOUNT EVERY 1 MINUTES, RATE
DISCARDFILE ./dirrpt/extmb.dsc,APPEND,MEGABYTES 1024
--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS 60000
DBOPTIONS ALLOWUNUSEDCOLUMN
WARNLONGTRANS 2h,CHECKINTERVAL 3m
EXTTRAIL ./dirdat/mb
--TRANLOGOPTIONS EXCLUDEUSER USERNAME
FETCHOPTIONS NOUSESNAPSHOT
TRANLOGOPTIONS CONVERTUCS2CLOBS
TABLE hr.emp;
SETENV:配置系統環境變量
USERID/ PASSWORD: 指定OGG鏈接數據庫的用戶名和密碼,這裏使用3.4部分中建立的數據庫用戶OGG;
COMMENT:註釋行,也能夠用--來代替;
TABLE:定義需複製的表,後面需以;結尾
TABLEEXCLUDE:定義須要排除的表,若是在TABLE參數中使用了通配符,可使用該參數指定排除掉得表。
GETUPDATEAFTERS|IGNOREUPDATEAFTERS:
是否在隊列中寫入後影像,缺省複製
GETUPDATEBEFORES| IGNOREUPDATEBEFORES:
是否在隊列中寫入前影像,缺省不復制
GETUPDATES|IGNOREUPDATES:
是否複製UPDATE操做,缺省複製
GETDELETES|IGNOREDELETES:
是否複製DELETE操做,缺省複製
GETINSERTS|IGNOREINSERTS:
是否複製INSERT操做,缺省複製
GETTRUNCATES|IGNORETRUNDATES:
是否複製TRUNCATE操做,缺省不復制;
6.配置投遞進程
edit params push3
extract push3
passthru
dynamicresolution
userid ggs,password ggs
rmthost 192.168.92.61,mgrport 7809
rmttrail /usr/local/dirdat/xs
table hr.ah4;
table hr.ah5;
GGSCI (ora11g) 18> add extract push3,exttrailsource /home/oracle/app/oracle/ogg/dirdat/xs
GGSCI (ora11g) 19> add rmttrail /usr/local/dirdat/xs,extract push3
--配置多線程
edit params push4
extract push4
passthru
dynamicresolution
userid ggs,password ggs
rmthost 192.168.92.61,mgrport 7809
rmttrail /usr/local/dirdat/xs4
table hr.ah4;
table hr.ah5;
add extract push4,exttrailsource /home/oracle/app/oracle/ogg/dirdat/x4
add rmttrail /usr/local/dirdat/x4,extract push4
GGSCI (orcl) 17> add rmttrail /usr/local/dirdat/x4,extract push4
PS:
push的模板:
EXTRACT pushmb
SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
USERID ggs, PASSWORD ggs
PASSTHRU
RMTHOST 192.168.0.165, MGRPORT 7809, compress
RMTTRAIL /home/oracle/app/oracle/ogg/dirdat/xs
TABLE hr.ah4;
RMTHOST:指定目標系統及其Goldengate Manager進程的端口號,還用於定義是否使用壓縮進行傳輸,本例中的compress爲壓縮傳輸;
RMTTRAIL:指定寫入到目標斷的哪一個隊列;
EXTTRAIL:指定寫入到本地的哪一個隊列;
SQLEXEC:在extract進程運行時首先運行一個SQL語句;
PASSTHRU:禁止extract進程與數據庫交互,適用於Data Pump傳輸進程;
REPORT:定義自動定時報告;
STATOPTIONS:定義每次使用stat時統計數字是否須要重置;
REPORTCOUNT:報告已經處理的記錄條數統計數字;
TLTRACE:打開對於數據庫日誌的跟蹤日誌;
DISCARDFILE:定義discardfile文件位置,若是處理中油記錄出錯會寫入到此文件中;
DBOPTIONS:指定對於某種特定數據庫所須要的特殊參數;
TRANLOGOPTIONS:指定在解析數據庫日誌時所須要的特殊參數,例如:對於裸設備,可能須要加入如下參數 rawdeviceoggset 0
WARNLONGTRANS:指定對於超過必定時間的長交易能夠在gsserr.log裏面寫入警告信息,本處配置爲每隔3分鐘檢查一次場交易,對於超過2小時的進行警告;
7.配置define文件
由於是異構,因此define做爲2個數據庫之間表的關係映射,是必不可少的。
--刪除defsfile參數文件
--rm -rf /home/oracle/app/oracle/ogg/dirdef/ah4.prm
GGSCI (ora11g) 21> edit params ah4
defsfile /home/oracle/app/oracle/ogg/dirdef/ah4.prm
userid ggs,password ggs
table hr.*;
去相應的目錄下生產define文件:應先對每張表建立trandata,在生成異構的表定義映射
[oracle@ora11g 11.2]$ ./defgen paramfile dirprm/ah4.prm
***********************************************************************
Oracle GoldenGate Table Definition Generator for Oracle
Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258
Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 16:58:29
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
Starting at 2014-04-02 15:47:20
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Fri Jan 27 17:17:51 EST 2012, Release 2.6.18-308.el5
Node: ora11g
Machine: x86_64
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 31345
***********************************************************************
** Running with the following parameters **
***********************************************************************
defsfile /home/oracle/app/oracle/ogg/dirdef/ah4.prm
userid ggs,password ***
table hr.ah4;
Retrieving definition for HR.AH4
Definitions generated for 1 table in /home/oracle/app/oracle/ogg/dirdef/ah4.prm
--並將生成的/home/oracle/app/oracle/ogg/dirdef/ah4.prm 傳到目的端的相應目錄中去
scp /home/oracle/app/oracle/ogg/dirdef/* root@192.168.92.61:/usr/local/dirdef
目的端配置大體分爲以下三個步驟:配置mgr,配置checkpoint table,配置應用進程
在目的端先建立一張表,記得帶主鍵:
mysql> create database hr;
mysql> use hr
mysql> create table ah4(id int ,name varchar(10),primary key(id));
mysql> show tables;
1.配置mgr
cd /usr/local
./ggsci
GGSCI (nosql2) 2> edit params mgr
PORT 7809
DYNAMICPORTLIST 7810-7909
--AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
GGSCI (nosql2) 3> start mgr
GGSCI (nosql2) 4> info all
2.配置checkpoint table
GGSCI (nosql2) 7> edit params ./GLOBALS
CHECKPOINTTABLE hr.checkpoint
添加:
--mysql登錄ogg 登錄報錯解決:WARNING OGG-00769
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
dblogin sourcedb hr userid root,password mysql
GGSCI (nosql2) 8> add checkpointtable hr.checkpointtab
--刪除檢查點 而後輸入 y 能夠刪除檢查點 新增表的同步時不須要增長此步
--delete checkpointtable hr.checkpointtab
add checkpointtable hr.checkpointtab
info checkpointtable hr.checkpointtab
在相應的mysql數據庫中,也能夠看到相應的表被添加了:
mysql> show tables;
3.配置應用進程:
--若同步的表發生變化,則此進程須要從新配置,而後目標段表會從新初始化數據 對應的報錯爲:
2017-04-21 15:19:03 ERROR OGG-00446
2017-04-21 15:19:03 ERROR OGG-01668 PROCESS ABENDING.
--SOURCEDB 已改成TARGETDB 解決無主鍵表同步:APPLYNOOPUPDATES或ALLOWNOOPUPDATES 同步成功後此參數能夠刪除******
GGSCI (nosql2) 10> edit params rep3
replicat rep3
sourcedefs /usr/local/dirdef/ah4.prm
SOURCEDB hr,userid root,password mysql
reperror default,discard
discardfile /usr/local/dirrpt/rep4.dsc,append,megabytes 50
map hr.ah4, target hr.ah4;
map hr.ah5,target hr.ah5;
add replicat rep3,exttrail /usr/local/dirdat/xs,checkpointtable hr.checkpointtab
--增長多線程
add replicat rep4,exttrail /usr/local/dirdat/xs,checkpointtable hr.checkpointtab
PS:
REPLICAT進程參數配置說明:
ASSUMETARGETDEFS:假定兩端數據結構一導致用此參數;
SOURCEDEFS:假定兩端數據結構不一致,使用此參數指定源端的數據結構定義文件,該文件須要由GlodenGate工具產生。
MAP:用於指定源端與目標端表的映射關係;
MAPEXCLUDE:用於使用在MAP中使用*匹配時排除掉指定的表;
REPERROR:定義出錯之後進程的響應,通常能夠定義爲兩種:
ABEND,即一旦出現錯誤即中止複製,此爲缺省配置;
DISCARD,出現錯誤後繼續複製,只是把錯誤的數據放到discard文件中。
DISCARDFILE:定義discardfile文件位置,若是處理中油記錄出錯會寫入到此文件中;
SQLEXEC:在進程運行時首先運行一個SQL語句;
GROUPTRANSOPS:將小交易合併成一個大的交易進行提交,減小提交次數,下降系統IO消耗。
MAXTRANSOPS:將大交易拆分,每XX條記錄提交一次。
--view report rep3查詢進程報錯:OGG-00303 Could not open /usr/local/dirdef/ah4.prm: No such file or directory.
解決:
--複製生成的def文件到目標端
scp ah4.prm root@192.168.92.61:/usr/local/dirdef
緣由:
two ways to solve the issue:
Use a defgen paramfile with NOEXTATTR option
or
generate definition file with the same OGG version as the OGG target site version.
In OGG 11.2, there is a new parameter NOEXTATTR. This is used in DEFGEN.
When the OGG version in a target site is lower than the source site, defgen needs to use parameter NOEXTATTR to generate a sourcedef file which target site can read . If using a sourcedef file generated without NOEXTATTR, a replicat will abend with error 00303.
--查看錯誤日誌
tail -100f /usr/local/ggserr.log
4.測試
在目的端啓動rep3進程,在源端啓動ext3和push3進程。
在源端的ah4表中插入一條數據,看是否在目的端的ah4表中能看到。
源端進程:
GGSCI (ora11g) 30> info all 多線程 ext1 ext2 ext3
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:00:03
EXTRACT RUNNING EXT2 00:00:00 00:00:07
EXTRACT RUNNING EXT3 00:44:09 00:00:06
EXTRACT RUNNING PUSH1 00:00:00 00:00:03
EXTRACT RUNNING PUSH2 00:00:00 00:00:03
EXTRACT RUNNING PUSH3 00:00:00 00:37:40
GGSCI (ora11g) 31>
源端插入數據:
insert into ah4 values(1,'aaaccc');
insert into ah4 values(2,'aaaccc');
insert into ah4 values(3,'aaaccc');
commit;
源端的ogg日誌:
2014-04-02 16:19:26 INFO OGG-00993 Oracle GoldenGate Capture for Oracle, ext3.prm: EXTRACT EXT3 started.
2014-04-02 16:19:26 INFO OGG-01052 Oracle GoldenGate Capture for Oracle, ext3.prm: No recovery is required for target file /home/oracle/app/oracle/ogg/dirdat/xs000000, at RBA 0 (file not opened).
2014-04-02 16:19:26 INFO OGG-01478 Oracle GoldenGate Capture for Oracle, ext3.prm: Output file /home/oracle/app/oracle/ogg/dirdat/xs is using format RELEASE 11.2.
2014-04-02 16:19:26 INFO OGG-01517 Oracle GoldenGate Capture for Oracle, ext3.prm: Position of first record processed Sequence 1122, RBA 14423056, SCN 0.20548956, Apr 2, 2014 3:35:22 PM.
2014-04-02 16:19:29 INFO OGG-00987 Oracle GoldenGate Command Interpreter for Oracle: GGSCI command (oracle): start push3.
2014-04-02 16:19:29 INFO OGG-00963 Oracle GoldenGate Manager for Oracle, mgr.prm: Command received from GGSCI on host ora11g:52177 (START EXTRACT PUSH3 ).
2014-04-02 16:19:29 INFO OGG-00975 Oracle GoldenGate Manager for Oracle, mgr.prm: EXTRACT PUSH3 starting.
2014-04-02 16:19:29 INFO OGG-00992 Oracle GoldenGate Capture for Oracle, push3.prm: EXTRACT PUSH3 starting.
2014-04-02 16:19:29 INFO OGG-03035 Oracle GoldenGate Capture for Oracle, push3.prm: Operating system character set identified as UTF-8. Locale: en_US, LC_ALL:.
2014-04-02 16:19:29 INFO OGG-01815 Oracle GoldenGate Capture for Oracle, push3.prm: Virtual Memory Facilities for: COM
anon alloc: mmap(MAP_ANON) anon free: munmap
file alloc: mmap(MAP_SHARED) file free: munmap
target directories:
/home/oracle/app/oracle/ogg/dirtmp.
2014-04-02 16:19:29 INFO OGG-00993 Oracle GoldenGate Capture for Oracle, push3.prm: EXTRACT PUSH3 started.
2014-04-02 16:19:34 INFO OGG-01226 Oracle GoldenGate Capture for Oracle, push3.prm: Socket buffer size set to 27985 (flush size 27985).
2014-04-02 16:19:34 INFO OGG-01052 Oracle GoldenGate Capture for Oracle, push3.prm: No recovery is required for target file /home/oracle/app/oracle/ogg/dirdat/xs000000, at RBA 0 (file not opened).
2014-04-02 16:19:34 INFO OGG-01478 Oracle GoldenGate Capture for Oracle, push3.prm: Output file /home/oracle/app/oracle/ogg/dirdat/xs is using format RELEASE 11.2.
目的端進程:
GGSCI (nosql2) 21> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP3 00:00:00 00:00:02
--目的端數據庫:
mysql> select * from ah4;
目的端的ogg日誌:
2014-04-02 16:21:55 INFO OGG-00975 Oracle GoldenGate Manager for MySQL, mgr.prm: REPLICAT REP3 starting.
2014-04-02 16:21:55 INFO OGG-00995 Oracle GoldenGate Delivery for MySQL, rep3.prm: REPLICAT REP3 starting.
2014-04-02 16:21:55 INFO OGG-03035 Oracle GoldenGate Delivery for MySQL, rep3.prm: Operating system character set identified as UTF-8. Locale: en_US, LC_ALL:.
2014-04-02 16:21:55 INFO OGG-01815 Oracle GoldenGate Delivery for MySQL, rep3.prm: Virtual Memory Facilities for: COM
anon alloc: mmap(MAP_ANON) anon free: munmap
file alloc: mmap(MAP_SHARED) file free: munmap
target directories:
/home/oracle/app/oracle/ogg/dirtmp.
2014-04-02 16:21:55 INFO OGG-00996 Oracle GoldenGate Delivery for MySQL, rep3.prm: REPLICAT REP3 started.
2014-04-02 16:22:17 INFO OGG-00963 Oracle GoldenGate Manager for MySQL, mgr.prm: Command received from EXTRACT on host ::ffff:192.168.0.164 (START SERVER CPU -1 PRI -1 TIMEOUT 300 PARAMS ).
2014-04-02 16:22:17 INFO OGG-01677 Oracle GoldenGate Collector for MySQL: Waiting for connection (started dynamically).
2014-04-02 16:22:17 INFO OGG-00963 Oracle GoldenGate Manager for MySQL, mgr.prm: Command received from SERVER on host localhost.localdomain (REPORT 30868 7810).
2014-04-02 16:22:17 INFO OGG-00974 Oracle GoldenGate Manager for MySQL, mgr.prm: Manager started collector process (Port 7810).
2014-04-02 16:22:17 INFO OGG-01228 Oracle GoldenGate Collector for MySQL: Timeout in 300 seconds.
2014-04-02 16:22:22 INFO OGG-01229 Oracle GoldenGate Collector for MySQL: Connected to ::ffff:192.168.0.164:61104.
2014-04-02 16:22:22 INFO OGG-01669 Oracle GoldenGate Collector for MySQL: Opening /home/oracle/app/oracle/ogg/dirdat/xs000000 (byte -1, current EOF 0).
2014-04-02 16:22:53 INFO OGG-03010 Oracle GoldenGate Delivery for MySQL, rep3.prm: Performing implicit conversion of column data from character set windows-936 to ISO-8859-1.
雙向同步須要考慮的是怎麼解決循環複製,以及同時更新一張表以誰爲基準。
配置過程就不寫了,大體和oracle到mysql的單向+mysql到oracle的單向差很少。
須要注意的有以下幾點:
1.oracle和mysql的2端,抽取(extract)和應用(replication)應該使用不一樣的用戶
2.爲解決禁止循環複製,應該在ext進程配置3個參數,以下:
oracle的extract:
extract ext4
dynamicresolution
userid ggs,password ggs
RANLOGOPTIONS EXCLUDEUSER repggs
GETAPPLOPS
IGNOREREPLICATES
exttrail /home/oracle/app/oracle/ogg/dirdat/dd
table hr.ah6;
mysql的extract:
extract ext5
setenv (MYSQL_HOME="/u01/mysql")
sourcedb sure@localhost:3306,userid root,password 123456
tranlogoptions altlogdest /tmp/binlog.index
TRANLOGOPTIONS EXCLUDEUSER reproot
GETAPPLOPS
IGNOREREPLICATES
exttrail /home/oracle/app/oracle/ogg/dirdat/mb
--dynamicresolution
--gettruncates
table sure.ah6;
只複製應用產生的數據,忽略replication產生的數據,以及忽略replication進程的用戶。
3. ./GLOBALS 是全局變量,只在replication的時候有用,因此配置的時候須要加上:
GGSCHEMA repggs --這個參數只在oracle裏面有
CheckpointTable repggs.checkpointtab --這個參數oracle和mysql裏面都有
4.在extract用ggs/root用戶,在replication用repggs/reproot用戶
5.由於是雙向同步,因此同一個表,好比說ah6,在oracle生成的define要傳遞到mysql去,在mysql生成的define也要傳遞到oracle去。
因此,建議命名規則是oracle->mysql:ah6_o2m.prm,mysql->oracle:ah6_m2o.prm
6.從oracle複製到mysql的dml操做,須要手工commit,這個還沒找到解決的方法(除了把auto_commit改成on)。
-------------------------------------------------------------------------------------------------------------------------
配置ogg異構mysql-oracle 單向同步
從mysql到oracle和oracle到mysql差很少。大體步驟以下:
環境是:
192.168.0.165 (Mysql ) —> 192.168.0.164 ( Oracle )
想將mysql的sure庫下的ah6 同步到 oracle的 hr.ah6下
版本:
操做系統:redhat5.8
Oracle: 11.2.0.3
Mysql: 5.5.37
goldgate:
11.2.0.1.3 for oracle
11.2.0.1.1 for mysql
大體的配置過程以下:
----------------------------
源端(mysql,以log-bin方式啓動的,format爲row)
1.配置抽取進程
edit params ext5
extract ext5
setenv (MYSQL_HOME="/u01/mysql")
sourcedb sure@localhost:3306,userid root,password 123456
tranlogoptions altlogdest /tmp/binlog.index
exttrail /home/oracle/app/oracle/ogg/dirdat/mb
--dynamicresolution
--gettruncates
table sure.ah6;
2.給ext5添加本地trail
add extract ext5,tranlog,begin now
add exttrail /home/oracle/app/oracle/ogg/dirdat/mb,extract ext5
3.配置pump進程
edit params pump5
extract pump5
rmthost 192.168.0.164,mgrport 7809
rmttrail /home/oracle/app/oracle/ogg/dirdat/mb
passthru
table sure.ah6;
4.給pump5添加本地和遠程的trail
add extract pump5,exttrailsource /home/oracle/app/oracle/ogg/dirdat/mb
add rmttrail /home/oracle/app/oracle/ogg/dirdat/mb,extract pump5
5.配置define文件
edit params ah6
defsfile /home/oracle/app/oracle/ogg/dirdef/ah6.prm
sourcedb sure@localhost:3306,userid root,password 123456
table sure.ah6;
生成define,並將define傳到oracle服務器上
./defgen paramfile dirprm/ah6.prm
------------------------
如下是配置目的端(oracle)
1.配置接收進程
edit params rep2
replicat rep2
sourcedefs /home/oracle/app/oracle/ogg/dirdef/ah6.prm
userid ggs,password ggs
reperror default,discard
discardfile /home/oracle/app/oracle/ogg/dirrpt/rep2.dsc,append,megabytes 50
dynamicresolution
map sure.ah6, target hr.ah6;
2.添加checkpoint表
add checkpointtable ggs.checkpointtab
3.給接收進行添加trail和checkpoint table
add replicat rep2,exttrail /home/oracle/app/oracle/ogg/dirdat/mb,checkpointtable ggs.checkpointtab
add replicat rep2,exttrail /home/oracle/app/oracle/ogg/dirdat/mb,checkpointtable repggs.checkpointtab
--alter replicat rep2,exttrail /home/oracle/app/oracle/ogg/dirdat/mb,checkpointtable repggs.checkpointtab
須要注意的是,mysql須要使用log的format爲row模式。另外,要注意binlog-do-db這個參數,若是配置了的話,那麼必定要包含須要複製的數據庫在內,我就在這個地方犯了傻。
----------------------------------------------------------------------------------------------------------------------
配置ogg異構oracle-mysql 雙向同步注意事項
雙向同步須要考慮的是怎麼解決循環複製,以及同時更新一張表以誰爲基準。
配置過程就不寫了,大體和oracle到mysql的單向+mysql到oracle的單向差很少。
須要注意的有以下幾點:
1.oracle和mysql的2端,抽取(extract)和應用(replication)應該使用不一樣的用戶
2.爲解決禁止循環複製,應該在ext進程配置3個參數,以下:
oracle的extract:
extract ext4
dynamicresolution
userid ggs,password ggs
RANLOGOPTIONS EXCLUDEUSER repggs
GETAPPLOPS
IGNOREREPLICATES
exttrail /home/oracle/app/oracle/ogg/dirdat/dd
table hr.ah6;
mysql的extract:
extract ext5
setenv (MYSQL_HOME="/u01/mysql")
sourcedb sure@localhost:3306,userid root,password 123456
tranlogoptions altlogdest /tmp/binlog.index
TRANLOGOPTIONS EXCLUDEUSER reproot
GETAPPLOPS
IGNOREREPLICATES
exttrail /home/oracle/app/oracle/ogg/dirdat/mb
--dynamicresolution
--gettruncates
table sure.ah6;
只複製應用產生的數據,忽略replication產生的數據,以及忽略replication進程的用戶。3. ./GLOBALS 是全局變量,只在replication的時候有用,因此配置的時候須要加上:GGSCHEMA repggs --這個參數只在oracle裏面有CheckpointTable repggs.checkpointtab --這個參數oracle和mysql裏面都有4.在extract用ggs/root用戶,在replication用repggs/reproot用戶5.由於是雙向同步,因此同一個表,好比說ah6,在oracle生成的define要傳遞到mysql去,在mysql生成的define也要傳遞到oracle去。因此,建議命名規則是oracle->mysql:ah6_o2m.prm,mysql->oracle:ah6_m2o.prm6.從oracle複製到mysql的dml操做,須要手工commit,這個還沒找到解決的方法(除了把auto_commit改成on)。