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報錯退出。