一、依据日期进行增量数据抽取
1.页面工作配置
关上菜单工作治理页面,抉择增加工作
按下图中5个步骤进行配置
- 1.工作类型选DataX工作
- 2.辅助参数抉择工夫自增
- 3.增量开始工夫抉择,即sql中查问工夫的开始工夫,用户应用此选项不便第一次的全量同步。第一次同步实现后,该工夫被更新为上一次的工作触发工夫,工作失败不更新。
- 4.增量工夫字段,-DlastTime='%s' -DcurrentTime='%s' 先来解析下这段字符串
1.-D是DataX参数的标识符,必配2.-D前面的lastTime和currentTime是DataX json中where条件的工夫字段标识符,必须和json中的变量名称保持一致3.='%s'是我的项目用来去替换工夫的占位符,比配并且格局要完全一致4.留神-DlastTime='%s'和-DcurrentTime='%s'两头有一个空格,空格必须保留并且是一个空格
- 5.工夫格局,能够抉择本人数据库中工夫的格局,也能够通过json中配置sql工夫转换函数来解决
留神,留神,留神: 配置肯定要认真看文档(前面咱们也会对这块配置进行优化,防止大家犯错)
2.JSON配置
datax.json
{ "job": { "setting": { "speed": { "channel": 16 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "splitPk": "id", "username": "root", "password": "root", "column": [ "*" ], "connection": [ { "jdbcUrl": [ "jdbc:mysql://localhost:3306/test?characterEncoding=utf8" ],"querySql": [ "select * from test_list where operationDate >= FROM_UNIXTIME(${lastTime}) and operationDate < FROM_UNIXTIME(${currentTime})" ] } ] } }, "writer": { "name": "mysqlwriter", "parameter": { "username": "root", "password": "123456", "column": [ "*" ], "batchSize": "4096", "connection": [ { "jdbcUrl": "jdbc:mysql://localhost:3307/test?characterEncoding=utf8", "table": [ "test_list" ] } ] } } } ] }}
querySql解析
select * from test_list where operationDate >= ${lastTime} and operationDate < ${currentTime}
- 1.此处的关键点在${lastTime},${currentTime},${}是DataX动静参数的固定格局,lastTime,currentTime就是咱们页面配置中
-DlastTime='%s' -DcurrentTime='%s'中的lastTime,currentTime,留神字段肯定要统一。
- 2.如果工作配置页面,工夫类型抉择为工夫戳然而数据库工夫格局不是工夫戳,例如是:2019-11-26 11:40:57 此时能够用FROM_UNIXTIME(${lastTime})进行转换。
select * from test_list where operationDate >= FROM_UNIXTIME(${lastTime}) and operationDate < FROM_UNIXTIME(${currentTime})
二、依据自增Id进行增量数据抽取
1.页面工作配置
关上菜单工作治理页面,抉择增加工作
按下图中4个步骤进行配置
- 1.工作类型选DataX工作
- 2.辅助参数抉择主键自增
- 3.增量主键开始ID抉择,即sql中查问ID的开始ID,用户应用此选项不便第一次的全量同步。第一次同步实现后,该ID被更新为上一次的工作触发时最大的ID,工作失败不更新。
- 4.增量工夫字段,-DstartId='%s' -DendId='%s' 先来解析下这段字符串
1.-D是DataX参数的标识符,必配2.-D前面的startId和endId是DataX json中where条件的id字段标识符,必须和json中的变量名称保持一致3.='%s'是我的项目用来去替换工夫的占位符,比配并且格局要完全一致4.留神-DstartId='%s'和-DendId='%s' 两头有一个空格,空格必须保留并且是一个空格5.reader数据源,抉择工作同步的读数据源6.配置reader数据源中须要同步数据的表名及该表的主键
留神,留神,留神: 肯定要认真看文档(后续会对这块配置进行优化,防止大家犯错)
2.JSON配置
datax.json
{ "job": { "setting": { "speed": { "channel": 3, "byte": 1048576 }, "errorLimit": { "record": 0, "percentage": 0.02 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "yRjwDFuoPKlqya9h9H2Amg==", "password": "yRjwDFuoPKlqya9h9H2Amg==", "splitPk": "", "connection": [ { "querySql": [ "select * from job_log where id>= ${startId} and id< ${endId}" ], "jdbcUrl": [ "jdbc:mysql://localhost:3306/datax_web" ] } ] } }, "writer": { "name": "mysqlwriter", "parameter": { "username": "mCFD+p1IMsa0rHicbQohcA==", "password": "PhYxJmA/nuBJD1OxKTRzZH8sxuRddOv83hdqDOVR+i0=", "column": [ "`id`", "`job_group`", "`job_id`", "`job_desc`", "`executor_address`", "`executor_handler`", "`executor_param`", "`executor_sharding_param`", "`executor_fail_retry_count`", "`trigger_time`", "`trigger_code`", "`trigger_msg`", "`handle_time`", "`handle_code`", "`handle_msg`", "`alarm_status`", "`process_id`", "`max_id`" ], "connection": [ { "table": [ "job_log" ], "jdbcUrl": "jdbc:mysql://47.98.125.243:3306/datax_web" } ] } } } ] } }
querySql解析
select * from job_log where id>= ${startId} and id< ${endId}
- 1.此处的关键点在${startId},${endId},${}是DataX动静参数的固定格局,startId,endId就是咱们页面配置中
-DstartId='%s' -DendId='%s'中的startId,endId,留神字段肯定要统一。
三、JVM启动参数配置
此抉择为非必选,能够配置DataX启动时JVM的参数,具体配置不做详解。
- JVM启动参数拼接后果为: -j "-Xms2G -Xmx2G"
四、常见问题
请查看issue列表或者提issue阐明问题,咱们会尽快回复。
https://github.com/WeiYe-Jing...