Sybase通过GoldenGate同步到mysql总结

1.1 源端sybase建立goldengate同步用户
1.1.1启动数据库
isql -U“用户名” -P“密码” -S“Sybase名称”
1.1.2创建数据设备(paronia_data为我自定义的库名_数据):

disk init name = ‘paronia_data’,physname = ‘/opt/sybase/product/data/paronia_data.dat’,size = ‘224M’, directio = true, skip_alloc = true
go
1.1.3创建日志设备(paronia_log为我自定义的库名_日志):
disk init name = ‘paronia_log’,physname = ‘/opt/sybase/product/data/paronia_log.dat’,size = ‘224M’, directio = true, skip_alloc = true
go
1.1.4创建数据库(新建的库:paronia ):
CREATE DATABASE paronia ON paronia_data = ‘224M’
go

1.1.5新增用户(用户名:ogg 密码:oggsyb):

sp_addlogin ‘oggs’,‘oggsyb’, @defdb = ‘paronia’, @deflanguage = ‘us_english’, @auth_mech = ‘ANY’
go

1.1.6将用户添加到新建数据库&授权:

sp_adduser ‘oggs’,‘oggsyb’,‘public’
go
sp_role ‘grant’,sa_role,oggs
go
sp_role ‘grant’,replication_role,oggs
go
sp_role ‘grant’,sybase_ts_role,oggs
go
sp_role ‘grant’,oper_role,oggs
go
grant create table, create view, create procedure to oggs
go
1.2开启第二事务截断点
在需要同步的库上,开启第二事务截断点(需要管理员权限才能开启)
假设需要同步的库是paronia,则使用isql进入sybase命令行后,执行
use paronia
go
dbcc settrunc(ltm,valid)
go
目的:ogg的捕获进程可以成功捕获到事务日志变化的保证;如果没有开启此选项,extract进程启动将会失败。其实,如果没有开启此选项,当你使用ggsci进行添加附加日志的时候,ggsci也会提醒你没有开启某个库的第二事务截断点选项。
备注:开启这个需要慎重,可能对生产有一定影响;

1.3 添加表级附加日志
将ggs_Linux_x64_sybase15_7_64bit.zip解压,并将解压后的文件夹移动到syabse的安装目录下,并重命名为ogg
cd sybase安装目录/ogg
进入ggsci控制台后,使用命令:
dblogin sourcedb 数据源,userid 用户名,password 密码
success后使用命令添加附加日志:
add trandata dbo.tb1; (这里的dbo.tb1的意思是,对dbo库下的tb1表添加附加日志。)
成功添加的话,将会看到enable的相关信息,同时,如果这里没对同步库开启ltm选项的话,将会看到一条提醒,不过不用担心,你过会再去开启也行,反正在extract进程启动之前开启就行。
1.4 源端配置
1、在源端上运行ogg,执行./ggsci
创建子目录 create subdirs

2、配置数据定义文件参数
创建source端sybase数据库需要复制同步的数据定义文件,
拷贝到target端相应目录下。
----配置数据定义文件参数
edit param defgen

参数文件内容:
defsfile /opt/sybase/ogg/dirdef/def_id.def
sourcedb paronia@SWH userid oggs password oggsyb
TABLE dbo.stu;

– shell命令执行以下命令,生成数据定义文件
./defgen paramfile /opt/sybase/ogg/dirprm/defgen.prm

– 拷贝生成的数据定义文件到目标端数据定义目录下
PS:先在mysql安装目录下解压ggs_Linux_x64_MySQL_64bit.zip并重命名为ogg
cd mysql安装目录/ogg (创建子目录 create subdirs 见1.5)
scp def_id.def root@192.168.163.130:/usr/local/mysql/ogg/dirdef

3、管理进程MGR参数配置
edit params mgr

参数文件内容:
PORT 7839
DYNAMICPORTLIST 7840-7860
–AUTOSTART ER *
–AUTORESTART EXTRACT ,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS /opt/sybase/ogg/dirdat/te
,usecheckpoints, minkeepfiles 10

4、抽取进程ext_st参数配置
edit params ext_st

参数文件内容:
EXTRACT ext_st
– SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
sourcedb paronia@SWH,userid oggs,password oggsyb
EXTTRAIL /opt/sybase/ogg/dirdat/id
DISCARDFILE /opt/sybase/ogg/dirrpt/ext_id.dsc , APPEND
REPORTCOUNT EVERY 10000 RECORDS, RATE
GETTRUNCATES
table dbo.stu;

edit params 配置文件中的各项说明为
Extract :指定extract的名字
SETENV():指定该extract启动时oracle相关的环境变量.
Userid , password :连接到源数据库的用户
Report:指定每天在日志中产生报告的时间
Reportrollover:指定每天汇报队列文件切换报告的时间
Gettruncates:告诉extract对truncate操作也要捕获
Warnlongtrans:超过个小时的交易为长交易,要在goldengate日志中进行记录,检查时间为指定的checkinterval。
Tranlogoptions:针对源数据库的一些配置选项,如数据库归档的位置等等,例如一些例子中的值是指当源和目标数据库字符集不一致,而且传输包含clob字段时,需要对clob中的字符集进行转换。
Fetchoptions:指定当从源数据库抓取数据时的一些选项,例如一些例子指不从undo tablespace取数据,而是从表里直接抽取。
Exttrail:本地队列文件,extract将数据从数据库日志抓取后存放在该队列文件。(抽取进程写这些文件,传输进程读取这些文件)
Discardfile:指定丢弃数据的存放位置。
Dynamicresolution:指定当extract从日志抓取变化数据时,根据当前的需要,动态解析表名,从而加快抓取进程的启动速度。
Table .:指定要从源系统抓取那些表的数据,这里schema不能用通配符,table_name可以用通配符。

Passthru:表示传输进程在传输的过程中只负责文件传输,不进行任何转化。
Rmthost: 目标端的机器IP地址或者主机名称。
Mgrport:目标端goldengate 管理进程manager运行的端口号。
Rmttrail:当传输进程将队列文件传输的目标端后放置的目录和队列文件。

ogg控制台执行:
add extract ext_st,tranlog,begin now
add exttrail /opt/sybase/ogg/dirdat/id,extract ext_st,megabytes 100

5、传输进程dp_st参数配置
edit params dp_st

参数文件内容:
EXTRACT dp_st
sourcedb paronia@SWH,userid oggs,password oggsyb
RMTHOST 192.168.163.130,MGRPORT 7808
RMTTRAIL /usr/local/mysql/ogg/dirdat/id
PASSTHRU
TABLE dbo.stu;

ogg控制台执行:
add extract dp_st,exttrailsource /opt/sybase/ogg/dirdat/id, begin now
add rmttrail /usr/local/mysql/ogg/dirdat/id,extract dp_st,megabytes 100
1.5 目标端配置
1、在目标端上运行ogg,执行./ggsci
创建子目录 create subdirs

2、管理进程MGR参数配置
edit params mgr

参数文件内容:
PORT 7808
DYNAMICPORTLIST 7810-7909
–AUTOSTART ER *
AUTORESTART EXTRACT ,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS /usr/local/mysql/ogg/dirdat/
,usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
ACCESSRULE, PROG , IPADDR 192.168..*, ALLOW

3、ogg检查点配置
Ogg控制台登录mysql库
dblogin sourcedb paronia@192.168.163.130:3306 userid root password 123456

执行
add checkpointtable paronia.checkpoint_table

4、rep进程rep_tb参数配置
目的:将源端投递过来的trail文件进行解密、分析,将源端的增量数据同步更新到目标数据库。
edit params rep_st
参数文件内容:
replicat rep_st
– SETENV (NLS_LANG=“MERICAN_AMERICA.ZHS16GBK”)
targetdb paronia@192.168.163.130:3306 userid root password 123456
handlecollisions
sourcedefs /usr/local/mysql/ogg/dirdef/def_id.def
reperror default,discard
discardfile /usr/local/mysql/ogg/dirrpt/rep_st.dsc,append,megabytes 50
MAP dbo.stu,TARGET paronia.stu;

REPLICAT进程参数配置说明:
ASSUMETARGETDEFS:假定两端数据结构一致使用此参数;
SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。
MAP:用于指定源端与目标端表的映射关系;
MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表;
REPERROR:定义出错以后进程的响应,一般可以定义为两种:
ABEND,即一旦出现错误即停止复制,此为缺省配置;
DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
SQLEXEC:在进程运行时首先运行一个SQL语句;
GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。
MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。

ogg控制台执行:
add replicat rep_st,exttrail /usr/local/mysql/ogg/dirdat/id,checkpointtable paronia.checkpoint_table

1.6 启动测试
– 按照顺序执行
源端执行:(记得把ogg文件夹都给777权限:chmod -R 777 ogg)
1、start mgr ①
2、start * ③

目标端执:
1、start mgr ②
2、Start * ④

启动成功,即可在sybase端试试插入数据,更新数据,删除数据,是否会进行同步

说明:无论源还是目标,启动各extract/replicat进程前需要启动mgr进程