一、全量同步
本文以mysql -> mysql为示例:
本次测试的表为mysql的系统库-sakila中的actor表,由于不支持目的端自动建表,此处预先建立目的表:
CREATE TABLE `actor_copy` ( `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `first_name` varchar(45) NOT NULL, `last_name` varchar(45) NOT NULL, `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`actor_id`), KEY `idx_actor_last_name` (`last_name`) ) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8;
打开dataX的mysqlreader以及mysqlwriter文档,编写JSON配置文件:(此处经过试验,即使是自增主键,同样需要配置,否则会报输入输出不匹配的错),加上JSON配置文件的x权限:
{ "job": { "setting": { "speed": { "channel": 3 }, "errorLimit": { "record": 0, "percentage": 0.02 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "Zcc170821#", "column": [ "actor_id", "first_name", "last_name", "last_update" ], "splitPk": "actor_id", "connection": [ { "table": [ "actor" ], "jdbcUrl": [ "jdbc:mysql://192.168.19.129:3306/sakila" ] } ] } }, "writer": { "name": "mysqlwriter", "parameter": { "writeMode": "insert", "username": "root", "password": "Zcc170821#", "column": [ "actor_id", "first_name", "last_name", "last_update" ], "preSql": [ "truncate table actor_copy" ], "connection": [ { "jdbcUrl": "jdbc:mysql://192.168.19.129:3306/sakila", "table": [ "actor_copy" ] } ] } } } ] } }
这样,单表的最基本全量同步就完成了!
二、增量同步
增量同步的核心思路是时间戳,需要同步的表中要有Update_time字段:
参考实现:https://www.jianshu.com/p/34b3a084d7d8
https://blog.youkuaiyun.com/quadimodo/article/details/82186788
转载于:https://www.cnblogs.com/jiangbei/p/11258267.html