DataX 是阿里巴巴开源的一款异构数据源离线同步工具,支持多种数据源之间的高效数据同步。在 Ubuntu 系统上安装 DataX 主要包括以下几个步骤:


一、前提条件

  • 安装 Java(JDK 1.8 或以上)

  • 安装git

  • 安装 Maven(用于编译,可选,如果直接使用官方打包好的版本则不需要)


二、安装 JDK(如未安装)

可以使用apt也可以从镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/Adoptium/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u472b08.tar.gz

# 安装 OpenJDK 8(推荐)或更高版本
sudo apt update
sudo apt install openjdk-8-jdk -y

# 验证安装
java -version

确保输出类似:

openjdk version "1.8.0_362"

三、下载 DataX

官方 GitHub 地址:https://github.com/alibaba/DataX

你可以选择:

方法 1:直接下载官方编译好的 tar.gz 包

# 下载(以 v3.0 为例)
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz

# 解压
tar -zxvf datax.tar.gz

# 进入目录
cd datax

注意:该链接是官方提供的预编译包,适用于大多数 Linux 系统。

方法 2:从源码编译

# 安装 git 和 maven
sudo apt install git maven -y

# 克隆仓库
git clone https://github.com/alibaba/DataX.git

# 进入目录并编译(耗时较长)
cd DataX
mvn -U clean package assembly:assembly -Dmaven.test.skip=true

编译成功后,会在 target/datax/datax/ 目录下生成可执行文件。


四、编写自己的同步任务

DataX 使用 JSON 配置文件定义数据同步任务。例如,从 MySQL 同步到 text文件:

1、配置文件:

cat > mysql_to_txt_finance_stock_indx_data_di.json << EOF
{
  "job": {
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "$mysql_user_finance",
            "password": "$mysql_user_pwd",
            "connection": [
              {
                "querySql": [
                                    "select
                                        id,
                                        index_code,
                                        index_name,
                                        busi_date,
                                        close_price,
                                        price_change,
                                        per_change,
                                        volume,
                                        amount,
                                        data_source,
                                        create_time,
                                        update_time
                                      from finance.stock_indx_data_di;"
                                ],
                "jdbcUrl": ["jdbc:mysql://$mysql_host:$mysql_port/finance?useUnicode=true&characterEncoding=utf8"]
              }
            ]
          }
        },
        "writer": {
          "name": "txtfilewriter",
          "parameter": {
            "path": "/home/ubuntu/data/datax/finance_stock_indx_data_di",   
            "fileName": "mysql_export",         
            "writeMode": "truncate",            
            "dateFormat": "yyyy-MM-dd HH:mm:ss",
            "fileFormat": "text",                
            "encoding": "UTF-8",
            "nullFormat": "\\N",
            "fieldDelimiter": ","              
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": "1"
      }
    }
  }
}
EOF

保存为 mysql_to_txt_finance_stock_indx_data_di.json,然后运行脚本:

python $DATAX_HOME/bin/datax.py /home/ubuntu/apps/datax/script/mysql_to_txt_finance_stock_indx_data_di.json

六、常见问题

1、内存不足:可在 bin/datax.py 中调整 JVM 参数,例如:

DEFAULT_JVM = "-Xms1g -Xmx1g -XX:+UseG1GC"

七、参考文档

  • 官方 GitHub:https://github.com/alibaba/DataX

    • https://gitee.com/dataxGroup/datax/blob/master/mysqlreader/doc/mysqlreader.md

  • 插件列表和配置说明:https://github.com/alibaba/DataX/blob/master/introduction.md