签到成功

知道了

CNDBA社区CNDBA社区

使用datax进行增量复制

2021-09-23 21:34 1170 0 原创 oracle
作者: hbhe0316

1.环境准备

源端IP 192.168.56.199
源端库 testdb
源端表 t1
目标IP 192.168.56.199
目标库 testdb1
目标表 t1http://www.cndba.cn/hbhe0316/article/4743http://www.cndba.cn/hbhe0316/article/4743

http://www.cndba.cn/hbhe0316/article/4743
http://www.cndba.cn/hbhe0316/article/4743

2 驱动包准备

由于Mysql版本为8.0.20,需要下载相应的JDBC驱动包
驱动包为:mysql-connector-java-8.0.20.jar

http://www.cndba.cn/hbhe0316/article/4743
http://www.cndba.cn/hbhe0316/article/4743
http://www.cndba.cn/hbhe0316/article/4743

3. 在源端创建库、创建表、插入数据

CREATE DATABASE testdb;
use testdb;
CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `deg` varchar(100) DEFAULT NULL,
  `salary` int(11) DEFAULT NULL,
  `dept` varchar(10) DEFAULT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_delete` bigint(20) DEFAULT '1'
) ENGINE=InnoDB


insert  into `t1`(`id`,`name`,`deg`,`salary`,`dept`,`create_time`,`update_time`,`is_delete`) values (1201,'gopal','manager',50000,'TP','2018-06-17 18:54:32','2019-01-17 11:19:32',1),(1202,'manishahello','Proof reader',50000,'TPP','2018-06-15 18:54:32','2018-06-17 18:54:32',0),(1203,'khalillskjds','php dev',30000,'AC','2018-06-17 18:54:32','2019-03-14 09:18:27',1),(1204,'prasanth_xxx','php dev',30000,'AC','2018-06-17 18:54:32','2019-04-07 09:09:24',1),(1205,'kranthixxx','admin',20000,'TP','2018-06-17 18:54:32','2018-12-08 11:50:33',0),(1206,'garry','manager',50000,'TPC','2018-12-10 21:41:09','2018-12-10 21:41:09',1),(1207,'oliver','php dev',2000,'AC','2018-12-15 13:49:13','2018-12-15 13:49:13',1),(1208,'hello','phpDev',200,'TP','2018-12-16 09:41:48','2018-12-16 09:41:48',1),(1209,'ABC','HELLO',300,NULL,'2018-12-16 09:42:04','2018-12-16 09:42:24',1),(1210,'HELLO','HELLO',5800,'TP','2019-01-24 09:02:43','2019-01-24 09:02:43',1),(1211,'WORLD','TEST',8800,'AC','2019-01-24 09:03:15','2019-01-24 09:03:15',1),(1212,'sdfs','sdfsdf',8500,'AC','2019-03-13 22:01:38','2019-03-13 22:01:38',1),(1213,NULL,'sdfsdf',9800,'sdfsdf','2019-03-14 09:08:31','2019-03-14 09:08:54',1),(1214,'xxx','sdfsdf',9500,NULL,'2019-03-14 09:13:32','2019-03-14 09:13:44',0),(1215,'sdfsf','sdfsdfsdf',9870,'TP','2019-04-07 09:10:39','2019-04-07 09:11:18',0),(1216,'hello','HELLO',5600,'AC','2019-04-07 09:37:05','2019-04-07 09:37:05',1),(1217,'HELLO2','hello2',7800,'TP','2019-04-07 09:37:40','2019-04-07 09:38:17',1);
mysql> SELECT * FROM t1;
+------+--------------+--------------+--------+--------+---------------------+---------------------+-----------+
| id   | name         | deg          | salary | dept   | create_time         | update_time         | is_delete |
+------+--------------+--------------+--------+--------+---------------------+---------------------+-----------+
| 1201 | gopal        | manager      |  50000 | TP     | 2018-06-17 18:54:32 | 2019-01-17 11:19:32 |         1 |
| 1202 | manishahello | Proof reader |  50000 | TPP    | 2018-06-15 18:54:32 | 2018-06-17 18:54:32 |         0 |
| 1203 | khalillskjds | php dev      |  30000 | AC     | 2018-06-17 18:54:32 | 2019-03-14 09:18:27 |         1 |
| 1204 | prasanth_xxx | php dev      |  30000 | AC     | 2018-06-17 18:54:32 | 2019-04-07 09:09:24 |         1 |
| 1205 | kranthixxx   | admin        |  20000 | TP     | 2018-06-17 18:54:32 | 2018-12-08 11:50:33 |         0 |
| 1206 | garry        | manager      |  50000 | TPC    | 2018-12-10 21:41:09 | 2018-12-10 21:41:09 |         1 |
| 1207 | oliver       | php dev      |   2000 | AC     | 2018-12-15 13:49:13 | 2018-12-15 13:49:13 |         1 |
| 1208 | hello        | phpDev       |    200 | TP     | 2018-12-16 09:41:48 | 2018-12-16 09:41:48 |         1 |
| 1209 | ABC          | HELLO        |    300 | NULL   | 2018-12-16 09:42:04 | 2018-12-16 09:42:24 |         1 |
| 1210 | HELLO        | HELLO        |   5800 | TP     | 2019-01-24 09:02:43 | 2019-01-24 09:02:43 |         1 |
| 1211 | WORLD        | TEST         |   8800 | AC     | 2019-01-24 09:03:15 | 2019-01-24 09:03:15 |         1 |
| 1212 | sdfs         | sdfsdf       |   8500 | AC     | 2019-03-13 22:01:38 | 2019-03-13 22:01:38 |         1 |
| 1213 | NULL         | sdfsdf       |   9800 | sdfsdf | 2019-03-14 09:08:31 | 2019-03-14 09:08:54 |         1 |
| 1214 | xxx          | sdfsdf       |   9500 | NULL   | 2019-03-14 09:13:32 | 2019-03-14 09:13:44 |         0 |
| 1215 | sdfsf        | sdfsdfsdf    |   9870 | TP     | 2019-04-07 09:10:39 | 2019-04-07 09:11:18 |         0 |
| 1216 | hello        | HELLO        |   5600 | AC     | 2019-04-07 09:37:05 | 2019-04-07 09:37:05 |         1 |
| 1217 | HELLO2       | hello2       |   7800 | TP     | 2019-04-07 09:37:40 | 2019-04-07 09:38:17 |         1 |
+------+--------------+--------------+--------+--------+---------------------+---------------------+-----------+
17 rows in set (0.00 sec)

4.在目标端创建库、创建表

CREATE DATABASE testdb;
use testdb;
CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `deg` varchar(100) DEFAULT NULL,
  `salary` int(11) DEFAULT NULL,
  `dept` varchar(10) DEFAULT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_delete` bigint(20) DEFAULT '1'
) ENGINE=InnoDB

5.新建mysql2msql的json,此为全量同步

[root@db01 job]# cat mysql2mysql.json 
{
    "job": {
        "setting": {
            "speed": {
                 "channel":1
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "wwwwww",
                        "connection": [
                            {
                                "querySql": [
                                    "select id,name,deg,salary,create_time,update_time from t1;"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://192.168.56.199:3306/testdb"
                                ]
                            }
                        ]
                    }
                },
                  "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "root",
                        "password": "wwwwww",
                        "column": [
                            "id",
                            "name",
                                                        "deg",
                                                        "salary","create_time","update_time"
                        ],
                        "session": [
                                "set session sql_mode='ANSI'"
                        ],
                        "preSql": [
                            "delete from t1"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://192.168.56.199:3306/testdb1?useUnicode=true&characterEncoding=utf-8",
                                "table": [
                                    "t1"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}

6. 执行如下命令,完成全量数据导入

[root@db01 bin]# python datax.py ../job/mysql2mysql.json

7. 同步增量数据

在原表插入数据
mysql> insert  into `t1`(`id`,`name`,`deg`,`salary`,`dept`,`create_time`,`update_time`,`is_delete`) values (12012,'gopal11','manager11',500000,'TP',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,1);

8.在datax端执行命令

Mysql2mysql增量json文件http://www.cndba.cn/hbhe0316/article/4743http://www.cndba.cn/hbhe0316/article/4743

http://www.cndba.cn/hbhe0316/article/4743

[root@db01 bin]#  cat ../job/mysql2mysql.json 
{
    "job": {
        "setting": {
            "speed": {
                 "channel":1
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "wwwwww",
                        "connection": [
                            {
                                "querySql": [
                                    "select id,name,deg,salary,create_time,update_time from t1 where create_time > '${start_time}' and create_time < '${end_time}';"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://192.168.56.199:3306/testdb"
                                ]
                            }
                        ]
                    }
                },
                  "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "root",
                        "password": "wwwwww",
                        "column": [
                            "id",
                            "name",
                                                        "deg",
                                                        "salary","create_time","update_time"
                        ],
                        "session": [
                                "set session sql_mode='ANSI'"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://192.168.56.199:3306/testdb1?useUnicode=true&characterEncoding=utf-8",
                                "table": [
                                    "t1"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}

9.执行命令完成增量同步

[root@db01 bin]# python datax.py ../job/mysql2mysql.json -p "-Dstart_time='2021-07-22 00:00:00' -Dend_time='2021-07-22 23:59:59'"

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux,oracle

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1391744次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ