详细介绍
MySQL :: Oracle增量复制数据到MySQL的工具,历经多次去IOE数据迁移挑战!
mysqlsync for windows
可以胜任从Oracle增量迁移数据到MySQL的软件比较多,包括基于日志分析技术的SharePlex和GoldenGate等商业软件,然而在支付公司的多次去IOE数据迁移任务中,一直使用的是自己编写的一个小工具(“mysqlsync”),是一款基于Oracle实体化视图日志来捕捉增量数据,进行增量数据同步的软件,支持过每秒1500TPS压力下的增量数据迁移。
首先在Oracle中创建一张测试表,并创建实体化视图日志,如下所示:
SQL> create table t_mysql (id number(10) not null primary key, col2 int);
Table created.
SQL> create materialized view log on t_mysql with primary key, sequence;
Materialized view log created.
最好是在实体化视图日志表的“SEQUENCE$$”列上创建一个索引,在有大量增量数据堆积的情况下,优化同步数据的速度。
SQL> desc MLOG$_T_MYSQL
Name Null? Type
---------------------------------- ----------------
ID NUMBER(10)
SEQUENCE$$ NUMBER
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)
XID$$ NUMBER
SQL> create index id_mlog_t_mysql on mlog$_t_mysql (sequence$$);
接下来在MySQL数据库中创建具有相同表结构的目标表。
mysql> create table t_mysql (id int not null primary key, col2 int);
Query OK, 0 rows affected (0.02 sec)
还需要为“mysqlsync”工具编写一个配置文件,用来告诉工具需要同步的表、主键列、实体化视图日志表名等关键信息,源表和目标表可以使用不同的表名(需要注意MySQL可能会区分表名、列名的大小写)。
$ cat sync.cfg
# Source # Key Col # Log Table # Target
t_mysql # id # mlog$_t_mysql # t_mysql
接下来可以启动“mysqlsync”工具了,请指定前面所展示的配置文件。
$ mysqlsync user1=system/oracle user2=test/test@db01:3306:test config=sync.cfg
DataSync: Oracle Data Replication Utility, Release 3.0.1
(c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.
这时程序就在等着源表操作了,可以登录到Oracle中做一些变更操作,不要忘记需要提交事务后,复制才能开始。
SQL> insert into t_mysql values (1, 10);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into t_mysql values (2, 10);
1 row created.
SQL> commit;
Commit complete.
在执行“COMMIT”命令后,就可以看到如下的日志输出信息,表示数据已经被成功同步过去了。
2016-03-27 16:58:22 -- Replicate from T_MYSQL to t_mysql, 1 messages processed.
2016-03-27 16:58:46 -- Replicate from T_MYSQL to t_mysql, 1 messages processed.
接下来可以向源表插入更多的数据。
SQL> insert into t_mysql select object_id, data_object_id
2 from all_objects where object_id > 2 and object_id < 10;
7 rows created.
SQL> commit;
Commit complete.
马上可以在MySQL数据库中进行查询验证!
mysql> select * from t_mysql;
+----+------+
| id | col2 |
+----+------+
| 1 | 10 |
| 2 | 10 |
| 3 | 3 |
| 4 | 2 |
| 5 | 2 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
+----+------+
9 rows in set (0.00 sec
在2010年就完成了这个工具的研发,并在多次去IOE数据迁移中使用它来做增量数据同步,以节约停机维护的时间。
【版权声明】本资源为墨天轮用户上传,如果您发现资源涉嫌侵权,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
贡献排行榜




