Appearance
DataX 数据同步
DataX 是阿里开源的异构数据源离线同步工具,支持将数据从各种源有效地同步到目标存储。OraAI 平台集成了 DataX 功能,使您能够轻松地配置和管理数据同步任务。
功能特点
- 丰富的数据源支持:支持 MySQL、PostgreSQL、SQLServer 等多种数据源
- 高性能:使用框架式设计,支持多通道数据抽取和加载,提高同步效率
- 可靠性:内置完善的任务监控和异常处理机制
- 易扩展:插件化架构设计,方便扩展新的数据源
系统要求
- JDK 1.8+
- Python 3.x
- 至少 1GB 内存
- Linux、Mac OS 或 Windows 操作系统
下载与安装
您可以使用以下链接下载 DataX 工具包:
https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz安装步骤
- 下载 DataX 压缩包
- 解压到您的工作目录:
shell
tar -zxvf datax.tar.gz- 确保您的系统已安装 JDK 1.8+ 和 Python
目录结构
解压后的 DataX 目录结构如下:
datax
|-- bin/ # 脚本目录
| |-- datax.py # 启动脚本
|-- conf/ # 系统配置
|-- job/ # 任务配置模板
|-- plugin/ # 插件目录
|-- script/ # 辅助脚本
|-- log/ # 日志目录
|-- lib/ # 依赖库
|-- README.md # 说明文档快速开始
运行示例任务
进入 bin 目录,即可运行同步作业:
shell
python3 /home/datax/bin/datax.py /home/datax/job/job.json执行后,您将看到类似以下的输出:
DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
2025-07-24 19:47:43.573 [main] INFO MessageSource - JVM TimeZone: GMT+08:00, Locale: zh_CN
...
任务启动时刻 : 2025-07-24 19:47:43
任务结束时刻 : 2025-07-24 19:47:54
任务总计耗时 : 10s
任务平均流量 : 253.91KB/s
记录写入速度 : 10000rec/s
读出记录总数 : 100000
读写失败总数 : 0配置指南
常用读写器
读取器(Reader)
| 读取器 | 描述 | 主要参数 |
|---|---|---|
| MySQLReader | 读取 MySQL 数据 | username, password, column, connection |
| PostgreSQLReader | 读取 PostgreSQL 数据 | username, password, column, connection |
| SQLServerReader | 读取 SQLServer 数据 | username, password, column, connection |
| TextFileReader | 读取文本文件 | path, column, encoding |
写入器(Writer)
| 写入器 | 描述 | 主要参数 |
|---|---|---|
| MySQLWriter | 写入 MySQL 数据 | username, password, column, connection, writeMode |
| PostgreSQLWriter | 写入 PostgreSQL 数据 | username, password, column, connection, writeMode |
| TextFileWriter | 写入文本文件 | path, fileName, writeMode, encoding |
命令行参数
DataX 支持以下命令行参数:
shell
python datax.py [options] job.json常用选项:
-j,-job <job_config>: 指定任务配置文件-p,-params <params>: 自定义参数,格式如 "-p"-DparamKey=paramValue-r,-reader <reader>: 指定读插件名称-w,-writer <writer>: 指定写插件名称-c,-channel <channel>: 指定任务并发数-l,-limit <limit>: 指定抽取数据的限制数量
在 OraAI 平台中使用 DataX
- 在 OraAI 平台中创建同步任务
- 选择源数据和目标数据系统
- 配置同步参数和调度策略
- 提交并监控同步任务
常用场景示例
SQLServer 到 StarRocks 同步
json
{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [
{
"reader": {
"name": "sqlserverreader",
"parameter": {
"username": "SA",
"password": "yourStrong@assword",
"connection": [
{
"jdbcUrl": [
"jdbc:sqlserver://192.168.31.111:1433;databaseName=蓝海实业集团;encrypt=true;trustServerCertificate=true"
],
"querySql": [
"SELECT PO.FID AS ORDER_ID, PO.FBILLTYPEID AS BILL_TYPE_ID, PO.FBILLNO AS BILL_NO, PO.FDATE AS ORDER_DATE, PO.FSUPPLIERID AS SUPPLIER_ID, PO.FPURCHASEDEPTID AS PURCHASE_DEPT_ID, PE.FMATERIALID AS MATERIAL_ID, PE.FSALQTY AS SAL_QTY, PE.FSTOCKQTY AS STOCK_QTY FROM T_PUR_POORDER PO JOIN T_PUR_POORDERENTRY PE ON PO.FID = PE.FID"
]
}
]
}
},
"writer": {
"name": "starrockswriter",
"parameter": {
"loadUrl": ["8.8.8.8:8030"],
"jdbcUrl": "jdbc:mysql://8.8.8.8:9030/dbt_dwm",
"username": "root",
"password": "******",
"database": "dbt_dwm",
"table": "T_PUR_POORDER",
"writeMode": "insert",
"column": ["ORDER_ID", "BILL_TYPE_ID", "BILL_NO", "ORDER_DATE", "SUPPLIER_ID", "PURCHASE_DEPT_ID", "MATERIAL_ID", "SAL_QTY", "STOCK_QTY"],
"batchSize": 10240,
"timeout": 60
}
}
}
]
}
}性能调优
并发调优
通过设置 channel 参数控制任务并发数:
json
"setting": {
"speed": {
"channel": 5 // 设置为 5 个并发通道
}
}速度限制
可以设置传输速率限制,避免对源库造成过大压力:
json
"setting": {
"speed": {
"channel": 3,
"byte": 1048576 // 限制为每秒 1MB
}
}错误处理
设置容错率,当错误记录数超过阈值时任务失败:
json
"setting": {
"errorLimit": {
"record": 100, // 错误记录数超过 100 条时任务失败
"percentage": 0.02 // 错误比例超过 2% 时任务失败
}
}最佳实践
- 根据数据量和服务器资源合理配置并发数
- 对于大表同步,建议使用增量同步策略(WHERE 条件过滤)
- 定期监控同步任务执行情况,及时处理异常
- 对于关键任务配置错误告警和自动重试
- 使用 DataX 内置的脏数据收集功能记录同步异常数据
常见问题
Q: 如何处理数据类型转换问题?
A: DataX 会自动进行基本的类型转换,但对于特殊类型(如时间戳),建议在配置中明确指定类型映射关系。
Q: 同步任务失败如何处理?
A: 查看日志确认失败原因,常见问题包括网络连接中断、权限不足或数据格式错误等。解决对应问题后可重新执行任务。
Q: 如何提高同步效率?
A: 增加并发通道数、合理拆分任务、优化数据库查询(添加索引、优化 SQL)、使用更高配置的服务器。
Q: 如何处理增量同步?
A: 使用 where 条件和时间戳、自增 ID 等字段实现增量同步,结合调度系统定时执行。
Q: DataX 是否支持实时同步?
A: DataX 主要用于批量离线数据同步,不支持实时同步。对于实时需求,可考虑使用 Canal、Debezium 等工具。