5.0 KiB
5.0 KiB
DataX 同步部署与使用说明
一、下载与安装 DataX
-
下载 DataX 包 官方下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
-
部署到服务器 将压缩包上传并解压到
/usr/local/目录:cd /usr/local tar zxvf datax.tar.gz # 解压后应当存在 /usr/local/datax 目录
二、配置部署
本方案通过一套脚本支持 Doris 和 MySQL 的同步,并统一了 JSON 配置目录。
-
上传文件 请将本地
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 <-- 停止增量定时任务 - 文件夹
-
赋予执行权限
cd /usr/local/datax chmod +x *.sh
三、运行策略说明
脚本现在支持通过参数指定同步目标:doris 或 mysql。
1. 全量同步 (Full Sync)
- 适用场景:系统初始化,或数据需要彻底重刷。
- 同步逻辑:
- Doris: 使用
TRUNCATE清空目标表,通过 Stream Load 写入。 - MySQL: 自动切换为 CSV Load 模式(高性能),通过生成 CSV 并执行
LOAD DATA LOCAL INFILE实现秒级同步。
- Doris: 使用
- 执行命令:
./run_jobs_full.sh doris # 同步到 Doris ./run_jobs_full.sh mysql # 同步到 MySQL
2. 增量同步 (Incremental Sync)
- 适用场景:日常实时数据同步。
- 同步逻辑:
- 动态 SQL: 自动解析模板并生成
ORDER BY id DESC LIMIT 1000查询。 - Upsert: 利用目标库主键模型自动完成“存在即更新,不存在即插入”。
- 动态 SQL: 自动解析模板并生成
- 执行命令:
./run_jobs_inc.sh doris # 同步到 Doris ./run_jobs_inc.sh mysql # 同步到 MySQL
四、自动化定时任务配置
增量同步已优化为 高频实时同步。
-
启动定时任务
./start_cron_inc.sh doris # 启动同步到 Doris 的任务 ./start_cron_inc.sh mysql # 启动同步到 MySQL 的任务- 执行频率: 每 5 秒 执行一次。
- 单次数据量: 每次同步最新的 1000 条。
-
停止定时任务
./stop_cron_inc.sh doris ./stop_cron_inc.sh mysql -
验证与日志
- 查看任务:
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.