欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 运维知识 > 数据库 >内容正文

数据库

oracle使用goldengate分别向oracle和mysql双路的单向复制 -尊龙游戏旗舰厅官网

发布时间:2025/1/21 数据库 15 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 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)

总结

以上是尊龙游戏旗舰厅官网为你收集整理的oracle使用goldengate分别向oracle和mysql双路的单向复制的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

网站地图