Heim >Datenbank >MySQL-Tutorial >Oracle使用goldengate诀别向Oracle和mysql双路的单向复制

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 16:15:24918Durchsuche

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)
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn