这种迁移方式适合大批量的大表或者需要增量同步的表进行迁移,支持全量初始化+Oracle GoldenGate(OGG)增量同步,通过navicat工具进行Oracle-->MySQL表结构转化,再通过数据同步工具OGG进行全量表初始化以及后续的增量同步。
注意:使用增量方式同步的表都需要有主键,确保每行数据的唯一。
先使用navicat进行表结构的转化,具体参考迁移方式二里面的步骤。
Oracle源端配置OGG准备
1 数据库开启归档模式
---查看是否开启归档模式
archive log list
---开启归档模式
startup mount
alter database archvielog ;
alter database open;
2 数据库开启force_logging
---查看是否开启force logging
select force_logging from v$database;
----开启force logging
alter database force logging;
alter system switch logfile;
3 数据库开启补充日志supplemental logging
---查看补充日志
SELECT supplemental_log_data FROM v$database;
---开启补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Alter system switch logfile;
4 开启ogg参数
alter system set enable_goldengate_replication=true scope=both;
5 配置stream_pool大小
(MAX_SGA_SIZE * # of integrated Extracts) + 25% head room
For example, using the default values for the MAX_SGA_SIZE with two integrated Extracts:
( 1GB * 2 ) * 1.25 = 2.50GB STREAMS_POOL_SIZE = 2560M
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
MySQL目标端配置OGG准备
1 开启bin_log
---确认是否开启bin_log
show variables like 'log_bin';
2 开启bin_log(需要重启生效)
在my,cnf 中 [mysqld] 添加如下
[mysqld]
# binlog configuration
log-bin = /usr/local/var/mysql/logs/mysql-bin.log
expire-logs-days = 14
max-binlog-size = 500M
server-id = 1
2 确认binlog_format
----确认格式为row
show variables like 'binlog_format';
3 确认sql_mode
----确认包含STRICT_TRANS_TABLES
show variables like 'sql_mode';
4 确认版本
----确认版本,5.7.10之后才支持部分DDL
(CREATE TABLE, ALTER TABLE, and DROP TABLE operations are supported.)
select version();
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
创建ogg同步用户
1 oracle源端同步用户创建
create tablespace ogg_tbs datafile size 1g;
create user ogg identified by "oggoracle";
grant resource,dba,connect to ogg;
1.
2.
3.
2 mysql目标端同步用户创建
CREATE USER ogg IDENTIFIED by "oggmysql";
GRANT ALL PRIVILEGES ON *.* TO 'ogg'@'%';
1.
2.
Oracle源端安装ogg软件
1 配置环境变量
---/home/oracle/.bash_profile
export OGG_HOME=/u01/app/ogg
export PATH=$OGG_HOME:$PATH
1.
2.
3.
2 解压安装ogg软件
---解压安装ogg软件,安装包:p31766135_191004_Linux-x86-64.zip
cd /tmp/
unzip p31766135_191004_Linux-x86-64.zip
cd 31766135/
mv files/* /u01/app/ogg/
---验证
oracle@rac19b ~]$ ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 31637694_FBO
Linux, x64, 64bit (optimized), Oracle 19c on Aug 19 2020 20:08:53
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
GGSCI (rac19b) 1>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
3 创建ogg配置目录
GGSCI (rac19b) 10> create subdirs
Creating subdirectories under current directory /home/oracle
Parameter file /u01/app/ogg/dirprm: created.
Report file /u01/app/ogg/dirrpt: created.
Checkpoint file /u01/app/ogg/dirchk: created.
Process status files /u01/app/ogg/dirpcs: created.
SQL script files /u01/app/ogg/dirsql: created.
Database definitions files /u01/app/ogg/dirdef: created.
Extract data files /u01/app/ogg/dirdat: created.
Temporary files /u01/app/ogg/dirtmp: created.
Credential store files /u01/app/ogg/dircrd: created.
Masterkey wallet files /u01/app/ogg/dirwlt: created.
Dump files /u01/app/ogg/dirdmp: created.
GGSCI (rac19b) 11>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
4 启动MGR进程
---编辑mgr配置
cd /u01/app/ogg/
./ggsci
GGSCI (rac19b) 1> edit params mgr
---配置以下参数
PORT 7809
autorestart extract * ,waitminutes 2,resetminutes 5
PURGEOLDEXTRACTS /u01/app/ogg/dirdat/*,USECHECKPOINTS,MINKEEPDAYS 5
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
---启动mgr进程
GGSCI (rac19b) 1> start mgr
Manager started.
GGSCI (rac19b) 2> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
MySQL目标端安装ogg软件
1 配置环境变量
---/etc/profile
export OGG_HOME=/opt/ogg
export PATH=$OGG_HOME:$PATH
1.
2.
3.
2 解压安装ogg软件
---解压安装ogg软件,安装包:ggs_Linux_x64_MySQL_64bit.tar
cd ogg/
tar xvf /tmp/ggs_Linux_x64_MySQL_64bit.tar
---验证
[mysql@rac19a ~]$ ggsci
Oracle GoldenGate Command Interpreter for MySQL
Version 19.1.0.0.3 OGGCORE_19.1.0.0.0_PLATFORMS_190907.0144
Linux, x64, 64bit (optimized), MySQL Enterprise on Sep 7 2019 08:41:32
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
3 创建ogg配置目录
GGSCI (rac19a) 1> create subdirs
Creating subdirectories under current directory /home/mysql
Parameter file /opt/ogg/dirprm: created.
Report file /opt/ogg/dirrpt: created.
Checkpoint file /opt/ogg/dirchk: created.
Process status files /opt/ogg/dirpcs: created.
SQL script files /opt/ogg/dirsql: created.
Database definitions files /opt/ogg/dirdef: created.
Extract data files /opt/ogg/dirdat: created.
Temporary files /opt/ogg/dirtmp: created.
Credential store files /opt/ogg/dircrd: created.
Masterkey wallet files /opt/ogg/dirwlt: created.
Dump files /opt/ogg/dirdmp: created.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
4 启动MGR进程
---编辑mgr配置
cd /opt/ogg/
./ggsci
GGSCI (rac19b) 1> edit params mgr
---配置以下参数
PORT 7809
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *,RETRIES 5,WAITMINUTES 2,RESETMINUTES 10
PURGEOLDEXTRACTS /opt/ogg/dirdat/*,USECHECKPOINTS,MINKEEPDAYS 5
ACCESSRULE, PROG *, IPADDR 192.168.2.*, ALLOW
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
---启动mgr进程
GGSCI (rac19a) 2> start mgr
Manager started.
GGSCI (rac19a) 3> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
5 配置全局文件以及检查表
---ogg连接MySQL
GGSCI (rac19a DBLOGIN as ogg) 8> dblogin sourcedb db1@192.168.2.201:3306,userid ogg,password oggmysql
Successfully logged into database.
---创建检查表
GGSCI (rac19a DBLOGIN as ogg) 9> ADD CHECKPOINTTABLE db1.checkpoint
Successfully created checkpoint table db1.checkpoint.
GGSCI (rac19a DBLOGIN as ogg) 10>
---配置文件设置全局检查表
GGSCI (rac19a DBLOGIN as ogg) 10> edit params ./GLOBALS
---添加以下配置
CHECKPOINTTABLE db1.checkpoint
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Oracle源端配置抽取以及投递进程(增量进程)
1 对同步表添加补充日志
---ogg连接Oracle
GGSCI (rac19b) 3> dblogin userid ogg password oggoracle
Successfully logged into database.
---为表test.test1添加同步日志
GGSCI (rac19b as ogg@testdb) 4> add trandata test.test1
2022-10-13 13:08:58 INFO OGG-15132 Logging of supplemental redo data enabled for table TEST.TEST1.
2022-10-13 13:08:58 INFO OGG-15133 TRANDATA for scheduling columns has been added on table TEST.TEST1.
2022-10-13 13:08:58 INFO OGG-15135 TRANDATA for instantiation CSN has been added on table TEST.TEST1.
2022-10-13 13:08:59 INFO OGG-10471 ***** Oracle Goldengate support information on table TEST.TEST1 *****
Oracle Goldengate support native capture on table TEST.TEST1.
Oracle Goldengate marked following column as key columns on table TEST.TEST1: ID.
---为表test.test2添加同步日志
GGSCI (rac19b as ogg@testdb) 5> add trandata test.test2
2022-10-13 13:09:04 INFO OGG-15132 Logging of supplemental redo data enabled for table TEST.TEST2.
2022-10-13 13:09:04 INFO OGG-15133 TRANDATA for scheduling columns has been added on table TEST.TEST2.
2022-10-13 13:09:04 INFO OGG-15135 TRANDATA for instantiation CSN has been added on table TEST.TEST2.
2022-10-13 13:09:04 INFO OGG-10471 ***** Oracle Goldengate support information on table TEST.TEST2 *****
Oracle Goldengate support native capture on table TEST.TEST2.
Oracle Goldengate marked following column as key columns on table TEST.TEST2: ID.
GGSCI (rac19b as ogg@testdb) 6>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
2 创建EXTRACT抽取进程
GGSCI (rac19b as ogg@testdb) 6> add extract E_TEST tranlog,begin now,threads 1
EXTRACT added.
GGSCI (rac19b as ogg@testdb) 7> add exttrail ./dirdat/es,extract E_TEST,megabytes 1000
EXTTRAIL added.
GGSCI (rac19b as ogg@testdb) 8> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED E_TEST 00:00:00 00:00:20
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
3 设置EXTRACT抽取进程参数
GGSCI (rac19b) 2> edit params e_test
extract E_TEST
SETENV (ORACLE_HOME = "/u01/app/oracle/product/19.0.0/dbhome_1")
SETENV (ORACLE_SID = "testdb")
SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")
userid ogg, password oggoracle
exttrail ./dirdat/es
gettruncates
TRANLOGOPTIONS INCLUDEREGIONID,EXCLUDEUSER ogg
TRANLOGOPTIONS BUFSIZE 2048000
TRANLOGOPTIONS DBLOGREADER,DBLOGREADERBUFSIZE 2048000
DISCARDFILE ./dirrpt/E_TEST.dsc,APPEND,MEGABYTES 1000
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS,RATE
FETCHOPTIONS MISSINGROW ABEND
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H,CHECKINTERVAL 10m
DYNAMICRESOLUTION
TABLE TEST.TEST1;
TABLE TEST.TEST2;
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
4 创建EXTRACT投递进程
GGSCI (rac19b) 3> add extract P_TEST,exttrailsource ./dirdat/es
EXTRACT added.
GGSCI (rac19b) 4> add RMTTRAIL ./dirdat/rs,ext P_TEST,megabytes 1000
RMTTRAIL added.
GGSCI (rac19b) 5>
1.
2.
3.
4.
5.
6.
7.
5 设置EXTRACT投递进程参数
extract P_TEST
userid ogg, password oggoracle
rmthost 192.168.2.201, mgrport 7809
rmttrail /opt/ogg/dirdat/rs
passthru
DISCARDFILE ./dirrpt/P_TEST.dsc,APPEND,MEGABYTES 1000
DISCARDROLLOVER AT 6:00
REPORTROLLOVER AT 6:00
REPORTCOUNT EVERY 1 HOURS,RATE
TABLE TEST.TEST1;
TABLE TEST.TEST2;
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
6 启动源端抽取以及投递进程
---启动抽取以及投递进程
GGSCI (rac19b) 8> start *test
Sending START request to MANAGER ...
EXTRACT E_TEST starting
Sending START request to MANAGER ...
EXTRACT P_TEST starting
---确认状态正常running
GGSCI (rac19b) 14> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING E_TEST 00:00:02 00:00:07
EXTRACT RUNNING P_TEST 00:00:00 00:00:03
GGSCI (rac19b) 15>
---确认目标端能接收到队列文件
[mysql@rac19a dirdat]$ ls -rlth
total 20K
-rw-r----- 1 mysql mysql 19K Oct 13 13:24 rs000000000
[mysql@rac19a dirdat]$
-----------------------------------