Docker快速部署数据同步工具DataX-Web
笔者最近有需求需要进行数据同步,目前确认DataX-Web适合快速搭建使用,满足基本需求。以此记录搭建Datax-Web过程和解决的坑。
一、启动MySQL容器
(1)首先,我们运行一个支撑DataX-Web运行的MySQL容器。
docker run --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
(2)在该MySQL,创建 datax数据库,并执行SQL语句。
datax-web/bin/db/datax_web.sql at master · WeiYe-Jing/datax-web · GitHub
二、启动DataX-Web容器
1、DataX-Web镜像拉取
使用的镜像是网上找到用得比较多的。
docker pull linshellfeng/datax_web:3.0.1
2、创建Docker文件挂载目录
(1)找一个地方存取映射,这是一些常改动的配置文件。
mkdir -p ~/code/docker/datax/datax-admin/conf
(2)下载datax.tar.gz到挂载目录conf,后续用以替换。
下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz
3、配置文件获取和处理
(1)先创建临时容器用于获取配置文件
docker run --name datax-web -p 9527:9527 -d linshellfeng/datax_web:3.0.1
(2)从容器内复制datax-web的运行mysql配置文件
docker cp datax-web:/home/datax/datax-web-2.1.2/modules/datax-admin/conf/bootstrap.properties ~/code/docker/datax/datax-admin/conf/bootstrap.properties
(3)停用并删除临时容器
docker stop datax-webdocker rm datax-web
(4)编辑bootstart.propertis 修改对应datax-web需要的数据库
# Database
DB_HOST=mysql57
DB_PORT=3306
DB_DATABASE=datax
DB_USERNAME=root
DB_PASSWORD=root
4、启动容器访问
docker run -p 9527:9527 --name datax-web -v ~/code/docker/datax/datax-admin/conf/bootstrap.properties:/home/datax/datax-web-2.1.2/modules/datax-admin/conf/bootstrap.properties -d linshellfeng/datax_web:3.0.1
5、替换DataX为最新版
(1)datax压缩包复制到容器里。
docker cp ~/code/docker/datax/datax-admin/conf/datax.tar.gz datax-web:/home/datax/datax.tar.gz
(2)删除容器的datax整个文件夹,路径:/home/datax/datax,最好备份原先的/home/datax/datax
# 备份
cp -r datax datax_backup
# 删除
rm -rf datax
(3)解压到路径/home/datax/下。
tar -zxvf datax.tar.gz -C /home/datax/
6、core配置文件修改
(1)进入编写
vi /home/datax/datax/conf/core.json
(2)修改core->transport->channel->speed->byte为2000000
三、容器网络联通
(1)创建一个自定义 bridge 网络,容器可以通过容器名互相访问
docker network create datax-net
(2)网络联通
# 关联到Datax-Web的运行Mysql容器
docker network connect datax-net mysql57
# 关联到Datax-Web容器
docker network connect datax-net datax-web
四、访问Datax-Web
上面的MySQL,我们的执行SQL有一个默认用户,可以用于直接登录
(1)地址:http://127.0.0.1:9527/index.html
(2)账号:admin
(3)密码:123456
五、遇见的坑
具体的使用网上资料也很多,Datax-Web的使用这里不赘述了。
1、坑点描述
问题出现的点是在任务管理里,我们创建了一个任务,手动执行后出现错误:
ReturnT:ReturnT [code=500, msg=command exit value(1) is failed, content=null]
更具体的内容如下:
2025-01-14 16:39:20 [JobThread.run-130] <br>----------- datax-web job execute start -----------<br>----------- Param:
2025-01-14 16:39:20 [BuildCommand.buildDataXParam-100] ------------------Command parameters:
2025-01-14 16:39:20 [ExecutorJobHandler.execute-57] ------------------DataX process id: 967
2025-01-14 16:39:20 [ProcessCallbackThread.callbackLog-186] <br>----------- datax-web job callback finish.
2025-01-14 16:39:20 [AnalysisStatistics.analysisStatisticsLog-53]
2025-01-14 16:39:20 [AnalysisStatistics.analysisStatisticsLog-53] DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
2025-01-14 16:39:20 [AnalysisStatistics.analysisStatisticsLog-53] Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
2025-01-14 16:39:20 [AnalysisStatistics.analysisStatisticsLog-53]
2025-01-14 16:39:20 [AnalysisStatistics.analysisStatisticsLog-53]
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] SLF4J: Class path contains multiple SLF4J bindings.
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] SLF4J: Found binding in [jar:file:/home/datax/datax/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] SLF4J: Found binding in [jar:file:/home/datax/datax/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] SLF4J: Found binding in [jar:file:/home/datax/datax/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] log4j:WARN No appenders could be found for logger (com.alibaba.datax.common.statistics.VMInfo).
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] log4j:WARN Please initialize the log4j system properly.
2025-01-14 16:39:21 [AnalysisStatistics.analysisStatisticsLog-53] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2025-01-14 16:39:21 [JobThread.run-165] <br>----------- datax-web job execute end(finish) -----------<br>----------- ReturnT:ReturnT [code=500, msg=command exit value(1) is failed, content=null]
2025-01-14 16:39:21 [TriggerCallbackThread.callbackLog-186] <br>----------- datax-web job callback finish.
2、坑点解决
我们在该issue获得灵感(该issue也有笔者的回复):
https://github.com/WeiYe-Jing/datax-web/issues/687
该issue也有具体的解决方案,我也已经在第二步【启动DataX-Web容器】处理了,这边是做一个记录总结。
六、参考命令
1、日志查看
(1)容器内查看DataX-Web错误日志(最近100行)
tail -n 100 /home/datax/datax-web-2.1.2/modules/datax-admin/bin/console.out