Files
aiData/DataX/说明.md
HuangHai 4825ace45e 'commit'
2026-02-06 07:51:57 +08:00

5.0 KiB
Raw Blame History

DataX 同步部署与使用说明

一、下载与安装 DataX

  1. 下载 DataX 包 官方下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz

  2. 部署到服务器 将压缩包上传并解压到 /usr/local/ 目录:

    cd /usr/local
    tar zxvf datax.tar.gz
    # 解压后应当存在 /usr/local/datax 目录
    

二、配置部署

本方案通过一套脚本支持 DorisMySQL 的同步,并统一了 JSON 配置目录。

  1. 上传文件 请将本地 d:\dsWork\aiData\DataX\ 目录下的以下内容上传至服务器 /usr/local/datax/ 根目录下:

    • 文件夹 json/ (存放统一的 JSON 模板)
    • 文件夹 tool/ (存放高性能导入工具)
    • 脚本 run_jobs_full.sh (全量执行脚本)
    • 脚本 run_jobs_inc.sh (增量执行脚本)
    • 脚本 start_cron_inc.sh(启动定时任务)
    • 脚本 stop_cron_inc.sh (停止定时任务)

    上传后的服务器目录结构应如下所示:

    /usr/local/datax/
    ├── bin/
    ├── conf/
    ├── json/            <-- 统一配置目录 (包含全量/增量通用模板)
    ├── tool/            <-- 导入工具目录 (包含 LoadCsvToMysql.py)
    ├── run_jobs_full.sh <-- 全量同步脚本 (支持 doris/mysql)
    ├── run_jobs_inc.sh  <-- 增量同步脚本 (支持 doris/mysql)
    ├── start_cron_inc.sh<-- 启动增量定时任务
    └── stop_cron_inc.sh <-- 停止增量定时任务
    
  2. 赋予执行权限

    cd /usr/local/datax
    chmod +x *.sh
    

三、运行策略说明

脚本现在支持通过参数指定同步目标:dorismysql

1. 全量同步 (Full Sync)

  • 适用场景:系统初始化,或数据需要彻底重刷。
  • 同步逻辑
    1. Doris: 使用 TRUNCATE 清空目标表,通过 Stream Load 写入。
    2. MySQL: 自动切换为 CSV Load 模式(高性能),通过生成 CSV 并执行 LOAD DATA LOCAL INFILE 实现秒级同步。
  • 执行命令
    ./run_jobs_full.sh doris  # 同步到 Doris
    ./run_jobs_full.sh mysql  # 同步到 MySQL 
    

2. 增量同步 (Incremental Sync)

  • 适用场景:日常实时数据同步。
  • 同步逻辑
    1. 动态 SQL: 自动解析模板并生成 ORDER BY id DESC LIMIT 1000 查询。
    2. Upsert: 利用目标库主键模型自动完成“存在即更新,不存在即插入”。
  • 执行命令
    ./run_jobs_inc.sh doris   # 同步到 Doris
    ./run_jobs_inc.sh mysql   # 同步到 MySQL 
    

四、自动化定时任务配置

增量同步已优化为 高频实时同步

  1. 启动定时任务

    ./start_cron_inc.sh doris  # 启动同步到 Doris 的任务
    ./start_cron_inc.sh mysql  # 启动同步到 MySQL 的任务
    
    • 执行频率: 每 5 秒 执行一次。
    • 单次数据量: 每次同步最新的 1000 条
  2. 停止定时任务

    ./stop_cron_inc.sh doris
    ./stop_cron_inc.sh mysql
    
  3. 验证与日志

    • 查看任务crontab -l
    • 查看日志:日志保存在 logs/ 目录下。
    tail -f logs/datax_inc_mysql_cron.log
    

五、重要性能说明与测试报告

本方案针对 MySQL 到 MySQL/Doris 的同步进行了深度榨干级的性能优化,实测效果惊人。

1. 性能实测报告 (2026-02-06)

  • 同步速率: 稳定在 12,000 ~ 14,000 条/秒
  • 吞吐量: 瞬时最高突破 8.01 MB/s
  • 同步耗时: 百万级数据量可在 1-2 分钟内 完成全量同步。
  • 资源占用: JVM 堆内存稳定在 2GB 左右G1GC 平均停顿时间 < 10ms。

2. 为什么同步到 MySQL 这么牛B (核心技术揭秘) 普通的 DataX mysqlwriter 使用 JDBC 插入,每秒仅几百条。本方案通过 "降维打击" 实现了质的飞跃:

  • CSV Load 模式 (全量核心):
    • 原理: 放弃传统的 INSERT 语句,先由 DataX 将数据以极速流式写入本地 CSV 文件。
    • 导入: 调用 MySQL 引擎最底层的 LOAD DATA LOCAL INFILE 命令。这是 MySQL 官方最快的导入方式,绕过了 SQL 解析和预处理,直接进行二进制级的数据灌入。
    • 效果: 性能比 JDBC 模式提升了 30 倍以上
  • Reader 侧多线程并发:
    • 配置 channel=4 并行读取,配合 fetchSize=4096 批量抓取,彻底消除了源端读取等待。
  • 增量高频 Upsert:
    • 利用 Unique Key 模型,每 5 秒进行一次 1000 条的精准“覆盖更新”,在保证实时性的同时,对数据库几乎零负载。

3. 优化参数清单

  • Reader: fetchSize=4096, querySql 动态生成。
  • Writer: batchSize=2048 (JDBC), LOAD DATA (Full).
  • JVM: -Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxMetaspaceSize=256m.