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.pswp.cn/diannao/76733.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76733.shtml
英文地址,請注明出處:http://en.pswp.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;點贊?評論?收藏 養成習…