Datax-web部署
# 参考官方文档
https://github.com/alibaba/DataX/blob/master/userGuid.md
# 下载datax已经封装好的文件,不推荐源码自己编译
https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
# 检查python环境是否存在,python2.python3都可以
[root@test-200 ~]# python -V
Python 2.7.5
# 上传文件到/home然后去解压
[root@test-200 ~]# cd /home/
# 解压文件
[root@test-200 home]# tar xf datax.tar.gz
[root@test-200 home]# python /home/datax/bin/datax.py /home/datax/job/job.json
2025-03-12 16:43:04.945 [job-0] INFO JobContainer -
任务启动时刻 : 2025-03-12 16:42:54
任务结束时刻 : 2025-03-12 16:43:04
任务总计耗时 : 10s
任务平均流量 : 253.91KB/s
记录写入速度 : 10000rec/s
读出记录总数 : 100000
读写失败总数 : 0
# 说明datax是可用的
# 修改配置文件
# 否则后面同步数据会出现在 有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数的问题
[root@test-200 home]# vim /home/datax/conf/core.json
"com.alibaba.datax.core.transport.channel.memory.MemoryChannel",
"speed": {
"byte": -1,
"record": -1
# 把"byte": -1 改为 "byte":3000000
# 修改后内容如下
"com.alibaba.datax.core.transport.channel.memory.MemoryChannel",
"speed": {
"byte":3000000,
"record": -1
Datax-web部署
# 参考官方文档
https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md
# 下载文件
# 作者封装好的程序,同样不推荐自己编译源码 因为也会报错
https://pan.baidu.com/s/13yoqhGpD00I82K4lOYtQhg 提取码:cpsk
# 同样上传到/home
[root@test-200 home]# tar xf datax-web-2.1.2.tar.gz
[root@test-200 home]# cd /home/datax-web-2.1.2/bin
[root@test-200 bin]# bash install.sh
# 输入4个y完成安装
# 我这里是本地没有安装mysql的,如果你安装了的mysql会调用直接退出即可使用配置文件配置
安装Mysql
# 推荐使用5.7版本的数据库,使用8.0会导致admin无法链接数据库暂时不知道什么原因
docker run -d --name mysql_datax -p 3306:3306 -v datax_web_mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=datax -e MYSQL_PASSWORD=123456 -e MYSQL_DATABASE=datax_web --restart always mysql:5.7.44
[root@test-200 bin]# cd /home/datax-web-2.1.2/bin/db
# 拷贝sql文件到mysql容器中导入数据
[root@test-200 db]# docker cp datax_web.sql mysql_datax:/root
Successfully copied 21.5kB to mysql_datax:/root
# 导入数据
[root@test-200 bin]# docker exec -it mysql_datax bash
bash-4.2# mysql -udatax -p123456 datax_web < /root/datax_web.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
bash-4.2# exit
exit
# 配置数据库
[root@test-200 db]# cd /home/datax-web-2.1.2/modules/datax-admin/conf
[root@test-200 conf]# cat bootstrap.properties
#Database
DB_HOST=192.168.116.200
DB_PORT=3306
DB_USERNAME=datax
DB_PASSWORD=123456
DB_DATABASE=datax_web
# 配置调用datax文件
[root@test-200 bin]# sed -i s#PYTHON_PATH=#PYTHON_PATH=/home/datax/bin/datax.py#g /home/datax-web-2.1.2/modules/datax-executor/bin/env.properties
启动Datax-web
# 务必进去这个文件夹中启动 不然会起不来
[root@test-200 bin]# cd /home/datax-web-2.1.2/bin
[root@test-200 bin]# bash start-all.sh
2025-03-12 17:11:31.391 [INFO] (5034) Try To Start Modules In Order
2025-03-12 17:11:31.400 [INFO] (5042) ####### Begin To Start Module: [datax-admin] ######
2025-03-12 17:11:31.409 [INFO] (5050) load environment variables
2025-03-12 17:11:31.690 [INFO] (5050) /usr/local/jdk1.8.0_211/bin/java
2025-03-12 17:11:31.693 [INFO] (5050) Waiting DATAX-ADMIN to start complete ...
2025-03-12 17:11:31.843 [INFO] (5050) DATAX-ADMIN start success
2025-03-12 17:11:31.856 [INFO] (5277) ####### Begin To Start Module: [datax-executor] ######
2025-03-12 17:11:31.869 [INFO] (5285) load environment variables
2025-03-12 17:11:32.299 [INFO] (5285) /usr/local/jdk1.8.0_211/bin/java
2025-03-12 17:11:32.302 [INFO] (5285) Waiting DATAX-EXEXUTOR to start complete ...
2025-03-12 17:11:32.543 [INFO] (5285) DATAX-EXEXUTOR start success
[root@test-200 bin]# jps
5524 DataXExecutorApplication
5227 DataXAdminApplication
5579 Jps
[root@test-200 bin]# netstat -tnlp | grep java
tcp6 0 0 :::9527 :::* LISTEN 5227/java
tcp6 0 0 :::9504 :::* LISTEN 5524/java
tcp6 0 0 :::9999 :::* LISTEN 5524/java
# 访问ip:9527/index.html
http://192.168.116.200:9527/index.html
默认账号密码
admin/123456
避坑
# 添加mysql5.7 数据库源时无法连接到数据库
# 报错如下
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link
# jdbc url 这里如果按下面写会无法链接
jdbc:mysql://192.168.1.123:3306/test
# 正确方式加入后面这串就好了
&connectTimeout=30000&socketTimeout=60000
jdbc:mysql://192.168.1.123:3306/test?useSSL=false&connectTimeout=10000&socketTimeout=30000
Datax-web 使用
增量同步
以时间方式增量同步
数据库两边先确保 源端数据库 和 同步端数据库的表信息一致。
1、项目管理-添加 -输入项目名称和描述 这里主要后续好区分各项目任务

2、数据源管理-添加-数据源选择你数据同步的客户端如我是同步clickhouse数据库的数据,那么就选择clickhouse
数据源名称 区分数据源的标记,自定义
用户名 使用数据库同步的账号-建议高权限的用户,避免出现各种问题
密码 使用对应用户的密码
jdbc url {ip}:{port}/{database} 改为对应ip:端口:库名
测试连接 Success 确定 数据源添加成功

添加源数据库信息后在添加需要同步的目标端数据库信息 方式和上方一样
3、任务构建
任务管理-任务构建-数据库源选择源端的数据库信息-数据库表名选择需要同步的表名-表所有字段选择需要同步的字段一般都是全选-下一步

步骤2中 配置目标端数据的数据源信息 – 下一步

步骤3中 全选所有字段-下一步

步骤4中 构建-复制构建出的信息

4、任务管理
执行器 datax执行器
路由策略 轮询
阻塞处理 丢弃后续调度
任务类型 DataX任务
所属任务 选择项目名
辅助参数 时间自增
任务名称 自定义名称
Cron 选择多久执行一次同步的时间
增量开始时间 选择你需要从那天时间开始同步,如需全量数据选择你初始数据前的时间
增量时间字段 -DstartTime=’%s’ 注意startTime可以自定义需和下方操作where条件一致

查询字段时间格式查源表一条数据 如 process_time: 2025-11-11 01:01:47 这种就是 yyy-MM-dd HH:mm:ss 时间格式

添加时间自增的where条件
在源端信息的splitPk上面一行加入 “where”: “process_time > ${startTime}”, 确定保存

5、任务管理-操作-执行一次-查询日志-日志查看-刷新日志(需要手动点击刷新,不会自动刷新)


6、任务管理-找到对应任务名-状态启动绿色按钮 这样开启了自动增量同步

以主键id方式增量同步
配置数据源信息参考上方,这里配置id方式增量的参数信息
辅助参数 主键自增
增量主键开始ID 0表示先全量同步后续增量 ,如果需要增量那么直接写目标端的最大id加1
reader标选择目前同步的表,主键选择id

粘贴构建的信息,加入where条件 “where”: “id > ${startId}”,

确定保存-任务管理-操作-执行一次-查询日志-查看日志-开启自动执行状态

评论(2)
Ndewo, achọrọ m ịmara ọnụahịa gị.
What price are you referring to?