前言
DataX 是一款由阿里巴巴开源的数据同步工具,旨在帮助用户实现不同数据源之间的高效数据迁移和同步。无论是从传统的关系型数据库、NoSQL 数据库,还是到大数据存储系统,DataX 都能够轻松应对各种数据同步需求。通过简单的配置和灵活的插件机制,用户可以快速构建数据同步任务,实现数据的可靠传输和处理。DataX 的设计理念注重性能和可扩展性,同时保证数据同步过程的稳定性和数据一致性。
安装部署
安装部署主要有两种方式
-
源码构建 (java环境(git jdk maven等))
# git clone 源码下载 # 或者 通过DataX项目的release 页面下载最新的源码包 https://github.com/alibaba/DataX/releases git clone git@github.com:alibaba/DataX.git # 推荐jdk版本为1.8 jdk 版本大于16 是需要改动下源码 # 将项目中的引入到Record 的类 手动添加导包路径 不然可能被识别为jdk里的Record # import com.alibaba.datax.common.element.Record; # maven构建 mvn -U clean package assembly:assembly -Dmaven.test.skip=true # 打包成功后的DataX包位于 target/datax/datax/ # {DataX_source_code_home}/target/datax/datax/ ,结构如下:
-
直接下载工具包 链接 https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
第二种 下载完成需要进行解压
tar -zxvf ./datax.tar.gz
使用
使用过程也比较简单
- 编写job
- 启动job执行
# 需要python环境 我这里是 python3 命令 python3 ./bin/datax.py ./job/job.json
例如说 我想从一个mysql 同步单张表的数据到另一个mysql中 那我可以编写如下job配置
{
"job": {
"setting": {
"speed": {
"channel": 1
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "数据库连接账号",
"password": "数据库连接密码",
"splitPk": "id",
"column":["需要同步的列数据 多个列 ,分割"],
"connection": [
{
"table": [
"待同步的表名"
],
"jdbcUrl": [
"jdbc:mysql://数据库连接地址:3306/数据库名称?characterEncoding=utf8&useSSL=false"
]
}
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"writeMode": "insert",
"username": "写入的数据库账号",
"password": "写入数据库密码",
"column":["写的数据表列明 多个,分割"],
"preSql": [
"前置执行语句例如先删除写入数据库的表数据 从头导入 delete from us_login_log"
],
"connection": [
{
"jdbcUrl": "jdbc:mysql://数据库连接得治:3306/数据库名称?characterEncoding=utf8&useSSL=false",
"table": [
"同步的表名"
]
}
]
}
}
}
]
}
}
执行job
python3 ./bin/datax.py ./job/job.json
同步的过程中可以看到 传输的速度 以及条数
gc 日志
迁移完成
问题
启动job时 遇到 mac上datax启动 报错 配置信息错误,您提供的配置文件[/xx/datax/plugin/reader/.DS_Store/plugin.json]不存在
参数文章: https://blog.csdn.net/a15835774652/article/details/141398721
good day !!!