OGG ORACLE TO MYSQL配置方法


一、源为ORACLE 11g,目的 MYSQL 5.6

二、从http://download.oracle.com/  找到并下载相应安装包,直接释放到相应目录。建设全用root,数据库也用dba。因为可能要改系统参数。

三、ORACLE端配置

     系统环境配置

      #sqlplus /nolog

      SQL>conn  / as sysdba

      SQL>ARCHIVE LOG LIST  查看归档状态

      SQL> ALTER DATABASE ARCHIVELOG;  设成归档模式

      如果已启动ORACLE,可能需要关闭再设置。

       SQL>SHUTDOWN IMMEDIATE;

       SQL>STARTUP MOUNT;

       SQL> ALTER DATABASE ARCHIVELOG; 

       SQL> ALTER DATABASE OPEN;

       打开辅助日志

       SQL> ALTER DATABASE ADD supplemental log data;

        关闭回收站

        SQL>alter system set recyclebin=off scope=both;

--创建相应表空间

SQL>create tablespace oggtbs datafile '/u01/app/oracle/oradata/onimei1/oggtbs01.dbf' size 500M autoextend on;


--授权

SQL>create user ggs identified by ggs default tablespace oggtbs;

SQL>GRANT create table to ggs;

SQL>GRANT CONNECT TO ggs;

SQL>GRANT ALTER ANY TABLE TO ggs;

SQL>GRANT ALTER SESSION TO ggs;

SQL>GRANT CREATE SESSION TO ggs;

SQL>GRANT FLASHBACK ANY TABLE TO ggs;

SQL>GRANT SELECT ANY DICTIONARY TO ggs;

SQL>GRANT SELECT ANY TABLE TO ggs;

SQL>GRANT RESOURCE TO ggs;

SQL>GRANT DELETE ANY TABLE TO ggs;

SQL>GRANT INSERT ANY TABLE TO ggs;

SQL>GRANT UPDATE ANY TABLE TO ggs;

SQL>GRANT RESTRICTED SESSION TO ggs; 

SQL> @sequence.sql 根据提示输入:ggs

SQL> @marker_setup.sql prompt: ggs 

SQL> @ddl_setup.sql prompt: ggs 

SQL>@role_setup.sql 

SQL> grant GGS_GGSUSER_ROLE to ggs; 

SQL> @ddl_enable.sql 

10g需要安装dbms_share_pool包: 

SQL> @?/rdbms/admin/dbmspool.sql 

SQL> @ddl_pin ggs; 

SQL>QUIT;

#sqlplus /nolog

SQL>conn ggs/ggs

SQL>CREATE TABLE TEST (ID INT,NAME VARCHAR(50),TESTDATE DATE,PRIMARY KEY(ID));

SQL>QUIT;


GGS全局变量配置 

  #./ggsci

  GGSCI (ora11g) >CREATE SUBDIRS

在源库上执行: 

GGSCI (ora11g) 2> EDIT PARAMS ./GLOBALS

在统计模式下输入并保存:ggschema ggs

GGSCI (ora11g) 1> dblogin userid ggs password ggs

Successfully logged into database.

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


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分钟,则把它作为警告写到错误日志中。


GGSCI (ora11g) 6> start mgr

Manager started.

GGSCI (ora11g) 7> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

添加并查看需要复制的表:

GGSCI (ora11g) 8> ADD TRANDATE ggs.test

GGSCI (ora11g) 9> info trandata ggs.*

配置抽取进程

GGSCI (ora11g) 11> edit params ext3


extract ext3

dynamicresolution

userid ggs,password ggs

exttrail /u01/ogg/11.2/dirdat/xs

table ggs.test;

--注意分号结尾

GGSCI (ora11g) 13> add extract ext3,tranlog,begin now

EXTRACT added.


GGSCI (ora11g) 14> add exttrail /u01/ogg/11.2/dirdat/xs,extract ext3

EXTTRAIL added.


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操作,缺省不复制;

配置投递进程

GGSCI (ora11g) 17> edit params push3 

extract push3

passthru

dynamicresolution

userid ggs,password ggs

rmthost 192.168.0.166,mgrport 7809

rmttrail /u01/ogg/11.2/dirdat/xs

table ggs.test;


push的模板:

EXTRACT pushmb

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")

USERID ggs, PASSWORD ggs

PASSTHRU

RMTHOST 192.168.0.165, MGRPORT 7809, compress

RMTTRAIL /u01/ogg/11.2/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小时的进行警告;

配置define文件

GGSCI (ora11g) 21> edit params test

defsfile /u01/ogg/11.2/dirdef/test.prm

userid ggs,password ggs

table ggs.test;

去相应的目录下生产define文件:

[oracle@ora11g 11.2]$ ./defgen paramfile dirprm/test.prm 

[root@ora11g ~]#  scp /u01/ogg/11.2/dirdef/ah4.prm 192.168.0.166:/u01/ogg/11.2/dirdef/


GGSCI (ora11g) 18> add extract push3,exttrailsource /u01/ogg/11.2/dirdat/xs

EXTRACT added.


GGSCI (ora11g) 19> add rmttrail /u01/ogg/11.2/dirdat/xs,extract push3

RMTTRAIL added.

四、MYSQL目的端配置

#vi /etc/my.cnf

log-bin=master-bin

binlog-format=row

mysql -u root -p

mysql>CREATE DATABASE ggs;

mysql>use ggs;

mysql>CREATE TABLE test (ID INT,NAME VARCHAR(50),TESTDATE DATE,PRIMARY KEY(ID)) engine=innodb;

创建ogg的初始化目录

#./ggsci

GGSCI (mysql) 1> create subdirs

配置mgr

GGSCI (mysql) 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 (mysql) 3> start mgr

Manager started.

GGSCI (mysql) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING      


配置checkpoint table

GGSCI(mysql)>dblogin sourcedb ggs,userid root,password 123456  

GGSCI (mysql) 7> edit  params ./GLOBALS

CHECKPOINTTABLE ggs.checkpoint 

GGSCI (mysql) 8>  add checkpointtable ggs.checkpointtab

Successfully created checkpoint table ggs.checkpointtab.

GGSCI (mysql) 9> info checkpointtable ggs.checkpointtab




在相应的mysql数据库中,也可以看到相应的表被添加了:

mysql> show tables;

+---------------+

| Tables_in_hr  |

+---------------+

| test           |

|checkpointtab_lox |

| checkpointtab |

+---------------+


配置应用进程


GGSCI (mysql) 10> edit params rep3 


replicat rep3

sourcedefs /u01/ogg/11.2/dirdef/test.prm

TARGETDB ggs,userid root,password 123456

reperror default,discard

discardfile /u01/ogg/11.2/dirrpt/rep3.dsc,append,megabytes 50

map ggs.test, target ggs.test;

GGSCI (nosql2) 13> add replicat rep3,exttrail /u01/ogg/11.2/dirdat/xs,checkpointtable ggs.test

PS:


REPLICAT进程参数配置说明:

ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;

SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。

MAP:用于指定源端与目标端表的映射关系;

MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;

REPERROR:定义出错以后进程的响应,一般可以定义为两种:

ABEND,即一旦出现错误即停止复制,此为缺省配置;

DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。

DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;

SQLEXEC:在进程运行时首先运行一个SQL语句;

GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。

MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。

五、测试和排错

在源端

GGSCI>START ext3

GGSCI>START push3

通过info all

应该可以看到 mgr,ext3,push3被启动,观察一会儿,会不会掉下来。

在目的端

GGSCI>START rep3

通过 info all

可以看到mgr,rep3

如果不能正常启动,可以查看 ggserr.log。查找原因。

常见可能的出错原因有:

1、由于/tmp/mysql.sock不存在,导致dbloing失败。在自定义的目录,通过export MYSQL_UNIX_TCP= 来指向文件,或者通过ln -s建立软链接。

2、由于分号或其他参数配置问题导致参数出错。

3、由于两边对应关系不一致,导致不能正常启动相应进程。

4、字符集的问题,建议两端都设成UTF8.

  ORACLE端:

  1).       关闭数据库

   SQL>SHUTDOWN IMMEDIATE

   2) 启动到Mount

   SQL>STARTUP MOUNT;

   SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

   SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

    SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

    SQL>ALTER DATABASE OPEN;

    SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

    SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

     SQL>SHUTDOWN IMMEDIATE;

     SQL>STARTUP

   LINUX环境配置:

 # export     NLS_LANG='American_America.AL32UTF8'

  #export  LANG=en_US.UTF-8

LANG,NLS_LANG,客户端OS 这3个字符集一致 

(GB2312 ZHS16GBK)

(UTF-8 AL32UTF8)

   MYSQL 端

  CREATE DATABASE TEST DEFAULT CHARSET SET UTF-8

   OGG 设置源端和目的端:

  ggsci>edit params ./GLOBALS

  在第一行加

   CHARSET UTF-8

参考官方文档

http://docs.oracle.com/goldengate/1212/gg-winux/GWURF/preface.htm#GWURF101

你可能感兴趣的:(oracle,mysql,ogg,Golden,Gate)