Published on

DataX 数据同步工具使用与任务配置指南

Authors
  • avatar
    Name
    Liant
    Twitter

DataX

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-web

使用

使用步骤:

  1. 添加项目
  2. 添加数据源
  3. 添加DataX任务模板(任务调度)
  4. 构建任务(需要指定数据源,指定任务模板)
  5. 任务管理(任务执行情况)

这五个步骤即可构建一个可以运行的任务.

添加数据源

支持的数据源有限,其他的任务类型只能手动编写任务文件.然后构建任务

支持的数据源列表:

  • 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.

构建任务较复杂,需要手动编写任务文件.