小工具知识网

当前位置: 首页 > 行业知识 > 数据库之间数据迁移工具datax

行业知识

数据库之间数据迁移工具datax

2026-11-06 03:08:43 来源:互联网转载

简介

DataX ���阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。

个人发现特点:数据量超过千万的迁移速度回加快(50000/s),低于千万的速度只有4000/s左右,目前还没发现原因

 

特点

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时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√√读 、写

前提条件

  • JDK(1.8以上,推荐1.8)
  • Python(2或3都可以)
  • Apache Maven 3.x (Compile DataX)

    原生安装及使用

    安装

    安装包下载地址

    下载后解压至本地某个目录,进入bin目录,即可运行同步作业:

    $ cd  {YOUR_DATAX_HOME}/bin$ python datax.py {YOUR_JOB.json}

     使用

    配置示例:从stream读取数据并打印到控制台

    • 第一步、创建作业的配置文件(json格式)

      可以通过命令查看配置模板: python datax.py -r {YOUR_READER} -w {YOUR_WRITER}

      $ cd  {YOUR_DATAX_HOME}/bin$  python datax.py -r streamreader -w streamwriterDataX (UNKNOWN_DATAX_VERSION), From Alibaba !Copyright (C) 2010-2015, Alibaba Group. All Rights Reserved.Please refer to the streamreader document:    https://github.com/alibaba/DataX/blob/master/streamreader/doc/streamreader.md Please refer to the streamwriter document:     https://github.com/alibaba/DataX/blob/master/streamwriter/doc/streamwriter.md  Please save the following configuration as a json file and  use     python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json to run the job.{    "job": {        "content": [            {                "reader": {                    "name": "streamreader",                     "parameter": {                        "column": [],                         "sliceRecordCount": ""                    }                },                 "writer": {                    "name": "streamwriter",                     "parameter": {                        "encoding": "",                         "print": true                    }                }            }        ],         "setting": {            "speed": {                "channel": ""            }        }    }}

      根据模板配置json如下:

      #stream2stream.json{  "job": {    "content": [      {        "reader": {          "name": "streamreader",          "parameter": {            "sliceRecordCount": 10,            "column": [              {                "type": "long",                "value": "10"              },              {                "type": "string",                "value": "hello,你好,世界-DataX"              }            ]          }        },        "writer": {          "name": "streamwriter",          "parameter": {            "encoding": "UTF-8",            "print": true          }        }      }    ],    "setting": {      "speed": {        "channel": 5       }    }  }}
    • 第二步:启动DataX

      $ cd {YOUR_DATAX_DIR_BIN}$ python datax.py ./stream2stream.json 

      同步结束,显示日志如下:

      ...2015-12-17 11:20:25.263 [job-0] INFO  JobContainer - 任务启动时刻                    : 2015-12-17 11:20:15任务结束时刻                    : 2015-12-17 11:20:25任务总计耗时                    :                 10s任务平均流量                    :              205B/s记录写入速度                    :              5rec/s读出记录总数                    :                  50读写失败总数                    :                   0

      data-web本地部署

      前提是安装了datax

      下载源码   https://github.com/WeiYe-Jing/datax-web.git

      目录结构如下

      修改admin配置文件

      修改datax_admin下resources/application.yml文件

      #数据源  datasource:    username: root    password: root    url: jdbc:mysql://localhost:3306/datax_web?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8    driver-class-name: com.mysql.jdbc.Driver

       修改数据源配置,目前仅支持mysql

      # 配置mybatis-plus打印sql日志logging:  level:    com.wugui.datax.admin.mapper: error  path: ./data/applogs/admin

      修改日志路径path

      # datax-web email  mail:    host: smtp.qq.com    port: 25    username: xxx@qq.com    password: xxx    properties:      mail:        smtp:          auth: true          starttls:            enable: true            required: true        socketFactory:          class: javax.net.ssl.SSLSocketFactory

      修改邮件发送配置(不需要可以不修改)

      修改excutor配置文件

      修改datax_executor下resources/application.yml文件 

      # log configlogging:  config: classpath:logback.xml  path: ./data/applogs/executor/jobhandler

       修改日志路径path

      datax:  job:    admin:      ### datax-web admin address      addresses: http://127.0.0.1:8080    executor:      appname: datax-executor      ip:      port: 9999      ### job log path      logpath: ./data/applogs/executor/jobhandler      ### job log retention days      logretentiondays: 30  executor:    jsonpath: /Users/mac/data/applogs  pypath: /Users/mac/tools/datax/bin/datax.py

      修改datax.job配置

      • admin.addresses datax_admin部署地址,如调度中心集群部署存在多个地址则用逗号分隔,执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";
      • executor.appname 执行器AppName,每个执行器机器集群的唯一标示,执行器心跳注册分组依据;
      • executor.ip 默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
      • executor.port 执行器Server端口号,默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
      • executor.logpath 执行器运行日志文件存储磁盘路径,需要对该路径拥有读写权限;
      • executor.logretentiondays 执行器日志文件保存天数,过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
      • executor.jsonpath datax json临时文件保存路径
      • pypath DataX启动脚本地址,例如:xxx/datax/bin/datax.py 如果系统配置DataX环境变量(DATAX_HOME),logpath、jsonpath、pypath可不配,log文件和临时json存放在环境变量路径下。

        启动项目

        本地idea开发环境

        • 1.运行datax_admin下 DataXAdminApplication
        • 2.运行datax_executor下 DataXExecutorApplication

          admin启动成功后日志会输出三个地址,两个接口文档地址,一个前端页面地址

          启动成功

          启动成功后打开页面(默认管理员用户名:admin 密码:123456) http://localhost:8080/index.html#/dashboard 

          data-web的docker安装

          前提条件安装好mysql

          docker run -d --name datax-admin -p 2020:2020  -v /newdisk/datax/log/datax-admin.log:/tmp/datax-admin.log hametan/datax-web:2.1.2 java -jar datax-admin-2.1.2.jar --PORT=2020 --MYSQL_SERVICE_HOST=192.168.31.131 --MYSQL_SERVICE_PORT=3306 --MYSQL_USER=root --MYSQL_PASSWORD=123456 --DB_DATABASE=dataxdocker run -d --name datax-executor -p 2021:2021  -v /newdisk/datax/log/:/home/applogs/executor/jobhandler/ hametan/datax-web:2.1.2 java -jar datax-executor-2.1.2.jar --PORT=2021 --ADDRESSES=http://192.168.31.131:2020

上一篇:榨的正确发音教程,轻松掌握发音技巧

下一篇:宝塔面板域名解析详解,轻松搞定域名指向!