DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

DataX工具是用json文件作为配置文件的,根据官方提供文档我们构建Json文件如下:

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "123456", 
                        "column": ["name","age"],
                        "where": "age<100",
                        "connection": [
                            {
                                "table": [
                                    "person"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "username": "root",
                        "password": "123456",
                        "column": ["name","age_true"],
                        "connection": [
                            {
                                "table": [
                                    "person"
                                ],
                                "jdbcUrl":"jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8"                             
                            }
                        ]  
                    }
                }
            }
        ],
        "setting": {
                 "speed": {
                         "channel": 1,
                         "byte": 104857600
                 },
                 "errorLimit": {
                         "record": 10,
                         "percentage": 0.05
      }
    }
}

它由三部分组成,分别是读插件,写插件和通用配置。

1、Reader插件即读插件,常用参数如下:

name: 与要读取的数据库一致,字符串

jdbcUrl: 数据库链接 ,数组

username :数据库用户名,字符串

password:数据库密码, 字符串

table :要同步的表名,数组,需保证表结构一致

column:     要同步的列名, 数组

where :选取的条件,字符串

querySql:自定义查询语句, 会自动忽略上述的同步条件

 

 2、Writer插件即写插件,常用参数如下:

name:与要读取的数据库一致 ,字符串

jdbcUrl:数据库链接,字符串

username:数据库用户名         字符串,数据库的用户名

password: 数据库密码 ,字符串,数据库的密码

table:要同步的表名,数组,需保证表结构一致

column :列名可以不对应,但是类型和总的个数要一致     数组,需保证表结构一致

preSql: 写入前执行的语句,数组,比如清空表等,如TRUNCATE TABLE @table(或指定表名)

postSql : 写入后执行的语句 ,数组

writeMode:写入方式,默认为insert       insert/replace/update

session:DataX在获取Mysql连接时,执行session指定的SQL语句,修改当前connection session属性

batchSize 默认值:1024,一次性批量提交的记录数大小,该值可以极大减少DataX与Mysql的网络交互次数,并提升整体吞吐量。但是该值设置过大可能会造成DataX运行进程OOM情况。

 

3、通用配置:

(1)、job.setting.speed(流量控制)

Job支持用户对速度的自定义控制,channel的值可以控制同步时的并发数,byte的值可以控制同步时的速度

(2)、job.setting.errorLimit(脏数据控制)

Job支持用户对于脏数据的自定义监控和告警,包括对脏数据最大记录数阈值(record值)或者脏数据占比阈值(percentage值),当Job传输过程出现的脏数据大于用户指定的数量/百分比,DataX Job报错退出。