资讯专栏INFORMATION COLUMN

通过OGG实现异构数据库迁移(ORACLE TO MYSQL)

IT那活儿 / 1679人阅读
通过OGG实现异构数据库迁移(ORACLE TO MYSQL)

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


环境介绍

1.1 迁移背景

本次测试单张表的ogg异构迁移,通过ogg将oracle中的1张测试表同步到mysql里,需要注意oracle迁移mysql的场景下不支持ddl语句同步,因此表结构迁移完成后到数据库切换前尽量不要再修改表结构。

1.2 主机信息

类别
源端
目标端
主机名
orcl
master1
数据库类型
单实例
单实例
数据库版本
oracle 19.3.0.0
mysql-5.7.25
主机IP地址
192.168.10.128
192.168.10.180
OGG版本
GoldenGate 21.3.0.0.0 for Oracle
GoldenGate 21.3.0.0.0 for MySQL-compatible


在Oracle端安装OGG for Oracle

2.1 下载ogg安装包

下载网址:https://www.oracle.com/middleware/technologies/goldengate-downloads.html
下载Oracle GoldenGate 21.3.0.0.0 for Oracle on Linux x86-64

2.2 安装软件

1)以Oracle用户登录:修改环境变量
su - oracle
$vi .bash_pfofile

export OGG_HOME=/ogg/oinstall
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server:$JAVA_HOME/jre/lib/amd64/libjsig.so:$JAVA_HOME/jre/lib/amd64/server/libjvm.so:$OGG_HOME/lib:$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/usr/lib
export PATH=$OGG_HOME:$PATH:$ORACLE_HOME/bin
2)创建OGG用户及目录
su - root
#useradd ogg -g oinstall
#passwd ogg
#mkdir /ogg
#chown -R oracle:oinstall /ogg/
切换到ogg用户:
$unzip -d ~ 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
$cd fbo_ggs_Linux_x64_Oracle_shiphome/Disk1/response/
$vi oggcore.rsp
INSTALL_OPTION=ORA19C
SOFTWARE_LOCATION=/ogg/oinstall
静默安装:
./runInstaller -silent -nowait -responseFile /ogg/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1/response/oggcore.rsp

cd $OGG_HOME
create subdirs

OGG源端配置

3.1 数据库配置

查看目前是否打开了归档日志、附件日志,强日志:如果没打开需要打开下。
SQL>select name,open_mode,force_logging,supplemental_log_data_min from v$database;
SQL>archive log list;
SQL>alter database force logging;
SQL>alter database add supplemental log data;

3.2 创建ogg所需用户及表空间

cdb下的配置:
SQL>create tablespace ogg_data datafile /oradata/oggtbs01.dbf size 1024M autoextend on;
SQL>create user c##ogg identified by ogg default tablespace ogg_data;
SQL>grant dba ,connect, resource, unlimited tablespace to c##ogg;
SQL>exec dbms_goldengate_auth.grant_admin_privilege(c##ogg,*,TRUE);
PDB下的配置:
SQL>create tablespace ogg_data datafile
/oradata/ORCL2/D418DD8AF0E48322E0538289A8C07AB4/datafile/ogg.dbf size 1024M autoextend on;
SQL>create user ogg identified by ogg default tablespace ogg_data;
SQL>grant dba ,connect, resource, unlimited tablespace to ogg;
SQL>exec dbms_goldengate_auth.grant_admin_privilege(ogg,*,TRUE);
确保ogg用户可以正常登录pdb:sqlplus ogg/ogg@pdb19.

3.3 创建测试数据

SQL>create user test identified by test;
SQL>grant dba ,connect, resource, unlimited tablespace to test;
确保ogg用户可以正常登录pdb:sqlplus test/test@pdb19.
SQL>create table test_ogg_tab(id int,name varchar(20),primary key(id));

3.4 添加表级transdata

ggsci>dblogin userid ogg@pdb19,password ogg
ggsci>add schematrandata pdb19.test
ggsci>add trandata test.*
--配置检查点:
edit param ./globals
oggschema ogg

3.5 配置进程

1)配置mgr进程

--配置进程:
PORT 7809
DYNAMICPORTLIST 7810-7899
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3, RESETMINUTES 60
--启动mgr进程:
GGSCI > start mgr
GGSCI > info all
$ netstat -ntpl |grep 7809

2)配置抽取进程

GGSCI > edit param ext_mq
extract ext_mq
DDL INCLUDE ALL
SETENV (ORACLE_HOME = "/u01/app/oracle/product/19.3.0/db")
userid c##ogg@orcl2, password ogg
exttrail /ogg/oinstall/dirdat/to
table PDB19.test.*;

GGSCI >add extract ext_mq, TRANLOG,BEGIN NOW
GGSCI >add exttrail /ogg/oinstall/dirdat/to, extract ext_mq
GGSCI >register extract ext_mq database container(PDB19)
注意:不可在pdb里注册, 只能在cdb注册,不然会报错OGG-08217。

3)配置传输进程

GGSCI >edit param pump_mq
extract pump_mq
userid c##ogg@orcl2 , password ogg
rmthost 192.168.10.180,mgrport 7809
rmttrail /ogg/oinstall/dirdat/rt
table PDB19.test_.*;

GGSCI >add extract pump_mq, exttrailsource /ogg/oinstall/dirdat/to
GGSCI >add rmttrail /ogg/dirdat/rt, extract pump_mq, megabytes 100

4)异构mapping文件defgen生成

edit param tab1
dsdffile /ogg/oinstall/dirdef/ogg_test.ogg_test
userid test@PDB19, password test
table test.test_ogg_tab;
./defgen paramfile dirprm/tab1.prm


在MYSQL端安装OGG for MYSQL

4.1 下载ogg安装包

下载网址:https://www.oracle.com/middleware/technologies/goldengate-downloads.html
下载  Oracle GoldenGate 21.3.0.0.0 for MySQL-compatible Databases on Linux x86-64

4.2 安装软件

创建目的端ogg用户:oggmq.

#useradd oggmq
#passwd oggmq
#unzip -d ~ ./213000_ggs_Linux_x64_MySQL_64bit.zip
#mkdir -p /ogg/oinstall

su - oggmq
tar -xvf ggs_Linux_x64_MySQL_64bit.tar -C /ogg/oinstall

cd $OGG_HOME
ggsci
create subdirs


OGG目标端配置

5.1 数据库配置

create user ogg@% identified by ogg;
grant all on *.* to ogg@%;
create database ogg;
use ogg;
create table test_ogg_tab(id int,name varchar(20),primary key(id));

5.2 配置进程

1)配置mgr进程

edit param mgr
PORT 7809
--配置检查点:
edit param ./GLOBALS
CHECKPOINTTABLE ogg.checkpoint
--将3.5.4生成的文件发送到本机。
--添加检查点:
dblogin sourcedb ogg@127.0.0.1:3306 ,userid ogg, password ogg
add checkpointtable ogg.ggs_checkpoint

2)配置回放线程

ggsci>edit params r_tab1
replicat r_tab1
targetdb ogg@127.0.0.1:3306,userid ogg,password ogg
sourcedefs /ogg/oinstall/dirdef/ogg_test.ogg_test
HANDLECOLLISIONS
MAP test.test_ogg_tab,target ogg.test_ogg;

dblogin sourcedb ogg@127.0.0.1:3306 ,userid ogg, password ogg
add replicat r_tab1,exttrail /ogg/dirdat/rt,checkpointtable ogg.ggs_checkpoint

5.3 查看源端及目标端进程状态

源端:
目标端:

5.4 验证数据同步

--源端插入数据:
insert into test_ogg_tab values(1,d);
insert into test_ogg_tab values(2,b);
insert into test_ogg_tab values(3,ae);
commit;
--目标端查看:
select * from test_ogg_tab;
--再插入数据验证:


本文作者:余家豪(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129155.html

相关文章

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<