利用OGG实现Oracle数据库到MySQL数据库的单向同步

Posted JAIR_FOREVER

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用OGG实现Oracle数据库到MySQL数据库的单向同步相关的知识,希望对你有一定的参考价值。

目录

环境介绍

安装软件

配置进程

测试数据同步

软件和OGG常用命令下载链接


环境介绍

源:Centos7.3+Oracle11.4

目标:Centos7.3+mysql2

 

安装软件

1、MySQL数据库安装

略(mysql开启二进制日志、创建OGG用户和test数据库等操作可以一起做)

2、Oracle数据库安装

略(开启归档、开启附加日志创建OGG用户)

3、OGG软件安装

#将OGG软件上传到Oracle数据库服务器
#将软件进行解压。-C 后面是解压的目录,可以先行创建这个目录
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C ./ogg/
#我这里的解压目录为/home/ogg
cd /home/ogg
./ggsci

完成上面的步骤如果出现如下所示的图证明OGG安装完成了

创建OGG工作目录命令:create subdirs

4、在MySQL服务器执行Oracle服务器同样的第三步操作

配置进程

1、源端

#添加表附加日志,我这里添加过了。所以显示already enabled for table OGG.STUDENT

GGSCI (oracle) 52> dblogin userid ogg,password ogg
Successfully logged into database.

GGSCI (oracle) 53> add trandata ogg.student

Logging of supplemental redo log data is already enabled for table OGG.STUDENT.

GGSCI (oracle) 54> 

#配置global

GGSCI (oracle) 54> edit params ./GLOBAL
#添加文件内容如下
ggschema ogg

#创建管理进程,并启动

GGSCI (oracle) 56> edit param mgr

#添加文件内容如下
port 8006
dynamicportlist 8006-8010
autorestart er *, retries 5, waitminutes 3
purgeoldextracts /home/ogg/dirdat/**,usecheckpoints,minkeepfiles 10
LAGREPORTHOURS 5
LAGINFOMINUTES 10
LAGCRITICALMINUTES 15

#启动
GGSCI (oracle) 57> start mgr
#查看状态
GGSCI (oracle) 58> info all
#可以看到状态为running

#创建extract进程,并启动

GGSCI (oracle) 59> edit params ext1

#文件内容
extract ext1
setenv(NLS_LANG = "SIMPLIFIED CHINESE.AL32UTF8")
userid ogg,password ogg
exttrail ./dirdat/e1
table ogg.student;

#table后面的分号要注意

GGSCI (oracle) 60> add extract ext1,tranlog,begin now
GGSCI (oracle) 61> add exttrail ./dirdat/e1,extract ext1
#查看
GGSCI (oracle) 62> info all
#此时可以看到有个EXTRACT(EXT1)stopped
#启动
GGSCI (oracle) 63> start ext1

#创建pump进程,并启动

GGSCI (oracle) 64> edit params push

#文件内容
extract push
setenv(NLS_LANG = "SIMPLIFIED CHINESE.AL32UTF8")
passthru
userid ogg,password ogg
rmthost 目标数据库服务器IP,mgrport 8006
rmttrail /root/ogg/dirdat/e1
table ogg.student;

#exttrailsource /home/ogg/dirdat/e1 路径与ext1进程抽取到的数据路径一致
GGSCI (oracle) 65> add extract push,exttrailsource /home/ogg/dirdat/e1

#rmttrail /home/mysql/goldengate/dirdat/e1 路径与mysql端获取数据的路径一致	
GGSCI (oracle) 66> add rmttrail /root/ogg/dirdat/e1,extract push

GGSCI (oracle) 67> info all
#此时可以看到有个EXTRACT(PUSH)stopped
#启动
GGSCI (oracle) 68> start push

#创建要同步的表的定义
#创建参数文件
GGSCI (oracle) 69> edit param test

#文件内容
defsfile ./dirdef/test.def
userid ogg, password ogg
table ogg.student;

GGSCI (oracle) 70> exit

#生成表定义文件
./defgen paramfile ./dirprm/test.prm
#此时在目录dirdef生成文件test.def

#传至目标库目录
scp /home/oracle/ogg/dirdef/test.def root@目标数据库服务器IP:/root/ogg/dirdef/

2、目标端

#创建管理进程,并启动
GGSCI (mysql) 2> edit param mgr

#文件内容
port 8006
dynamicportlist 8006-8010
autorestart er *, retries 5, waitminutes 3
purgeoldextracts /root/ogg/dirdat/**,usecheckpoints,minkeepfiles 10
LAGREPORTHOURS 5
LAGINFOMINUTES 10
LAGCRITICALMINUTES 15

#启动
GGSCI (mysql) 3> start mgr


#配置global
GGSCI (mysql) 4> edit params ./GLOBALS
#文件内容
ENABLEMONITORING

GGSCI (mysql) 5> edit params ./globals
#文件内容	
checkpointtable test.checkpoint_table

#配置检查点
#登录
GGSCI (mysql) 6> dblogin sourcedb test@MySQL数据库IP:3306 userid ogg password Root!!2018
#配置检查点
GGSCI (mysql) 7> add checkpointtable test.checkpoint_table

#查看检查点
GGSCI (mysql) 8> info checkpointtable test.checkpoint_table

#创建replicat进程并启动
GGSCI (mysql) 9> edit params REP1

#文件内容
replicat rep1
sourcedefs /root/ogg/dirdef/test.def
TARGETDB test@MySQL数据库IP:3306,userid ogg,password Root!!2018
reperror default,discard
discardfile /root/ogg/dirrpt/rep1.dsc,append,megabytes 50
allownoopupdates
map ogg.student,target test.student;

GGSCI (mysql) 10> add replicat rep1,exttrail /root/ogg/dirdat/e1,checkpointtable test.checkpoint_table

#启动
GGSCI (mysql) 11> start rep1

测试数据同步

在源端插入一条测试数据。我们观察源端的抽取进程和投递进程的工作状态如下图所示:

此时我们观察目标端的复制进程的工作状态如下图所示:

软件和OGG常用命令下载链接

https://download.csdn.net/download/u011192409/11208923

以上是关于利用OGG实现Oracle数据库到MySQL数据库的单向同步的主要内容,如果未能解决你的问题,请参考以下文章

利用OGG实现Oracle和MySQL之间的双向同步

怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL

如何将数据从Oracle数据库实时复制到MYSQL

oracle数据迁移到mysql中去,数据类型不一致

kettle从oracle向mysql迁移大数据量时报错,求教

oracle ogg ADG和DG的区别