1、根據日期進行增量數據抽取
1.頁面任務配置
打開菜單任務管理頁面,選擇添加任務mysql
按下圖中5個步驟進行配置git
- 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時間轉換函數來處理
注意,注意,注意: 配置必定要仔細看文檔(後面咱們也會對這塊配置進行優化,避免你們犯錯)github
2.JSON配置
datax.jsonweb
{ "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,注意字段必定要一致。sql
-
2.若是任務配置頁面,時間類型選擇爲時間戳可是數據庫時間格式不是時間戳,例如是:2019-11-26 11:40:57 此時能夠用FROM_UNIXTIME(${lastTime})進行轉換。數據庫
select * from test_list where operationDate >= FROM_UNIXTIME(${lastTime}) and operationDate < FROM_UNIXTIME(${currentTime})
2、根據自增Id進行增量數據抽取
1.頁面任務配置
打開菜單任務管理頁面,選擇添加任務json
按下圖中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.jsoncode
{ "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,注意字段必定要一致。
3、JVM啓動參數配置
此選擇爲非必選,能夠配置DataX啓動時JVM的參數,具體配置不作詳解。
- JVM啓動參數拼接結果爲: -j "-Xms2G -Xmx2G"
4、常見問題
請查看issue列表或者提issue說明問題,咱們會盡快回復。