您的位置:首页 > 数据库 > Oracle

OGG ORACLE TO MYSQL配置方法

2016-01-12 00:00 489 查看
摘要: ORACLE GOLDEN GATE 配置 ORACLE 到 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 deferred;

--创建相应表空间

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

SQL> @ddl_setup.sql

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 TRANDATA 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

拷贝到mysql相应位置
[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
如有特别端口,可用如下命令
dblogin sourcedb ggs@10.142.78.54:8866 userid test,password test

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OGG ORACLE GOLDEN GATE MYSQL