- Published on
DataX 数据同步工具使用与任务配置指南
- Authors
- Name
- Liant
DataX
阿里开源的离线数据同步工具
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS,databend 等各种异构数据源之间高效的数据同步功能。
安装
下载安装包,安装好执行环境之后,就可以使用了。安装比较简单。
使用
DataX 是一个命令行工具,并不具备其他的管理功能(如任务调度,数据源等)。
执行一个同步命令,例:
python datax.py ./stream2stream.json
其中 stream2stream.json
为任务文件,datax读取任务文件,即可开始同步任务。
1. 编写任务文件
job.json 文件示例
{
"job": {
"setting": {
"speed": {
"channel": 1
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"column": [
{
"value": "DataX",
"type": "string"
},
{
"value": 19890604,
"type": "long"
},
{
"value": "1989-06-04 00:00:00",
"type": "date"
},
{
"value": true,
"type": "bool"
},
{
"value": "test",
"type": "bytes"
}
],
"sliceRecordCount": 100000
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"print": false,
"encoding": "UTF-8"
}
}
}
]
}
}
2. 执行任务
任务是命令行工具,执行之后会一直在终端执行,做增量任务则需要做响应调整
cd {YOUR_DATAX_DIR_BIN}
python datax.py ./job.json

任务结束:
2023-12-02 10:39:56.362 [job-0] INFO JobContainer -
任务启动时刻 : 2023-12-02 10:38:56
任务结束时刻 : 2023-12-02 10:39:56
任务总计耗时 : 60s
任务平均流量 : 42.32KB/s
记录写入速度 : 1666rec/s
读出记录总数 : 100000
读写失败总数 : 0

支持的数据源
DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图,详情请点击:DataX数据源参考指南
类型 | 数据源 | Reader(读) | Writer(写) | 文档 |
---|---|---|---|---|
RDBMS 关系型数据库 | MySQL | √ | √ | 读 、写 |
Oracle | √ | √ | 读 、写 | |
OceanBase | √ | √ | 读 、写 | |
SQLServer | √ | √ | 读 、写 | |
PostgreSQL | √ | √ | 读 、写 | |
DRDS | √ | √ | 读 、写 | |
Kingbase | √ | √ | 读 、写 | |
通用RDBMS(支持所有关系型数据库) | √ | √ | 读 、写 | |
阿里云数仓数据存储 | ODPS | √ | √ | 读 、写 |
ADB | √ | 写 | ||
ADS | √ | 写 | ||
OSS | √ | √ | 读 、写 | |
OCS | √ | 写 | ||
Hologres | √ | 写 | ||
AnalyticDB For PostgreSQL | √ | 写 | ||
阿里云中间件 | datahub | √ | √ | 读 、写 |
SLS | √ | √ | 读 、写 | |
图数据库 | 阿里云 GDB | √ | √ | 读 、写 |
Neo4j | √ | 写 | ||
NoSQL数据存储 | OTS | √ | √ | 读 、写 |
Hbase0.94 | √ | √ | 读 、写 | |
Hbase1.1 | √ | √ | 读 、写 | |
Phoenix4.x | √ | √ | 读 、写 | |
Phoenix5.x | √ | √ | 读 、写 | |
MongoDB | √ | √ | 读 、写 | |
Cassandra | √ | √ | 读 、写 | |
数仓数据存储 | StarRocks | √ | √ | 读 、写 |
ApacheDoris | √ | 写 | ||
ClickHouse | √ | √ | 读 、写 | |
Databend | √ | 写 | ||
Hive | √ | √ | 读 、写 | |
kudu | √ | 写 | ||
selectdb | √ | 写 | ||
无结构化数据存储 | TxtFile | √ | √ | 读 、写 |
FTP | √ | √ | 读 、写 | |
HDFS | √ | √ | 读 、写 | |
Elasticsearch | √ | 写 | ||
时间序列数据库 | OpenTSDB | √ | 读 | |
TSDB | √ | √ | 读 、写 | |
TDengine | √ | √ | 读 、写 |
DataX-Web (GUI 工具)
DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的 操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选择数据源即可创建数据同步任务,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,RDBMS数据源可批量创建数据同步任务,支持实时查看数据同步进度及日志并提供终止同步功能,集成并二次开发xxl-job可根据时间、自增主键增量同步数据。
任务"执行器"支持集群部署,支持执行器多节点路由策略选择,支持超时控制、失败重试、失败告警、任务依赖,执行器CPU.内存.负载的监控等等。后续还将提供更多的数据源支持、数据转换UDF、表结构同步、数据同步血缘等更为复杂的业务场景。
开源的DataX的GUI工具,主要功能: 构建任务文件,任务调度.

使用
使用步骤:
- 添加项目
- 添加数据源
- 添加DataX任务模板(任务调度)
- 构建任务(需要指定数据源,指定任务模板)
- 任务管理(任务执行情况)
这五个步骤即可构建一个可以运行的任务.
添加数据源
支持的数据源有限,其他的任务类型只能手动编写任务文件.然后构建任务
支持的数据源列表:
- mysql
- oracle
- postgresql
- sqlserver
- hive
- hbase
- mongodb
- clickhouse

构建任务
生成可以执行的任务文件
构建任务分为四步:
- 来源数据库
- 目标数据库
- 字段映射
- 指定调度模板生成任务

支持比较简单的任务文件生成,例如:
{
"job": {
"setting": {
"speed": {
"channel": 1,
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "username",
"password": "passwd",
"column": [
"`id`",
"`clue_sn`",
"`clue_type`",
"`name`",
"`phone`",
"`qq`",
"`wechat`"
],
"splitPk": "",
"connection": [
{
"table": [
"scrm_clue_list"
],
"jdbcUrl": [
"jdbc:mysql://localhost:3306/scrm"
]
}
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"username": "username2",
"password": "passwd2",
"column": [
"`id`",
"`clue_sn`",
"`clue_type`",
"`name`",
"`phone`",
"`qq`",
"`wechat`"
],
"connection": [
{
"table": [
"scrm_clue_list"
],
"jdbcUrl": "jdbc:mysql://localhost:3306/test"
}
]
}
}
}
]
}
}
如果需要更详细的设置需要查看官方文档
任务管理
对构建的任务的调度,web可以配置多个执行器,执行器即为任务调度.
- 可以配置项目的调度参数

- 另外可以查看日志执行情况


结论
是一个离线数据同步工具.功能单一,只能从一个数据源到另外一个数据源.并不直接支持数据的CDC.
构建任务较复杂,需要手动编写任务文件.