DataMover Docker 一键部署实测:从原生到容器化,数据迁移同步工具实践
用了两年 DataMover 原生版,最近发现它出了 Docker 部署方案,实测记录整个过程——环境准备、安装步骤、踩坑总结和同步场景验证。
背景
做数据库迁移的人大概都遇到过这个场景——新项目要上线,数据得从 A 库搬到 B 库。源库是 MySQL,目标库是 ClickHouse。或者更麻烦的:公司在做国产化替代,Oracle 的数据要迁移到达梦。
以前我遇到这种需求,第一反应就是:又得折腾了。
自己写脚本用 JDBC 硬拉?数据量一大就 OOM,跑一半挂了还得重来。用 DataX 配 JSON?功能强但配置写起来繁琐,也没 Web 界面。上 Flink CDC?代码量不小,部署环境也重。无论选哪个,光配置环境就得花半天——装 JDK、配环境变量、调内存参数。
DataMover 我关注了挺久,之前一直在用原生部署版。解压、配参数、启动 Manager 和 Worker,流程熟悉了倒也不慢,但每换一台机器就得从头来一遍。上个月发现它出了 Docker 版,赶紧试了一下。
DataMover 能做什么
先快速说清楚这个工具是干什么的。一个 Web 界面操作的数据迁移同步平台,支持 35+ 种数据源,不写代码,配好就能跑。
支持的数据库类型(完整列表见官网):
| 类别 | 数据库 |
|---|---|
| 传统关系型 | MySQL、PostgreSQL、Oracle、SQL Server、MariaDB、Db2、Sqlite、Sybase |
| 国产数据库 | 达梦(DM)、GaussDB、OceanBase、Kingbase、Gbase8a/8s、PolarDB |
| 数据仓库 | ClickHouse、Apache Doris、SelectDB、Hive、ODPS |
| NoSQL | MongoDB、Redis、Elasticsearch、HBase |
| 消息队列 | Kafka、RabbitMQ、RocketMQ、ActiveMQ |
| 文件存储 | FTP、SFTP、Samba、HDFS |
三种同步模式:全量迁移(一次性搬迁)、增量同步(基于时间戳/自增字段周期拉取,分钟级延迟)、CDC 实时同步(基于 binlog/WAL,秒级延迟,源端支持 MySQL/Oracle/PostgreSQL/SQL Server/达梦/GaussDB)。

性能方面,我之前用原生版跑过 MySQL → MySQL 全量测试,25 个字段、500 万行、2GB 数据,2 分钟跑完,每秒 4.17 万行。
有个设计细节值得提:如果目标表不存在,它会自动建表,DDL 转换也是内置的——SQL Server 的 nvarchar 到 MySQL 的 varchar,不用手动调。而且默认不向已存在的目标表写入,而是输出到加后缀的临时表,防止误覆盖。
为什么从原生换到 Docker
原生部署不是不能用,但每次部署都像开盲盒——JDK 版本对得上吗?环境变量配好了吗?一台机器配通,换台又得重来。
Docker 版把这些全打包了。一行命令拉下来,容器跑起来就完事。CentOS 也好 Ubuntu 也罢,开发机还是生产机器,环境一模一样。

环境要求就两个:Docker Engine 20.10+ 和 Docker Compose 2.x。不用装 JDK,不用配 JAVA_HOME。镜像从阿里云 ACR 拉取,国内服务器不用额外配加速器。
一键安装
curl -fsSL https://down.datamover.cn/install.sh | bash
Windows 走 PowerShell:
Set-ExecutionPolicy Bypass -Scope Process -Force; irm https://down.datamover.cn/install.ps1 | iex
脚本自动完成:检查 Docker 环境 → 下载压缩包 → 拉取镜像 → 启动 MySQL、Manager、Worker 三个容器。第一次启动 3-5 分钟,主要花在镜像拉取和 MySQL 初始化上。
如果想先审查内容,也可以手动下载解压再部署:
wget https://down.datamover.cn/datamover-docker.zip
unzip datamover-docker.zip
cd datamover-docker
目录结构:docker-compose.yml、deploy.sh、deploy.ps1、.env 环境配置文件。.env 里可以改默认密码 Dm@2024#Secure!。
chmod +x deploy.sh
./deploy.sh
部署脚本自动检测 3306/8000/8011 端口是否被占,被占会自动换到可用端口,启动完打印实际地址。
跑个同步任务
浏览器访问 http://IP:8000,看到登录界面说明部署成功。

默认账号 admin/admin123。
操作流程:
- 数据源管理 → 新增源库,填连接信息,测试连接,保存
- 同样方式加目标库
- 任务管理 → 新建任务,选源和目标数据源,选要同步的表
- 选同步模式(全量/增量/CDC),保存后启动
在"执行监控"里看实时读取行数、写入行数和耗时。500 万行两分钟跑完,性能和原生版一样。
踩坑记录
1. 端口冲突:服务器已有的 MySQL 占了 3306,部署脚本自动检测并映射到其他端口,没报错。
2. 内网镜像拉取:生产环境不能访问公网的话,需先在有公网的机器拉取再搬运:
./deploy.sh --pull
docker save -o datamover-images.tar datamover-manager datamover-worker
# 传到内网
docker load -i datamover-images.tar
3. Worker 注册不上:多网卡机器上 DM_LOCAL_IP 自动获取可能不对,在 .env 里手动指定本机 IP,重启 Worker 即可。
4. 目标表没数据:任务显示成功但目标表没数据——因为 DataMover 默认不向已有表写入,输出到加后缀的新表。这是防误覆盖的设计,确认数据后在配置里勾选已有表就行。
踩坑记录不用怕
上面的问题都是实际测试中遇到的,都有解决办法。整体来说 Docker 版部署体验比原生版好很多,不用再操心 JDK 和环境配置了。
对于正在做数据迁移同步方案选型的同学,这个工具社区版免费,3 个任务 + 1 个节点够起步。包含 MySQL、Oracle、SQL Server、达梦、ClickHouse 等 17 种数据源,日常场景基本覆盖了。
更多推荐

所有评论(0)