DataX 是阿里巴巴集團(tuán)內(nèi)被廣泛使用的離線數(shù)據(jù)同步工具/平臺,實現(xiàn)包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各種異構(gòu)數(shù)據(jù)源之間高效的數(shù)據(jù)同步功能。
其官網(wǎng)地址:https://github.com/alibaba/DataX
快速上手步驟
1.下載 DataX:DataX 下載地址
2.配置任務(wù) Json
下載的 DataX 的目錄:

配置 datax/job 文件夾下的 Json:
{
"job":{
"content":[
{
"reader":{
"name":"mysqlreader",
"parameter":{
"column":[
"id",
"resource",
"remark"
],
"connection":[
{
"jdbcUrl":[
"jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8"
],
"table":[
"school_menu"
]
}
],
"password":"123456",
"username":"root"
}
},
"writer":{
"name":"mysqlwriter",
"parameter":{
"column":[
"id",
"resource",
"remark"
],
"connection":[
{
"jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8",
"table":[
"school_test"
]
}
],
"password":"123456",
"username":"root"
}
}
}
],
"setting":{
"speed":{
"channel":"1"
}
}
}
}
任務(wù) Json 由三部分組成,分別是讀,寫和通用配置。
Reader 部分常用參數(shù):
| 參數(shù)名 | 解釋 | 備注 |
|---|---|---|
| name | 與要讀取的數(shù)據(jù)庫一致 | 字符串 |
| jdbcUrl | 數(shù)據(jù)庫鏈接 | 數(shù)組,會自動選擇一個合法的鏈接,可以填寫連接附件控制信息 |
| username | 數(shù)據(jù)庫用戶名 | 字符串,數(shù)據(jù)庫的用戶名 |
| password | 數(shù)據(jù)庫密碼 | 字符串,數(shù)據(jù)庫的密碼 |
| table | 要同步的表名 | 數(shù)組,需保證表結(jié)構(gòu)一致 |
| column | 要同步的列名 | 數(shù)組 |
| where | 選取的條件 | 字符串 |
| querySql | 自定義查詢語句 | 會自動忽略上述的同步條件 |
Writer 部分常用參數(shù):
| 參數(shù)名 | 解釋 | 備注 |
|---|---|---|
| name | 與要讀取的數(shù)據(jù)庫一致 | 字符串 |
| jdbcUrl | 數(shù)據(jù)庫鏈接 | 字符串,可以填寫連接附件控制信息 |
| username | 數(shù)據(jù)庫用戶名 | 字符串,數(shù)據(jù)庫的用戶名 |
| password | 數(shù)據(jù)庫密碼 | 字符串,數(shù)據(jù)庫的密碼 |
| table | 要同步的表名 | 數(shù)組,需保證表結(jié)構(gòu)一致 |
| column | 列名可以不對應(yīng),但是類型和總的個數(shù)要一致 | 數(shù)組,需保證表結(jié)構(gòu)一致 |
| preSql | 寫入前執(zhí)行的語句 | 數(shù)組,比如清空表等 |
| postSql | 寫入后執(zhí)行的語句 | 數(shù)組 |
| writeMode | 寫入方式,默認(rèn)為insert | insert/replace/update |
- job.setting.speed (流量控制)
- Job 支持用戶對速度的自定義控制,channel 的值可以控制同步時的并發(fā)數(shù),byte 的值可以控制同步時的速度
- job.setting.errorLimit (臟數(shù)據(jù)控制)
- Job 支持用戶對于臟數(shù)據(jù)的自定義監(jiān)控和告警,包括對臟數(shù)據(jù)最大記錄數(shù)閾值(record 值)或者臟數(shù)據(jù)占比閾值(percentage 值),當(dāng) Job 傳輸過程出現(xiàn)的臟數(shù)據(jù)大于用戶指定的數(shù)量/百分比,DataX Job 報錯退出。
命令行 cd 到 datax/bin 目錄下,執(zhí)行 python datax.py ../job/mysqltomysql.json:

然后看到 school_test 表的數(shù)據(jù):

到此已經(jīng)成功了。