视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle使用goldengate诀别向Oracle和mysql双路的单向复制
2020-11-09 14:01:19 责编:小采
文档


Oracle使用goldengate分别向Oracle和mysql双路的单向复制 一.Oracle分别向Oracle和mysql双路的单向复制是在: ORACLE-mysql的单向复制基础上做的。 http://blog.csdn.net/q947817003/article/details/13294937 二.分别再在ORACLE主库及ORACLE目标库上增加相应

Oracle使用goldengate分别向Oracle和mysql双路的单向复制

一.Oracle分别向Oracle和mysql双路的单向复制是在:

ORACLE-mysql的单向复制基础上做的。http://blog.csdn.net/q947817003/article/details/13294937

二.分别再在ORACLE主库及ORACLE目标库上增加相应进程

ORACLE源端增加:

1.增加配置extract进程

按顺序执行以下操作:
add extract extora,tranlog, begin now

目标端文件的位置--这里要注意rmttrail指的是目标端的路径。
add rmttrail /u01/ogg/dirdat/ot, extract extora

edit params extora
在打开的编辑窗口写入
extract extora
userid ogg, password ogg
rmthost 192.168.1.213, mgrport 7809
rmttrail /u01/ogg/dirdat/ot
table test5.test5;
##################################################

2.目标端增加replicat进程:

-----我这里MYSQL目标库和ORACLE目标库在同一台虚拟机,如果是同样情况要要注意:
OGG FOR MYSQL和OGG FOR ORACLE安装在不同目录,并且所涉及的MGR及接收、抽取进程都是的。
相关的进程都需要单独启动。
同时要注意OGG FOR MYSQL和OGG FOR ORACLE两个主进程要运行在不同的端口,如我的OGG FOR ORACLE运行在7809. OGG FOR MYSQL运行在7810
逐次输入以下命令:
dblogin userid ogg,password ogg
add checkpointtable ogg.checkpoint ###########如果之前已经配置过增加这个表,就不需要执行这一句。
add replicat repora,exttrail /u01/ogg/dirdat/ot, checkpointtable ogg.checkpoint

edit params repora
在弹出编辑窗口输入以下:---我这里只设置了同步test5用户的test5表

试中再建立。
replicat repora
handlecollisions
assumetargetdefs
userid ogg,password ogg
discardfile /u01/ogg/dirdat/repora_discard.txt,append, megabytes 10
map test5.test5, target test5.test5;

三、在ORACLE目标库创建用户及表,并启动主及目标库的OGG进程。

1.ORACEL目标数据库中创建用户和表所使用的语句如下:
使用DBA用户执行 create user test5 identified by test5;
grant connect,resource to test5;
conn test5/test5
create table test5(aa int primary key);

2.启动主及目标库的OGG进程
涉及语句大致如下:
start mgr
start extract extmysql 或start extmysql
start replicat repmysql 或start repmysql
start extract extora 或start extora
start replicat repora 或start repora

3.进程 启动后的状态如下:
ORACLE主库OGG进程: --只用不用 了EXTMYSQL EXTORA两个,其它的是其它复制测试用的,不用管。--以下的OGG进程同理。
GGSCI (bys001.oel.com) 21> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT ABENDED EXT1 00:00:00 26:20:26
EXTRACT ABENDED EXT3 00:00:00 26:18:25
EXTRACT RUNNING EXTMYSQL 07:39:30 00:00:04
EXTRACT RUNNING EXTORA 00:00:00 00:08:28
EXTRACT ABENDED PUMP3 00:00:00 26:20:29
REPLICAT ABENDED REP2 00:00:00 26:18:29

MYSQL目标库OGG进程:
GGSCI (bys2.oel.com) 4> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REPMYSQL 00:00:00 00:00:00

ORACLE目标库OGG进程:
GGSCI (bys2.oel.com) 14> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT ABENDED EXT2 00:00:00 26:19:06
REPLICAT ABENDED REP1 00:00:00 26:18:59
REPLICAT ABENDED REP3 00:00:00 26:18:58
REPLICAT RUNNING REPORA 00:00:00 00:00:
所涉及的OGG相关进程均正常运行。

四、同步测试

注:下面测试中在统计SQL语句执行时间中是不准确的,比如下面的语句

00:19:21 TEST5@bys1>insert into test5 values(333);
1 row created.
00:19:50 TEST5@

如果统计插入语句的执行时间,应该统计执行完语句的返回的下一个命令提示符中的时间,即00:19:50,而不是00:19:21。目前没实验环境,暂且这样。

1.在源库做插入操作:

--源库已经有两条数据,是在做ORACLE-mysql的单向复制时留下的,这里不清除,
测试可以看到,新增加的ORACLE目标库中初始没有这两条数据,我的配置里OGG也不会自动同步源库与目标库表中存在的数据。
TEST5@bys1>select * from test5;
AA
----------
100
200
TEST5@bys1>set time on
00:19:21 TEST5@bys1>insert into test5 values(333);
1 row created.
00:19:50 TEST5@bys1>commit;

Commit complete.

00:19:53 TEST5@bys1>---注意记录一下提交的时间,方便在目标库查看数据同步情况。

2.目标ORACLE库查询数据同步情况:

---因为目标库内数据未做初始化,原库有两条数据100和200.目标库未初始化这些数据。--可以手动插入那两条数据即可。
[oracle@bys2 mysqlogg]$ sqlplus test5/test5
TEST5@bys2>set time on
00:19:32 TEST5@bys2>select * from test5;
no rows selected
00:19:54 TEST5@bys2>select * from test5; -
no rows selected
00:19:57 TEST5@bys2>select * from test5; ---可以看到,主库提交后延迟有4秒钟多。
AA
----------
333

3.目标MYSQL库同步情况:

[oracle@bys2 mysqlogg]$ mysql -u root -p oggtest
Enter password:
mysql> select * from test5;
+-----+
| aa |
+-----+
| 100 |
| 200 |
| 333 |
+-----+
3 rows in set (0.00 sec)
mysql> select * from chktab; ----查询这个表, audit_ts 列在OACLE源库发出COMMIT后就有了更新。 last_update_ts列是在00:19:54秒,和ORACLE目标库一样是有4秒多的延迟了。
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
| group_name | group_key | seqno | rba | audit_ts | create_ts | last_update_ts | current_dir |
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
| REPMYSQL | 2345303211 | 2 | 1218 | 2013-08-31 00:19:50.795556 | 2013-08-30 14:14:31 |2013-08-31 00:19:54 | /u01/mysqlogg |
+------------+------------+-------+------+----------------------------+---------------------+---------------------+---------------+
1 row in set (0.00 sec)

下载本文
显示全文
专题