开源DataX集成可视化项目Datax-Web的使用

news/2024/4/28 13:29:08/文章来源:https://blog.csdn.net/lxx309707872/article/details/129900213

上一篇文章我们已经搭建好了 Datax-Web 后台,这篇文章我们具体讲一下如何通过Datax-Web来配置,同步MySQL数据库。

目标

image-20230321171446281

MySql数据库全量同步

datax-web-shuju

1.执行器配置

datax-webx12

1、"调度中心OnLine:"右侧显示在线的"调度中心"列表, 任务执行结束后, 将会以failover的模式进行回调调度中心通知执行结果, 避免回调的单点风险;

2、“执行器列表” 中显示在线的执行器列表, 可通过"OnLine 机器"查看对应执行器的集群机器;

image-20230327164734793

1、AppName: (与datax-executor中application.yml的datax.job.executor.appname保持一致)
每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用;

2、名称: 执行器的名称, 因为AppName限制字母数字等组成,可读性不强, 名称为了提高执行器的可读性;

3、排序: 执行器的排序, 系统中需要执行器的地方,如任务新增, 将会按照该排序读取可用的执行器列表;

4、注册方式:调度中心获取执行器地址的方式;

自动注册:执行器自动进行执行器注册,调度中心通过底层注册表可以动态发现执行器机器地址;

手动录入:人工手动录入执行器的地址信息,多地址逗号分隔,供调度中心使用;

5、机器地址:"注册方式"为"手动录入"时有效,支持人工维护执行器的地址信息;

2.创建数据源

数据源管理—>添加

image-20230327165806036

如图填写MySQL的账号信息,点击测试连接,无误之后确认。

第四步使用

3.创建任务模版

image-20230328150138528

第四步使用

4. 构建JSON脚本

1.任务批量构建

步骤一,步骤二,选择第二步中创建的数据源,JSON构建目前支持的数据源有hive,mysql,oracle,postgresql,sqlserver,hbase,mongodb,clickhouse 其它数据源的JSON构建正在开发中,暂时需要手动编写。

任务管理—>任务批量构建—>选择数据库源

image-20230328163521242

2.字段映射

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SMl6KYWJ-1680341307925)(H:/typora_images/image-20230328163800009.png)]

3.批量创建任务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ywQmUes-1680341307925)(H:/typora_images/image-20230328163835852.png)]

手动执行一次

4.启动任务

image-20230328164122275

查看日志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ar0DUS01-1680341307926)(H:/typora_images/image-20230328164221949.png)]

报错

2023-03-28 16:41:14 [JobThread.run-130] <br>----------- datax-web job execute start -----------<br>----------- Param:
2023-03-28 16:41:14 [BuildCommand.buildDataXParam-100] ------------------Command parameters:
2023-03-28 16:41:14 [ExecutorJobHandler.execute-57] ------------------DataX process id: 29802
2023-03-28 16:41:14 [AnalysisStatistics.analysisStatisticsLog-53]   File "/data/datax/bin/datax.py", line 114
2023-03-28 16:41:14 [AnalysisStatistics.analysisStatisticsLog-53]     print readerRef
2023-03-28 16:41:14 [AnalysisStatistics.analysisStatisticsLog-53]           ^
2023-03-28 16:41:14 [AnalysisStatistics.analysisStatisticsLog-53] SyntaxError: Missing parentheses in call to 'print'. Did you mean print(readerRef)?
2023-03-28 16:41:14 [JobThread.run-165] <br>----------- datax-web job execute end(finish) -----------<br>----------- ReturnT:ReturnT [code=500, msg=command exit value(1) is failed, content=null]
2023-03-28 16:41:14 [ProcessCallbackThread.callbackLog-186] <br>----------- datax-web job callback finish.
2023-03-28 16:41:14 [TriggerCallbackThread.callbackLog-186] <br>----------- datax-web job callback finish.

经过查询是本机装了多版本的python

[root@node3 bin]#  whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python3.6 /usr/bin/python3.6m /usr/lib/python2.7 /usr/lib/python3.6 /usr/lib64/python2.7 /usr/lib64/python3.6 /etc/python /usr/include/python2.7 /usr/include/python3.6m /root/anaconda3/bin/python /root/anaconda3/bin/python3.9 /root/anaconda3/bin/python3.9-config /usr/share/man/man1/python.1.gz[root@node3 bin]# python -V
Python 3.9.13
[root@node3 bin]# /usr/bin/python -V
Python 2.7.5

经过修复使Python改为2.7再执行任务

[root@node3 ~]# python -V
Python 2.7.5

还有一种修复方式是

Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在doc/datax-web/datax-python3下) 必选,主要用于调度执行底层DataX的启动脚本,默认的方式是以Java子进程方式执行DataX,用户可以选择以Python方式来做自定义的改造

5.查看任务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FC5KjxMD-1680341307927)(H:/typora_images/image-20230329112816134.png)]

查看日志:

image-20230329112858101

再用Navicat 查看目标库中数据是否一致。

image-20230329113024046

DataX-Web增量配置说明

一、根据日期进行增量数据抽取

1.页面任务配置

打开菜单任务管理页面,选择添加任务

按下图中5个步骤进行配置

datax-webx13

  • 1.任务类型选DataX任务
  • 2.辅助参数选择时间自增
  • 3.增量开始时间选择,即sql中查询时间的开始时间,用户使用此选项方便第一次的全量同步。第一次同步完成后,该时间被更新为上一次的任务触发时间,任务失败不更新。
  • 4.增量时间字段,-DlastTime=‘%s’ -DcurrentTime=‘%s’ 先来解析下这段字符串
1.-D是DataX参数的标识符,必配
2.-D后面的lastTime和currentTime是DataX json中where条件的时间字段标识符,必须和json中的变量名称保持一致
3.='%s'是项目用来去替换时间的占位符,比配并且格式要完全一致
4.注意-DlastTime='%s'和-DcurrentTime='%s'中间有一个空格,空格必须保留并且是一个空格
  • 5.时间格式,可以选择自己数据库中时间的格式,也可以通过json中配置sql时间转换函数来处理

注意,注意,注意: 配置一定要仔细看文档(后面我们也会对这块配置进行优化,避免大家犯错)

2.JSON配置

datax.json

{"job": {"setting": {"speed": {"channel": 16}},"content": [{"reader": {"name": "mysqlreader","parameter": {"splitPk": "id","username": "root","password": "root","column": ["*"],"connection": [{"jdbcUrl": ["jdbc:mysql://localhost:3306/test?characterEncoding=utf8"],"querySql": ["select * from test_list where operationDate >= FROM_UNIXTIME(${lastTime}) and operationDate < FROM_UNIXTIME(${currentTime})"]}]}},"writer": {"name": "mysqlwriter","parameter": {"username": "root","password": "123456","column": ["*"],"batchSize": "4096","connection": [{"jdbcUrl": "jdbc:mysql://localhost:3307/test?characterEncoding=utf8","table": ["test_list"]}]}}}]}
}

querySql解析

select * from test_list where operationDate >= ${lastTime} and operationDate < ${currentTime}
  • 1.此处的关键点在lastTime,{lastTime},lastTime{currentTime},${}是DataX动态参数的固定格式,lastTime,currentTime就是我们页面配置中 -DlastTime=‘%s’ -DcurrentTime='%s’中的lastTime,currentTime,注意字段一定要一致。
  • 2.如果任务配置页面,时间类型选择为时间戳但是数据库时间格式不是时间戳,例如是:2019-11-26 11:40:57 此时可以用FROM_UNIXTIME(${lastTime})进行转换。
select * from test_list where operationDate >= FROM_UNIXTIME(${lastTime}) and operationDate < FROM_UNIXTIME(${currentTime})

二、根据自增Id进行增量数据抽取

1.页面任务配置

打开菜单任务管理页面,选择添加任务

按下图中4个步骤进行配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QQI3EmxB-1680341307929)(H:/typora_images/68747470733a2f2f64617461782d7765622e6f73732d636e2d68616e677a686f752e616c6979756e63732e636f6d2f646f632f69642d696e6372656d656e742e6a7067)]

  • 1.任务类型选DataX任务
  • 2.辅助参数选择主键自增
  • 3.增量主键开始ID选择,即sql中查询ID的开始ID,用户使用此选项方便第一次的全量同步。第一次同步完成后,该ID被更新为上一次的任务触发时最大的ID,任务失败不更新。
  • 4.增量时间字段,-DstartId=‘%s’ -DendId=‘%s’ 先来解析下这段字符串
1.-D是DataX参数的标识符,必配
2.-D后面的startId和endId是DataX json中where条件的id字段标识符,必须和json中的变量名称保持一致,endId是任务在每次执行时获取当前表maxId,也是下一次任务的startId
3.='%s'是项目用来去替换时间的占位符,比配并且格式要完全一致
4.注意-DstartId='%s'和-DendId='%s' 中间有一个空格,空格必须保留并且是一个空格
5.reader数据源,选择任务同步的读数据源
6.配置reader数据源中需要同步数据的表名及该表的主键

注意,注意,注意: 一定要仔细看文档(后续会对这块配置进行优化,避免大家犯错)

2.JSON配置

datax.json

{"job": {"setting": {"speed": {"channel": 3,"byte": 1048576},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "yRjwDFuoPKlqya9h9H2Amg==","password": "yRjwDFuoPKlqya9h9H2Amg==","splitPk": "","connection": [{"querySql": ["select * from job_log where id>= ${startId} and id< ${endId}"],"jdbcUrl": ["jdbc:mysql://localhost:3306/datax_web"]}]}},"writer": {"name": "mysqlwriter","parameter": {"username": "mCFD+p1IMsa0rHicbQohcA==","password": "PhYxJmA/nuBJD1OxKTRzZH8sxuRddOv83hdqDOVR+i0=","column": ["`id`","`job_group`","`job_id`","`job_desc`","`executor_address`","`executor_handler`","`executor_param`","`executor_sharding_param`","`executor_fail_retry_count`","`trigger_time`","`trigger_code`","`trigger_msg`","`handle_time`","`handle_code`","`handle_msg`","`alarm_status`","`process_id`","`max_id`"],"connection": [{"table": ["job_log"],"jdbcUrl": "jdbc:mysql://47.98.125.243:3306/datax_web"}]}}}]}}

querySql解析

select * from job_log where id>= ${startId} and id< ${endId}
  • 1.此处的关键点在startId,{startId},startId{endId},${}是DataX动态参数的固定格式,startId,endId就是我们页面配置中 -DstartId=‘%s’ -DendId='%s’中的startId,endId,注意字段一定要一致。

三、JVM启动参数配置

此选择为非必选,可以配置DataX启动时JVM的参数,具体配置不做详解。

JVM启动参数拼接结果为: -j "-Xms2G -Xmx2G"

参考

https://github.com/WeiYe-Jing/datax-web

https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/increment-desc.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_283661.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

钢铁侠材质制作——2、线条轮廓部分的制作

钢铁侠Unlit光照Shader&#xff0c;三种效果变化返回目录大家好&#xff0c;我是阿赵&#xff0c;这里是钢铁侠材质制作第二部分&#xff0c;线条轮廓部分的制作 为了实现这个效果&#xff0c;可以把细节拆分成以下几个部分&#xff1a; 1、轮廓光 1.效果分析 这是一个很基…

C生万物 | 十分钟带你学会位段相关知识

结构体相关知识可以先看看这篇文章 —— 链接 一、什么是位段 位段的声明和结构是类似的&#xff0c;有两个不同&#xff1a; 位段的成员必须是 int、unsigned int 或signed int位段的成员名后边有一个冒号和一个数字 在下面&#xff0c;我分别写了一个结构体和一个位段&…

手动构建自己的docker容器镜像实战

前言 之前的实战中&#xff0c;我们实战中&#xff0c;我们使用的镜像都是镜像仓库已有的镜像。 已有的镜像都是别人已经开发好上传的。今天我们一起来看看如何构建自己的镜像并上传到镜像仓库中。 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&…

【Python】字符串 ⑤ ( Python 字符串快速格式化 | 不考虑变量类型 | 不考虑精度控制 )

文章目录一、Python 字符串快速格式化1、语法说明2、代码示例 - 不考虑变量类型3、代码示例 - 不考虑精度控制4、快速格式化的优点一、Python 字符串快速格式化 1、语法说明 Python 字符串快速格式化 : 通过如下格式的代码 , 可以进行字符串的快速格式化 ; f"字符串内容{…

vscode代码片段生成

在刚学习vue的时候&#xff0c;有些代码片段是经常写的&#xff0c;在vscode中写一个代码片段可以帮助快速生成。 生成步骤&#xff1a; VSCode中的代码片段有固定的格式&#xff0c;所以我们一般会借助于一个在线工具来完成。 具体的步骤如下: 第一步&#xff0c;复制自己需…

〖Python网络爬虫实战⑨〗- 正则表达式基本原理

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付…

Mac PicGo可以上传GitHub但是不能显示

Mac PicGo可以上传到GitHub但是本地不能显示&#xff08;已经加载的&#xff09;图片 背景&#xff1a;使用Typora PicGo GitHub 图床。 文章目录Mac PicGo可以上传到GitHub但是本地不能显示&#xff08;已经加载的&#xff09;图片1. Bug表现2. 解决方法&#xff08;1&…

【好书推荐】认知觉醒:开启自我改变的原动力

书籍信息 书名&#xff1a;认知觉醒&#xff1a;开启自我改变的原动力 作者&#xff1a; 周岭 出版社&#xff1a; 人民邮电出版社 认知觉醒的基础 重新认识大脑 在我们的大脑里&#xff0c;由内到外至少有三重大脑&#xff1a;年代久远的本能脑、相对古老的情绪脑和非常年…

【C语言深入】逐汇编详解函数栈帧的创建和销毁过程

【C语言深入】逐汇编详解函数栈帧的创建和销毁过程一、图解大概过程二、函数栈帧的创建过程1、简介一些需要用到的汇编指令和寄存器2、调用main函数的函数3、局部变量的初始化4、形成临时拷贝5、函数调用6、形成栈帧7、提取临时拷贝8、return返回三、函数栈帧的销毁过程1、释放…

python:异常处理与文件操作(知识点详解+代码展示)

文章目录一、异常处理1、try...except语句2、finally语句二、断言1、定义2、举例例一&#xff1a;例二&#xff1a;三、文件操作1、写文件操作2、读文件操作&#xff08;当你心情低落时候&#xff0c;记得外面还有美好的风景&#xff01;&#xff09; 学习目标&#xff1a; 1、…

堆相关的面试题

文章目录1. 距离不超过k的推排序2. 最大线段重合问题1. 距离不超过k的推排序 题目&#xff1a;已知一个几乎有序的数组。几乎有序是指&#xff0c;如果把数组排好顺序的话&#xff0c;每个元素移动的距离一定不超过k&#xff0c;并且k相对于数组长度来说是比较小的。 请选择一…

WinRAR压缩解压文件

使用WinRAR压缩管理器压缩解压文件详细步骤如下&#xff1a; ■ 压缩文件 ① 鼠标右键需要压缩的文件&#xff0c;点击“添加到压缩文件”&#xff0c;具体操作步骤如图所示&#xff1a; ② 压缩后的对应文件压缩包会显示在桌面&#xff0c;如图所示&#xff1a; ■ 解压文件 …

如何设计一个高并发系统

目录 如何理解高并发系统 1. 分而治之&#xff0c;横向扩展 2. 微服务拆分&#xff08;系统拆分&#xff09; 3. 分库分表 4. 池化技术 5. 主从分离 6. 使用缓存 7. CDN——加速静态资源访问 8. 消息队列——削锋 9. ElasticSearch 10. 降级熔断 11. 限流 12. 异步…

【OpenLayers】VUE+OpenLayers+ElementUI加载WMS地图服务

【OpenLayers】VUEOpenLayersElementUI加载WMS地图服务准备工作安装vue创建vue项目安装OpenLayers安装ElementUI加载wms地图服务准备工作 需要安装好nodejs&#xff0c;nodejs下载地址&#xff0c;下载对应的版本向导式安装即可。 安装完成后&#xff0c;控制台输入node -v&a…

【CentOS 7安装MySQL 8的教程指南】

CentOS 7安装MySQL 8 添加MySQL官方源 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm安装MySQL 8 sudo yum install mysql-community-server安装失败执行下面的命令并再次执行安装…

进程与线程的区别和联系

进程与线程的区别和联系&#x1f50e;进程&#x1f50e;线程&#x1f50e;进程与线程的联系&#x1f50e;进程与线程的区别&#x1f50e;总结&#x1f50e; 结尾&#x1f50e;进程 进程简单来说就是运行着的程序 如果不太理解可以参考一下这篇文章 进程 &#x1f50e;线程 …

【MySQL--01】数据库基础

文章目录1.什么是数据库2.主流数据库2.1 MySQLMySQL架构实例3.基本使用3.1 MySQL的安装3.2 连接服务器3.3服务器管理4.服务器&#xff0c;数据库&#xff0c;表之间的关系5.使用数据库6.SQL分类7.存储引擎查看存储引擎存储引擎对比1.什么是数据库 数据库是用来存储数据的。那么…

Java BigDecimal学习

文章目录Java BigDecimal不损失精度的方法Java BigDecimal的几种舍入模式1、UP(BigDecimal.ROUND_UP)2、DOWN(BigDecimal.ROUND_DOWN)3、CEILING(BigDecimal.ROUND_CEILING)4、FLOOR(BigDecimal.ROUND_FLOOR)5、HALF_UP(BigDecimal.ROUND_HALF_UP)6、HALF_DOWN(BigDecimal.ROUN…

QMake宏定义常量和字符串或带空格的字符串(在代码中使用)

答案 宏定义常量 DEFINES EXPIR_TIME123宏定义字符串(不带空格) DEFINES NIHAO\\\"nihao\\\"宏定义字符串(带空格也适用于不带空格的情况) 推荐 DEFINES NIHAO\"\\\"ni" "hao\\\"\"QMAKE宏定义常量 环境: visual studio 2018 …

Java基础之List

文章目录一、List介绍二、List常用方法 List应知应会2.1 调用add()方法增添数据&#xff08;可指定位置添加&#xff09;2.2 调用remove()方法删除指定位置元素并返回被删除元素2.3 调用set()方法修改指定位置元素并返回初始数据2.4 调用get()方法返回指定位置元素三、List可重…