DataX实战教程

需求:

用datax同步mysql: 192.168.236.134中test1库的user表到192.168.236.136中test1库的user表

步骤:

下载安装包

https://github.com/alibaba/DataX/blob/master/userGuid.md
在这里插入图片描述

进入引导页

https://github.com/alibaba/DataX/blob/master/userGuid.md
在这里插入图片描述

前置准备

在这里插入图片描述

安装jdk1.8,并配置环境变量
安装maven

yum install maven -y

安装python
我这边直接用宝塔安装了
在这里插入图片描述

准备两个mysql

在这里插入图片描述

准备测试数据

CREATE TABLE IF NOT EXISTS `user` (`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,`username` VARCHAR(50) NOT NULL,`password` VARCHAR(100) NOT NULL,`email` VARCHAR(100) NOT NULL,`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

批量生成测试数据的存储过程

DELIMITER $$CREATE PROCEDURE GenerateUserTestData(IN num_records INT)
BEGINDECLARE i INT DEFAULT 1;DECLARE v_username VARCHAR(50);DECLARE v_password VARCHAR(100);DECLARE v_email VARCHAR(100);WHILE i <= num_records DO-- 生成随机用户名(如 User_12345)SET v_username = CONCAT('User_', FLOOR(10000 + RAND() * 90000));-- 生成随机密码(简化示例,实际应加密)SET v_password = CONCAT('Pass_', FLOOR(100000 + RAND() * 900000));-- 生成随机邮箱(如 user12345@example.com)SET v_email = CONCAT('user', FLOOR(10000 + RAND() * 90000), '@example.com');INSERT INTO `user` (username, password, email)VALUES (v_username, v_password, v_email);-- 每1000条提交一次,避免事务过大IF i % 1000 = 0 THENCOMMIT;END IF;SET i = i + 1;END WHILE;
END$$DELIMITER ;
-- 生成100条测试数据
CALL GenerateUserTestData(100);

准备datax同步脚本

可使用DeepSeek或者qwen.ai 生成
提示词如下:

datax已经安装好了。现在我需要使用datax将如下配置的mysql
ip: 192.168.236.134
用户名:test1
密码:E7WEC4ZJnHGhHBMH
中的user表数据同步到 如下mysql中。
ip: 192.168.236.136
用户名:test1
密码:G3edhwhCSAYa82EK

得到json脚本

{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "test1","password": "E7WEC4ZJnHGhHBMH","connection": [{"jdbcUrl": ["jdbc:mysql://192.168.236.134:3306/数据库名"],"table": ["user"]}],"column": ["*"],"splitPk": ""}}},{"writer": {"name": "mysqlwriter","parameter": {"username": "test1","password": "G3edhwhCSAYa82EK","connection": [{"jdbcUrl": "jdbc:mysql://192.168.236.136:3306/数据库名","table": "user"}],"column": ["*"],"writeMode": "insert"}}}],"setting": {"speed": {"channel": "1"}}}
}

执行报错

在这里插入图片描述

喂给千问
在这里插入图片描述
检测安装是否正常
验证步骤

ls $DATAX_HOME/plugin/reader/mysqlreader

应输出类似:libs、mysqlreader-0.0.1-SNAPSHOT.jar等文件
生成配置文件模板 (测试用):

python datax.py -r mysqlreader -w mysqlwriter > test.json

编辑test.json后执行,验证是否为配置问题
若问题仍未解决,可参考
中的错误分析方法,检查日志或通过调试工具定位具体插件加载失败的原因。

根据生成模板重新配置

json格式不正确
可以如下网页验证
https://jsonlint.com/?spm=a2ty_o01.29997173.0.0.1f39c9213lfeok
在这里插入图片描述

修改脚本

{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "test1","password": "E7WEC4ZJnHGhHBMH","column": ["*"],"connection": [{"jdbcUrl": ["jdbc:mysql://192.168.236.134:3306/test1?useSSL=false&serverTimezone=UTC"],"table": ["user1"]}]}},"writer": {"name": "mysqlwriter","parameter": {"username": "test1","password": "G3edhwhCSAYa82EK","connection": [{"jdbcUrl": "jdbc:mysql://192.168.236.136:3306/test1?useSSL=false&serverTimezone=UTC","table": ["user1"]}],"obWriteMode": "insert","column": ["*"],"preSql": [],"postSql": []}}}],"setting": {"speed": {"channel": "5"}}}
}

执行,显示如下表示成功

[root@localhost bin]# python datax.py  test9.jsonDataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.2025-04-03 19:57:24.786 [main] INFO  MessageSource - JVM TimeZone: GMT+08:00, Locale: zh_CN
2025-04-03 19:57:24.788 [main] INFO  MessageSource - use Locale: zh_CN timeZone: sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
2025-04-03 19:57:24.812 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2025-04-03 19:57:24.816 [main] INFO  Engine - the machine info  =>osInfo: Linux amd64 3.10.0-1160.el7.x86_64jvmInfo:        Red Hat, Inc. 1.8 25.412-b08cpu num:        8totalPhysicalMemory:    -0.00GfreePhysicalMemory:     -0.00GmaxFileDescriptorCount: -1currentOpenFileDescriptorCount: -1GC Names        [PS MarkSweep, PS Scavenge]MEMORY_NAME                    | allocation_size                | init_sizePS Eden Space                  | 256.00MB                       | 256.00MBCode Cache                     | 240.00MB                       | 2.44MBCompressed Class Space         | 1,024.00MB                     | 0.00MBPS Survivor Space              | 42.50MB                        | 42.50MBPS Old Gen                     | 683.00MB                       | 683.00MBMetaspace                      | -0.00MB                        | 0.00MB2025-04-03 19:57:24.825 [main] INFO  Engine -
{"content":[{"reader":{"name":"mysqlreader","parameter":{"username":"test1","password":"****************","column":["*"],"connection":[{"jdbcUrl":["jdbc:mysql://192.168.236.134:3306/test1?useSSL=false&serverTimezone=UTC"],"table":["user1"]}]}},"writer":{"name":"mysqlwriter","parameter":{"username":"test1","password":"****************","connection":[{"jdbcUrl":"jdbc:mysql://192.168.236.136:3306/test1?useSSL=false&serverTimezone=UTC","table":["user1"]}],"obWriteMode":"insert","column":["*"],"preSql":[],"postSql":[]}}}],"setting":{"speed":{"channel":"5"}}
}2025-04-03 19:57:24.839 [main] INFO  PerfTrace - PerfTrace traceId=job_-1, isEnable=false
2025-04-03 19:57:24.839 [main] INFO  JobContainer - DataX jobContainer starts job.
2025-04-03 19:57:24.840 [main] INFO  JobContainer - Set jobId = 0
2025-04-03 19:57:25.079 [job-0] INFO  OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:mysql://192.168.236.134:3306/test1?useSSL=false&serverTimezone=UTC&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true.
2025-04-03 19:57:25.080 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置存在一定的风险. 因为您未配置读取数据库表的列,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
2025-04-03 19:57:25.275 [job-0] INFO  OriginalConfPretreatmentUtil - table:[user1] all columns:[
id,user_name,pass_word,email,created_at
].
2025-04-03 19:57:25.275 [job-0] WARN  OriginalConfPretreatmentUtil - 您的配置文件中的列配置信息存在风险. 因为您配置的写入数据库表的列为*,当您的表字段个数、类型有变动时,可能影响任务正确性甚至会运行出错。请检查您的配置并作出修改.
2025-04-03 19:57:25.276 [job-0] INFO  OriginalConfPretreatmentUtil - Write data [
INSERT INTO %s (id,user_name,pass_word,email,created_at) VALUES(?,?,?,?,?)
], which jdbcUrl like:[jdbc:mysql://192.168.236.136:3306/test1?useSSL=false&serverTimezone=UTC&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true&tinyInt1isBit=false]
2025-04-03 19:57:25.277 [job-0] INFO  JobContainer - jobContainer starts to do prepare ...
2025-04-03 19:57:25.277 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] do prepare work .
2025-04-03 19:57:25.277 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do prepare work .
2025-04-03 19:57:25.277 [job-0] INFO  JobContainer - jobContainer starts to do split ...
2025-04-03 19:57:25.278 [job-0] INFO  JobContainer - Job set Channel-Number to 5 channels.
2025-04-03 19:57:25.280 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] splits to [1] tasks.
2025-04-03 19:57:25.281 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] splits to [1] tasks.
2025-04-03 19:57:25.301 [job-0] INFO  JobContainer - jobContainer starts to do schedule ...
2025-04-03 19:57:25.303 [job-0] INFO  JobContainer - Scheduler starts [1] taskGroups.
2025-04-03 19:57:25.304 [job-0] INFO  JobContainer - Running by standalone Mode.
2025-04-03 19:57:25.320 [taskGroup-0] INFO  TaskGroupContainer - taskGroupId=[0] start [1] channels for [1] tasks.
2025-04-03 19:57:25.323 [taskGroup-0] INFO  Channel - Channel set byte_speed_limit to -1, No bps activated.
2025-04-03 19:57:25.323 [taskGroup-0] INFO  Channel - Channel set record_speed_limit to -1, No tps activated.
2025-04-03 19:57:25.346 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
2025-04-03 19:57:25.445 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Begin to read record by Sql: [select * from user1
] jdbcUrl:[jdbc:mysql://192.168.236.134:3306/test1?useSSL=false&serverTimezone=UTC&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2025-04-03 19:57:25.456 [0-0-0-reader] INFO  CommonRdbmsReader$Task - Finished read record by Sql: [select * from user1
] jdbcUrl:[jdbc:mysql://192.168.236.134:3306/test1?useSSL=false&serverTimezone=UTC&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true].
2025-04-03 19:57:25.749 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[421]ms
2025-04-03 19:57:25.750 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] completed it's tasks.
2025-04-03 19:57:35.445 [job-0] INFO  StandAloneJobContainerCommunicator - Total 0 records, 0 bytes | Speed 0B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2025-04-03 19:57:35.445 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
2025-04-03 19:57:35.445 [job-0] INFO  JobContainer - DataX Writer.Job [mysqlwriter] do post work.
2025-04-03 19:57:35.445 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] do post work.
2025-04-03 19:57:35.445 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
2025-04-03 19:57:35.446 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /usr/local/datax/hook
2025-04-03 19:57:35.447 [job-0] INFO  JobContainer -[total cpu info] =>averageCpu                     | maxDeltaCpu                    | minDeltaCpu                   -1.00%                         | -1.00%                         | -1.00%[total gc info] =>NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTimePS MarkSweep         | 1                  | 1                  | 1                  | 0.042s             | 0.042s             | 0.042sPS Scavenge          | 1                  | 1                  | 1                  | 0.040s             | 0.040s             | 0.040s2025-04-03 19:57:35.447 [job-0] INFO  JobContainer - PerfTrace not enable!
2025-04-03 19:57:35.448 [job-0] INFO  StandAloneJobContainerCommunicator - Total 0 records, 0 bytes | Speed 0B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2025-04-03 19:57:35.449 [job-0] INFO  JobContainer -
任务启动时刻                    : 2025-04-03 20:04:41
任务结束时刻                    : 2025-04-03 20:04:51
任务总计耗时                    :                 10s
任务平均流量                    :                2B/s
记录写入速度                    :              0rec/s
读出记录总数                    :                 100
读写失败总数                    :                   0

成功!

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

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

相关文章

C#/.NET/.NET Core技术前沿周刊 | 第 32 期(2025年3.24-3.31)

前言 C#/.NET/.NET Core技术前沿周刊&#xff0c;你的每周技术指南针&#xff01;记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿&#xff0c;助力技术成长与视野拓宽。 欢迎投稿、推荐…

c++基础-----c++ 成员变量初始化顺序

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 描述 在C中&#xff0c;类的成员变量初始化的顺序是由它们在类中声明的顺序决定的&#xff0c;而不是由它们在构造函数初始化列表中的顺序决定的。这意味着无论你在构造函数初始化列表中如何…

Pascal语言的贪心算法

贪心算法与Pascal语言 引言 在算法设计与分析中&#xff0c;贪心算法是一类重要的算法策略。它以一种直接而高效的方式解决问题&#xff0c;尤其适合那些可以通过局部最优解推导出全局最优解的问题。在本文中&#xff0c;我们将探讨贪心算法的基本概念、工作原理及其在Pascal…

Sensodrive力控关节模组SensoJoint:TÜV安全认证助力机器人开发

在机器人技术领域&#xff0c;安全性和开发效率是行业关注的重点。SensoDrive的SensoJoint 机器人力控关节模组&#xff0c;凭借其可靠的安全性能和高效的开发优势&#xff0c;正在为机器人开发提供有力支持。 2025年3月31日&#xff0c;SensoDrive的 SensoJoint 力控关节模组获…

自动驾驶04:点云预处理03

点云组帧 感知算法人员在完成点云的运动畸变补偿后&#xff0c;会发现一个问题&#xff1a;激光雷达发送的点云数据包中的点云数量其实非常少&#xff0c;完全无法用来进行后续感知和定位层面的处理工作。 此时&#xff0c;感知算法人员就需要对这些数据包进行点云组帧的处理…

栈回溯和离线断点

栈回溯和离线断点 栈回溯&#xff08;Stack Backtrace&#xff09; 栈回溯是一种重建函数调用链的技术&#xff0c;对于分析栈溢出的根本原因非常有价值。 实现方式 // 简单的栈回溯实现示例&#xff08;ARM Cortex-M架构&#xff09; void stack_backtrace(void) {uint32_…

Vue3学习二

认识组件的嵌套 还可以将Main中内容再划分 scoped防止组件与组件之间的样式相互污染 组件的通信 父子组件之间通信的方式 父组件传递给子组件 给传过来的内容做限制 type为传的内容的属性类型&#xff0c;required为true表示该内容是必须传的&#xff0c;default为&#xff0c…

配置文件 yaml

文章目录 一、yaml简介二、YAML 文件基本语法1.缩进2.键值对3.注释4.支持多种数据类型5.示例 YML 文件 三、YAML 文件的基本元素&#xff1a;纯量、对象、数组1.纯量(scalars)(1)布尔值(Booleans)(2)Null 值 2.对象(Object) / 映射(Mapping) / 字典(Dictionaries) / 键值对(Key…

antvX6自定义 HTML 节点创建与更新教程

自定义 HTML 节点创建与更新教程 本文详细介绍如何利用 HTML、CSS 和 JavaScript 创建自定义节点&#xff0c;并通过动态更新节点数据来改变节点显示效果。无论你是否有前端基础&#xff0c;都能轻松跟着本教程一步步实现。 1. 基础样式设置 首先&#xff0c;使用 CSS 定义基…

前端开发工厂模式的优缺点是什么?

一、什么是工厂模式&#xff1f; 工厂模式属于创建型设计模式&#xff0c;核心思想是将对象的实例化过程封装到特定方法或类中&#xff0c;让客户端不需要直接通过new关键字创建对象。 举个例子&#xff1a;就像奶茶店不需要顾客自己调配饮品&#xff0c;而是通过"点单-…

Element-plus弹出框popover,使用自定义的图标选择组件

自定义的图标选择组件是若依的项目的 1. 若依的图标选择组件 js文件&#xff0c;引入所有的svg图片 let icons [] // 注意这里的路径&#xff0c;一定要是自己svg图片的路径 const modules import.meta.glob(./../../assets/icons/svg/*.svg); for (const path in modules)…

openmv用了4个了,烧了2个,质量堪忧啊

都是原装货&#xff0c;主板出现过存储不完全、图像存不上、主板代码保存乱码、意外出现乱码的现象。 希望要用的童鞋谨慎使用。

基于DrissionPage的Taptap热门游戏数据爬虫实战:从Requests到现代爬虫框架的迁移指南(含完整代码复制)

目录 ​编辑 一、项目重构背景与技术选型 1.1 原代码问题分析 1.2 DrissionPage框架优势 二、环境配置与基础改造 2.1 依赖库安装 2.2 基础类改造 三、核心功能模块重构 3.1 请求参数自动化生成 3.2 智能页面渲染 3.3 数据解析优化 四、数据库操作增强 4.1 批量插入…

解析K8S四层网络设计

模仿七层网络模型&#xff0c;抽象出四层模型 POD网络 同一节点上的pod网络 依赖于虚拟网桥/网卡&#xff08;linux虚拟设备&#xff09;pod内容器共享网络栈&#xff08;pause容器创建&#xff09; 不同节点上的pod网络 路由方案&#xff1a;依赖于底层网络设备&#x…

FPGA实现数码管显示分秒时间

目录 一. verilog实现 二. 烧录验证 三. 结果验证 使用开发板&#xff1a;DE2-115开发板 一. verilog实现 要实现分和秒&#xff0c;需要知道定时器的频率&#xff0c;通过查手册可知&#xff0c;我使用的开发板时钟为50hz&#xff0c;也就是时钟一个周期是2微秒。 5000000…

Spring 核心技术解析【纯干货版】- XVI:Spring 网络模块 Spring-WebMvc 模块精讲

在现代 Web 开发中&#xff0c;高效、稳定、可扩展的框架至关重要。Spring WebMvc 作为 Spring Framework 的核心模块之一&#xff0c;为开发人员提供了强大的 MVC 体系支持&#xff0c;使得 Web 应用的构建更加便捷和规范。无论是传统的 JSP 视图渲染&#xff0c;还是基于 RES…

MySQL系统库汇总

目录 简介 performance_schema 作用 分类 简单配置与使用 查看最近执行失败的SQL语句 查看最近的事务执行信息 sys系统库 作用 使用 查看慢SQL语句慢在哪 information_schema 作用 分类 应用 查看索引列的信息 mysql系统库 权限系统表 统计信息表 日志记录…

标题:利用 Rork 打造定制旅游计划应用程序:一步到位的指南

引言&#xff1a; 在数字化时代&#xff0c;旅游计划应用程序已经成为旅行者不可或缺的工具。但开发一个定制的旅游应用可能需要耗费大量时间与精力。好消息是&#xff0c;Rork 提供了一种快捷且智能的解决方案&#xff0c;让你能轻松实现创意。以下是使用 Rork 创建一个定制旅…

GATT(Generic Attribute Profile)是蓝牙低功耗(Bluetooth Low Energy,简称BLE)协议栈中的一个核心协议

蓝牙的 GATT&#xff08;Generic Attribute Profile&#xff09; 是蓝牙低功耗&#xff08;Bluetooth Low Energy&#xff0c;简称BLE&#xff09;协议栈中的一个核心协议&#xff0c;用于定义设备如何通过蓝牙进行数据传输和交互。GATT 是基于 ATT&#xff08;Attribute Proto…

[ deepseek 指令篇章 ]300个领域和赛道喂饭级deepseek指令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…