1 datax概述
阿里巴巴的DataX是一款开源的数据交换平台,用于实现不同数据源之间的数据同步和迁移。DataX的设计目标是提供一个通用、高效、易扩展的数据交换框架,适用于多种场景,包括数据仓库构建、数据迁移、数据同步等。
官方地址:
https://github.com/alibaba/DataX
2 datax使用情景
- 数据仓库同步
DataX 可以帮助将数据从一个数据仓库(如关系型数据库、大数据存储系统等)同步到另一个数据仓库,实现数据的迁移、备份或复制。 - 数据库迁移:当我们需要将数据从一个数据库平台迁移到另一个数据库平台时,DataX 可以帮助完成数据的转移和转换工作
- 数据集成与同步
DataX 可以用作数据集成工具,用于将多个数据源的数据进行整合和同步。它支持多种数据源,包括关系型数据库、NoSQL 数据库、文件系统等,可以将这些数据源的数据整合到一个目标数据源中。 - 数据清洗与转换
DataX 提供了丰富的数据转换能力,可以对数据进行清洗、过滤、映射、格式转换等操作。这对于数据仓库、数据湖和数据集市等数据存储和分析平台非常有用,可以帮助提高数据质量和一致性。 - 数据备份与恢复
DataX 可以用于定期备份和恢复数据。通过配置定时任务,可以将数据从源端备份到目标端,并在需要时进行数据恢复。
3 示例:将数据从starrocks迁移至starrocks
在云上购买一台4U8G的Centos 7.9服务器,安装openjdk
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
解压缩datax压缩包
tar -zxvf datax.tar.gz -C /opt/
创建datax同步配置文件starrocks2starrocks.json,内容参考如下:
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": ["*"],
"connection": [
{
"jdbcUrl": ["jdbc:mysql://10.0.19.231:32005/database名"],
"table": ["表名"]
}
],
"password": "密码",
"username": "root",
"where": "partitioned_date in ('2025-08-20')",
"splitPk": "partitioned_date"
}
},
"writer": {
"name": "starrockswriter",
"parameter": {
"column": ["*"],
"connection": [
{
"jdbcUrl": "jdbc:mysql:loadbalance://10.0.16.28:9030,10.0.10.255:9030,10.0.22.81:9030/",
"selectedDatabase": "database名",
"table": ["表名"]
}
],
"loadUrl": ["10.0.16.28:8030","10.0.10.255:8030","10.0.22.81:8030"],
"password": "密码",
"postSql": [],
"preSql": [],
"username": "admin",
"writeMode": "replace"
}
}
}
],
"setting": {
"speed": {
"channel": "5"
}
}
}
}
执行命令
python /opt/datax/bin/datax.py --jvm="-Xms6G -Xmx6G" starrocks2starrocks.json