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

原创文章转载须注明出处 作者冷雨夜幻灭

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

一、环境

   系统:Windows200332bits

   软件: ogg for mysql 2003/200832bits))

          ogg for oracle  2003/200832bits))

   支持 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

            Defgenmysql 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

你可能感兴趣的:(数据库管理,编程)