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

使用oracle goldengate 实现windows下mysql到oracle的数据同步

2015-08-24 11:50 831 查看
原创文章转载须注明出处 作者冷雨夜幻灭

原文地址http://blog.sina.com.cn/s/blog_68d435270102vtld.html

一、环境

系统:Windows2003(32bits)

软件: ogg for mysql (2003/2008(32bits))

ogg for oracle (2003/2008(32bits))

支持 ogg只支持mysql5.15以上数据库

ogg有不同版本对应的数据库软件,10g 11g为不同的ogg软件

二、安装

源端:下载windows版的GoldenGate介质——V18162-01.zip,解压到ggs目录

1)进入安装目录

C:\>cd ggs

2)安装ogg服务器

C:\ggs>install addservice addevents

显示如下:

Oracle GoldenGate messages installed successfully.

Service 'GGSMGR' created.

Install program terminated normally.

3)打开ggsci

C:\ggs>ggsci

显示如下:

Oracle GoldenGate Command Interpreter for MySQL

Version 11.1.1.0.3 Build 001

Linux, x64, 64bit (optimized), MySQL Enterprise on Sep 29 2010 11:37:39

4)创建进程配置需要文件

GGSCI (2003server) 1> create subdirs

Creating subdirectories under current directory C:\ggs

Parameter files C:\ggs\dirprm: created

Report files C:\ggs\dirrpt: created

Checkpoint files C:\ggs\dirchk: created

Process status files C:\ggs\dirpcs: created

SQL script. files C:\ggs\dirsql: created

Database definitions files C:\ggs\dirdef: created

Extract data files C:\ggs\dirdat: created

Temporary files C:\ggs\dirtmp: created

Veridata files C:\ggs\dirver: created

Veridata Lock files C:\ggs\dirver\lock: created

Veridata Out-Of-Sync files C:\ggs\dirver\oos: created

Veridata Out-Of-Sync XML files C:\ggs\dirver\oosxml: created

Veridata Parameter files C:\ggs\dirver\params: created

Veridata Report files C:\ggs\dirver\report: created

Veridata Status files C:\ggs\dirver\status: created

Veridata Trace files C:\ggs\dirver\trace: created

Stdout files C:\ggs\dirout: created

注:实际情况创建时文件夹可能少于上面是没有问题的

5)配置mysql

修改配置文件my.ini

#for goldengate

log-bin = "C:\mysql\logbin\logbin.log"

binlog_format = ROW

log-bin-index = "C:\mysql\logindex"(此句可以注释掉,部分数据库会因此句无法启动)

binlog_cache_size=32m

max_binlog_cache_size=512m

max_binlog_size=512m

6) 创建数据库test,数据表test1,添加数据库用户ggs,密码123456,具有dba权限。添加完毕后重新启动mysql服务器 让上面的配置生效。

7) 配置管理进程参数

GGSCI (2003server) 2> eidt param mgr

Linux下会进入一个vi界面进行文件编辑

Windows 下会提示新建一个文档进行编辑

mgr内容:

PORT 7809

DYNAMICPORTLIST 7840-7914

STARTUPVALIDATIONDELAY 5

PURGEOLDEXTRACTS C:\ggs\dirdat\*, USECHECKPOINTS, MINKEEPDAYS 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

8)创建抽取进程参数ext1.prm

GGSCI (2003server) 2> eidt param ext1

Ext.prm 内容:

EXTRACT ext1

tranlogoptions altlogdest "C:\mysql\logbin\logbin.index"

SOURCEDB test@localhost:3306, USERID ggs, PASSWORD 123456

DISCARDROLLOVER ON FRIDAY

DISCARDFILE C:\ggs\dirrpt\ext1.dsc, APPEND, MEGABYTES 1024

WARNLONGTRANS 2h, CHECKINTERVAL 3m

REPORTCOUNT EVERY 30 MINUTES, RATE

EXTTRAIL C:\ggs\dirdat\ex

DYNAMICRESOLUTION

NUMFILES 5000

TABLE test.test1;

9)添加抽取进程

GGSCI (2003server) 3>ADD EXTRACT ext1, tranlog, begin now

GGSCI (2003server)4>ADD EXTTRAIL C:\ggs\dirdat\ex, EXTRACT ext1, megabytes 100

C:\ggs\dirrpt\ex参数为本地trail文件生成的路径,当有数据库操作时会在本地生成一个

文件例如:ex0000001

10)配置投递进程参数

GGSCI (2003server) 5>edit param dp1

dp1内容:

EXTRACT dp1

RMTHOST 192.168.2.218, MGRPORT 7809,COMPRESS

RMTTRAIL d:\ggs\dirdat\ex

PASSTHRU

NUMFILES 5000

DYNAMICRESOLUTION

TABLE test.test1;

RMTHOST 192.168.2.218 后面这个ip地址为目标端的ip地址,

MGRPORT 7809 7809位目标端mgr进程的监听端口

RMTTRAIL d:\ggs\dirdat\ex 为目标端trail文件生成的位置,即将数据库才做投递

的位置

11)添加投递进程:

GGSCI (2003server) 6>ADD EXTRACT dp1, EXTTRAILSOURCE C:\ggs\dirdat\ex

C:\ggs\dirdat\ex为上个抽取进程生成的本地trail文件的路径,所以要和前面保持

一致

GGSCI (2003server) 7> ADD RMTTRAIL d:\ggs\dirdat\ex, EXTRACT dp1,

MEGABYTES 100

d:\ggs\dirdat\ex投递到目标端trail文件生成的位置,需要与配置文件保持一致。

12)测试连接数据库是否成功

GGSCI (2003server) 8>dblogin sourcedb test@localhost:3306, userid ggs, password 123456

其中sourcedb参数的格式是[数据库名]@[ip地址]:[端口]

显示:Successfully logged into database.

13)配置defgen 创建defgen参数

GGSCI (2003server) 9>edit param defgen

配置文件内容:

defsfile C:\ggs\dirdef\defgen.prm

sourcedb test@localhost:3306, userid ggs,password 12356

table test.test1;

14)生成defgen文件

GGSCI (2003server) 9>exit

C:\>defgen paramfile C:\ggs\dirprm\defgen.prm

将C:\ggs\dirdef目录下的文件defgen.prm拷贝到目标端的相应目录下,即目

录.\dirdef下。

注:因为defgen是一个EXE文件所以要先退出ggsci

Defgen是mysql to oracle异构数据库所特有的。其他同构数据库应该不会用

到此文件(目前还不确定,查到的资料目前显示是这个结果)

作者冷雨夜幻灭

原文地址http://blog.sina.com.cn/s/blog_68d435270102vtld.html

目标端:Oracle数据库服务器

1)Oracle环境准备

创建存储空间ggs

创建用户ggs 密码123456

创建数据表test1

grant dba to ggs;赋给ggs dba权限

2)在Oracle服务器安装配置GoldenGate

参照源端1、2、3、4步

3)配置管理进程参数

GGSCI (2003server) 2> eidt param mgr

内容:

PORT 7809

DYNAMICPORTLIST 7840-7914

STARTUPVALIDATIONDELAY 5

PURGEOLDEXTRACTS d:\ggs\dirdat\*, USECHECKPOINTS, MINKEEPDAYS 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

4)创建复制进程参数rep1.prm

GGSCI (2003server) 3> eidt param rep1

内容

replicat rep1

sourcedefs D:\ggs\dirdef\defgen.prm

userid ggs,password 123456

reperror default,discard

discardfile D:\ggs\dirrpt\rep1.dsc,append,megabytes 50

dynamicresolution

map test.test1, target ggs.test1;

5)登录oracle数据库

GGSCI (2003server) 4>dblogin userid ggs ,password 12356

如果登录失败步骤如下

GGSCI (2003server)5>dblogin userid ggs@test ,password 12356

失败的话再次输入

GGSCI (2003server) 6>dblogin userid ggs ,password 12356

应该会是成功,如果还是失败请检查oracle客户端配置文件

Tnsnames.ora 是否配置好,实例名是否正确

如下

test =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = test)

)

)

如果以上正确还是连接不上,那请在命令行里用sqlplus验证是否用户名正确。

6)添加复制进程

GGSCI (2003server) 7>add checkpointtable chkpnttab

GGSCI (2003server)8>add replicat rep1,exttrail D:\ggs\dirdat\ex, checkpointtable chkpnttab

D:\ggs\dirdat\ex 为源端投递进程投递过来的trail文件的路径。

7)配置完毕启动进程

源端:

GGSCI (2003server) 1>start mgr

GGSCI (2003server) 2>start ext1

GGSCI (2003server) 3>start dp1

目标端:

GGSCI (2003server) 9>start mgr

GGSCI (2003server)10>start rep1

8) 源端插入数据看目标端是否有数据插入

检查进程是否抓取数据库操作

源端

GGSCI (2003server) 4>stats ext1 hourly

目标端

GGSCI (2003server) 11>stats rep1 hourly

原创文章转载须注明出处

原文地址http://blog.sina.com.cn/s/blog_68d435270102vtld.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: