5.6 KiB
5.6 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 配置目录。
-
环境准备 (重要) 高性能同步工具依赖 Python 的 MySQL 驱动,请先在服务器执行以下命令安装:
# Rocky Linux / CentOS 9 yum install -y python3-PyMySQL # 验证安装 (返回“成功”即表示OK) python3 -c "import pymysql; print('成功')" -
上传文件 请将本地
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 百万级数据实测)
- 同步数据量: 278 万条 (2.78 Million Records)。
- 同步速率: 稳定在 11,500 ~ 12,000 条/秒。
- 吞吐量: 稳定在 6.5 ~ 6.8 MB/s。
- 内存表现:
- Eden Space: 占用约 650MB (50%),内存分配非常充裕。
- GC 效率: G1 回收器表现极佳,72次 Young GC 总耗时仅 0.597秒(平均每次仅 8ms),对同步性能零干扰。
- 稳定性: 全程 0 错误,
WaitWriterTime极低 (0.7s),写入端完全无压力。
2. 核心技术优化揭秘
- 消除 SSL 握手开销:
- 在 JDBC 连接中强制指定
useSSL=false。 - 效果: 既消除了日志中的安全警告,也减少了每次连接建立时的加密握手时间,在高频同步场景下提升显著。
- 在 JDBC 连接中强制指定
- Reader 侧吞吐量暴增:
- 高并发: 将
channel提升至 8,并行抽取能力翻倍。 - 大缓存: 将
fetchSize提升至 10,000。这是解决WaitReaderTime的核心,极大减少了 DataX 与源数据库之间的交互次数。
- 高并发: 将
- CSV Load 模式 (全量核心):
- 通过 Python 脚本自动将 DataX 转换为
txtfilewriter生成 CSV。 - 利用 MySQL 官方最快的
LOAD DATA LOCAL INFILE导入,比传统 JDBCINSERT快 30倍 以上。
- 通过 Python 脚本自动将 DataX 转换为
- JDBC Batch 优化 (增量/JDBC 模式):
- 启用了
rewriteBatchedStatements=true,将多条REPLACE语句合并为单条执行,大幅降低网络往返。
- 启用了
3. 最终优化参数清单
- Reader:
channel=8,fetchSize=10000,useSSL=false。 - Writer:
batchSize=2048,rewriteBatchedStatements=true,LOAD DATA(全量)。 - JVM:
-server -Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxMetaspaceSize=256m。