操作系统 |
Windows7 64位 |
Windows7 64位 |
IP地址 |
192.168.105.221 |
192.168.105.220 |
数据库 |
MySQL |
Oracle(企业版) |
数据库账号/密码 |
ggs/123456 |
ogg/root |
数据表 |
oggtest.test | ogg.mytest |
GoldenGate |
OracleGoldenGate 12.3.0.1.2 for MySQL on Windows (64 bit) |
Oracle GoldenGate 12.2.0.2.3 for Oracle on Windows (64 bit) |
dirdat目录 |
D:\ogg12\dirdat |
G:\OGG12\dirdat |
Oracle GoldenGate的介绍
参考: https://www.cnblogs.com/qiumingcheng/p/5435907.html
Oracle GoldenGate准备
https://www.oracle.com/cn/database/technology/goldengate-downloads.html
从该地址下载Oracle中的OGG和MySQL中适用的OGG。最好是下载相同版本的OGG(否则最后需要在抽取进程中进行版本的转换)。
找到MySQL的配置文件my.ini(一般该文件目录在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini)中找到[mysqld]添加以下内容
重启mysql服务
cmd> net stop mysql #停止服务
cmd> net start mysql #启动服务
查看数据库当前日志模式
Log_bin 的值为ON说明日志的二进制模式已经开启,日志的保存路径为E:\mysqlbin\binlog.index
登录mysql数据库创建数据库表ptests,如图设置主键自增(注意一定要设置主键,否则OGG同步设置完后,只能同步新增,删除和更新无法同步)
解压压缩文件后将文件123012_ggs_Windows_x64_MySQL_64bit.zip解压缩至D:\ogg12
(1)在源端服务器
安装的OGG根目录
按住SHift+右键
或cmd
进入OGG根目录
的命令面板
(2)运行ogg:执行ggsci
(3)添加manager进行到windows服务,使之可以随windows开机自行启动
edit params ./GLOBALS
命令(注意./GLOBALS
为大写),进入编辑文件# 编辑 GLOBALS文件(没有自动创建)
GGSCI (SC-201708231409) 1> edit params ./GLOBALS
MGRSERVNAME GGMGR
E:\OGG\oggmsql>install addservice
Service 'GGMGR' created.
Install program terminated normally.
(4)、输入create subdirs
自动创建需要用到的文件夹
GGSCI (SC-201708231409) 1> create subdirs
主要目录介绍:
dirchk:存放检查点(Checkpoint)文件
dirdat:存放Trail与Extract文件,以后详述
dirdef:通过DEFGEN工具生成的源或目标的数据定义文件
dirpcs:存放进程状态文件
dirprm:存放参数文件
dirrpt:存放进程报告文件
dirsql:存放SQL脚本文件
dirtmp:当事务所需要的内存超过已分配内存时,缺省存储于此。
此处参考:https://www.jianshu.com/p/5ab57fd785ad
此处参考:
首先打开sqlplus,使用sys登录到oracle(最好使用sqlplus,其他的客户端好像不好使)
SQL> select log_mode from v$database;
archive log list;
查看自动归档状态和归档进程,shutdown immediate;
关闭数据库,startup mount;
启动到mount状态,alter database archivelog;
修改数据库为归档模式,alter database open;
打开数据库SQL> archive log list;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
NO
SQL> alter database add supplemental log data;
Database altered.
SQL> select force_logging from v$database;
FOR
---
NO
SQL> alter database force logging;
Database altered.
SQL> select force_logging from v$database;
FOR
---
YES
此处参考:https://www.jianshu.com/p/276fede48835
(1)创建表空间或者使用已有的表空间
(2)创建表,设置主键
create table mytest(
id NUMBER NOT NULL constraint pk_id primary key,
name VARCHAR2(10) NOT NULL,
age NUMBER(2) NOT NULL,
sex VARCHAR2(10) NOT NULL
);
(3)赋予用户ogg权限
grant connect,resource,unlimited tablespace to ogg;
grant execute on utl_file to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on DBMS_FLASHBACK to ogg;
grant insert any table to ogg;
grant delete any table to ogg;
grant update any table to ogg;
grant sysdba to ogg;
此处可参考:https://www.jianshu.com/p/276fede48835
(1)登录数据库
dblogin sourcedb oggtest@localhost:3306, userid ggs, password 123456
(2)配置mgr进程
edit param mgr
mgr.prm文件内容
PORT 7809
DYNAMICPORTLIST 7840-7914
--STARTUPVALIDATIONDELAY 5
autorestart extract *,waitminutes 2,retries 5
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
PURGEOLDEXTRACTS D:\ogg12\dirdat\*, USECHECKPOINTS, MINKEEPDAYS 7
--启动mgr
start mgr
(3) 配置ext1抽取进程
(一)、配置ext1.prm文件
edit param ext1
文件内容:
EXTRACT ext1
tranlogoptions altlogdest "E:\mysqlbin\binlog.index"
SOURCEDB oggtest@localhost:3306, USERID ggs, PASSWORD 123456
DISCARDROLLOVER ON FRIDAY
DISCARDFILE D:\ogg12\dirrpt\ext1.dsc, APPEND, MEGABYTES 1024
REPORTCOUNT EVERY 30 MINUTES, RATE
EXTTRAIL D:\ogg12\dirdat\et,format release 12.2
NUMFILES 1
NOCOMPRESSDELETES
CACHEMGR CACHESIZE 1G
TABLE oggtest.test;
(二)、添加抽取进程
Add EXTRACT ext1 ,tranlog, begin now
ADD EXTTRAIL D:\ogg12\dirdat\et,EXTRACT ext1,megabytes 100
(4)配置dp1投递进程
(一)、配置dp1.prm文件
edit param dp1
文件内容:
EXTRACT dp1
RMTHOST 192.168.105.220, MGRPORT 7809,COMPRESS
RMTTRAIL G:\OGG12\dirdat\et
--PASSTHRU
NUMFILES 500
TABLE oggtest.test;
(2)、添加投递进程dp1
Add EXTRACT dp1 EXTTRAILSOURCE D:\ogg12\dirdat\et
Add RMTTRAIL G:\OGG\dirdat\et,EXTRACT dp1,MEGABYTES 100
注意:
G:\OGG\dirdat\et为目标端的dirdat文件目录,
D:\ogg12\dirdat\et为源端的dirdat文件目录
(6)创建表定义文件defgen.prm
(1)配置表定义文件defgen.prm
edit param defgen.prm
文件内容:
defsfile D:\ogg12\dirdef\defgen.prm
sourcedb oggtest@localhost:3306, userid ggs,password 123456
table oggtest.test;
(2)生成defgen文件
GGSCI (DESKTOP-0G8S27V DBLOGIN as ggs) 19> exit
cmd D:\ggs\oggMySQL>defgen paramfile D:\ogg12\dirdef\defgen.prm
将源端dirdef目录下生成的文件放到目标端的dirdef目录下
(7)启动进程
(一)、启动抽取进程
start ext1
(二)、启动投递进程
start dp1
注意:启动ext1、dp1前必须将管理进程启动
启动dp1前将目标端的mgr管理进程启动起来
使用info all查看进程状态,若Status都为running状态则代表进程启动成功
(1)登录数据库
dblogin userid ogg,password root
(2)配置管理进程mgr
(一)、配置管理进程mgr
edit param mgr
文件内容:
PORT 7809
DYNAMICPORTLIST 7840-7914
autorestart extract *,waitminutes 3,retries 5
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS G:\OGG12\dirdat\*, USECHECKPOINTS, MINKEEPDAYS 10
LAGREPORTHOURS 1
LAGINFOMINUTES 10
LAGCRITICALMINUTES 15
(二)、启动管理进程
start mgr
(3)添加表级的trandata,输入add trandata ogg.mytest
添加表级的trandata
add trandata ogg.mytest
注:表名可以使用通配符,如add trandata ggs.*
(4)配置复制进程rep1
(一)、配置rep1.prm文件
edit param rep1
文件内容:
replicat rep1
sourcedefs G:\OGG12\dirdef\defgen.prm
userid ogg,password root
reperror default,discard
discardfile G:\OGG12\dirrpt\rep1.dsc,append,megabytes 50
allownoopupdates
dynamicresolution
map oggtest.test,target ogg.mytest;
(二)、创建checkpointtable
add CHECKPOINTTABLE ogg.checkpoint
注意:表checkpoint表的表名不能和数据库中的表名同名,否则会报错,checkpoint用来记录目标端每次读取时出现终端的记录,相当于一个读取的日志记录表。
(三)、添加复制进程rep1
add replicat rep1,exttrail G:\OGG12\dirdat\ex, checkpointtable ogg.checkpoint
(5)启动目标端的进程
--启动复制进程rep1
start rep1
可以info all命令查看进程的状态:
(1)配置管理进程mgr
此处配置与3.2 Oracle目标端配置中管理进程配置一致。
(2)配置抽取进程ext1
(一)配置ext.prm文件
edit param ext1
文件内容:
EXTRACT ext1
USERID ogg, PASSWORD root
DISCARDFILE G:\OGG12\dirrpt\ext1.dsc,APPEND,MEGABYTES 1024
EXTTRAIL G:\OGG12\dirdat\ex
TABLE ogg.mytest;
(二)添加抽取进程ext
Add EXTRACT ext1 ,tranlog, begin now
ADD EXTTRAIL G:\OGG12\dirdat\ex,EXTRACT ext1,megabytes 100
(3)配置投递进程dp1
(一)配置dp1.prm文件
edit param dp1
文件内容:
EXTRACT dp1
RMTHOST 192.168.105.220, MGRPORT 7809,COMPRESS
RMTTRAIL G:\OGG12\dirdat\ex
--PASSTHRU
NUMFILES 500
TABLE ogg.mytest;
(二)添加投递进程dp1
Add EXTRACT dp1 EXTTRAILSOURCE G:\OGG12\dirdat\ex
Add RMTTRAIL D:\ogg12\dirdat\ex,EXTRACT dp1,MEGABYTES 100
注意:
D:\ogg12\dirdat\ex为目标端的dirdat文件目录,
G:\OGG12\dirdat\ex为源端的dirdat文件目录
(4)配置表定义文件odefgen
(1)配置表定义文件odefgen.prm
edit param odefgen.prm
文件内容:
Defsfile G:\OGG12\dirdef\odefgen.prm
userid ogg,password root
Table ogg.mytest;
(2)生成defgen文件
exit
defgen paramfile G:\OGG12\dirdef\odefgen.prm
将源端dirdef目录下生成的文件放到目标端的dirdef目录下
(5)启动进程
(一)、启动抽取进程
start ext1
(二)、启动投递进程
start dp1
注意:启动ext1、dp1前必须将管理进程启动
启动dp1前将目标端的mgr管理进程启动起来
(1)配置管理进程mgr
此处配置与3.1 Oracle源端配置中管理进程配置一致。
(2)配置复制进程rep1
(一)、配置rep1.prm文件
edit param rep1
文件内容:
replicat rep1
sourcedefs G:\OGG12\dirdef\odefgen.prm
userid ogg,password root
reperror default,discard
discardfile G:\OGG12\dirrpt\rep1.dsc,append,megabytes 50
allownoopupdates
dynamicresolution
map oggtest.test,target ogg.mytest;
(二)、创建checkpointtable
add CHECKPOINTTABLE oggtest.checkpoint
注意:表checkpoint表的表名不能和数据库中的表名同名,否则会报错,checkpoint用来记录目标端每次读取时出现终端的记录,相当于一个读取的日志记录表。
(三)、添加复制进程rep1
add replicat rep1,exttrail G:\OGG12\dirdat\ex, checkpointtable oggtest.checkpoint
(3)启动目标端的进程
--启动复制进程rep1
start rep1
可以info all命令查看进程的状态:
这部分可以参考:https://www.jianshu.com/p/5ab57fd785ad
1.开启源端服务并都是runing状态(mgr和ext1和dp1)
2.开启目标端服务并都是runing状态(mgr和rep1)
3.在源端的MySQL数据库中加入一条数据
4.在各个服务都运行正常的情况下,查看Mysql数据中的数据是否正常同步
原表:
目标表:
1.开启源端服务并都是runing状态(mgr和ext1和dp1)
2.开启目标端服务并都是runing状态(mgr和rep1)
3.在源端的Oracle数据库中加入一条数据
4.在各个服务都运行正常的情况下,查看Mysql数据中的数据是否正常同步
原表:
目标表:
参考资源:
https://www.jianshu.com/p/5ab57fd785ad
https://www.jianshu.com/p/276fede48835