DataMover Docker 一键部署实测:35+ 数据源同步平台,从原生到容器化
实测 DataMover 的 Docker 部署方案——从一个用了两年原生版本的用户视角,记录一键安装的完整过程、踩坑总结和几个真实同步场景的验证结果。
聊聊数据同步这回事
做数据库迁移的人大概都遇到过这个场景——
新项目要上线,数据得从 A 库搬到 B 库。源库是 MySQL,目标库是 ClickHouse。或者更麻烦的:公司在做国产化替代,Oracle 的数据要迁移到达梦。又或者只是想用 Kafka 把业务变更广播出去,让下游消费。
不管哪种场景,本质上都是同一件事:让数据在异构数据库之间流动起来。听起来简单,但真做过的都知道,坑比想象的多。
以前我遇到同步需求,第一反应是:又得折腾了。
自己写脚本用 JDBC 硬拉?数据量一大就 OOM,没有断点续传,跑一半挂了得重来。用 DataX 配 JSON?功能强但配置写起来很烦,也没 Web 界面。上 Flink CDC?代码量不小,部署环境也重,小需求不值得搞这么重。无论选哪个,光环境配置就得花半天——装 JDK、配环境变量、调内存参数,还没开始同步已经累了。
DataMover 这个工具我很早就关注上了,之前一直在用原生部署版。解压、配参数、启动 Manager 和 Worker,流程熟悉了倒也不慢,但每换一台机器就得从头来一遍。
上个月逛官网的时候发现多了个 Docker 部署选项。说实话挺意外的——这工具居然出容器版了。赶紧拉下来试了一把。
这个工具到底能做什么
先快速说清楚 DataMover 是干什么的。
一个 Web 界面操作的数据迁移同步平台,支持 35+ 种数据源。全量迁移、增量同步、CDC 实时同步都支持,不写代码,配好就跑。
覆盖的数据库类型够全,基本市面上能想到的都在里面:
| 类别 | 数据库 |
|---|---|
| 传统关系型 | 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、DataHub |
| 文件存储 | FTP、SFTP、Samba、HDFS |
如果你正在做实时数仓构建、国产化数据库迁移、多源数据融合或者 AI 数据 pipeline,基本都能用上。
三种同步模式:
- 全量迁移——一次性把所有数据搬过去,适合首次初始化
- 增量同步——基于时间戳或自增字段周期性拉取,分钟级延迟,适合持续复制
- CDC 实时同步——基于 binlog/WAL 实时捕获变更,秒级延迟。源端支持 MySQL、Oracle、PostgreSQL、SQL Server、达梦、GaussDB
我之前用原生版跑过 MySQL → MySQL 全量测试做性能摸底,25 个字段、500 万行、2GB 数据,2 分钟跑完,算下来每秒 4.17 万行。
还有个值得提的设计:如果目标表不存在,DataMover 能自动建表,DDL 转换也是内置的——SQL Server 的 nvarchar 到 MySQL 的 varchar,不用手动调。而且它默认不往已存在的目标表写入,而是输出到加后缀的临时表,防止误覆盖。
为什么从原生换到 Docker
原生部署不是不能用,但每次部署都像开盲盒——
JDK 版本对得上吗?环境变量配好了吗?端口被占了吗?MySQL 准备好了吗?一台机器配通,换台机器又得重来一遍。团队里要配多节点更麻烦,每台 Worker 都得重复操作。
Docker 版把这堆破事全打包了。一行命令下来,容器跑起来就完事。CentOS 也好 Ubuntu 也罢,开发机还是生产机器,跑出来的环境一模一样,没有"在我电脑上是好的"这种玄学。
环境要求
就两个:
- Docker Engine 20.10+
- Docker Compose 2.x(
docker compose命令)
不用装 JDK,不用配 JAVA_HOME,什么都不用。镜像从阿里云 ACR 拉取,国内服务器不用额外配加速器。
如果服务器还没有 Docker,搜一下安装教程,装好再回来,两分钟的事。
一键安装:一行命令搞定
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 和 Compose 环境
- 下载
datamover-docker.zip并解压 - 从阿里云 ACR 拉取 Manager 和 Worker 镜像
- 用 docker-compose 启动三个容器:MySQL(元数据库)、Manager(Web 管理)、Worker(执行引擎)
第一次启动要 3-5 分钟——主要花在镜像拉取和 MySQL 初始化(Flyway 自动建表)。之后重启十几秒完事。
如果想看看包里有什么
习惯先审查一下安装包的,可以手动下载:
wget https://down.datamover.cn/datamover-docker.zip
unzip datamover-docker.zip
cd datamover-docker
目录结构很清晰:
datamover-docker/
├── docker-compose.yml # 容器编排
├── deploy.sh # Linux 部署脚本
├── deploy.ps1 # Windows 部署脚本
├── .env # 环境配置
├── 使用说明.md
└── mysql/
└── init/
└── 01-grant-privileges.sql
主要配置在 .env 里。默认密码 Dm@2024#Secure!,想改直接编辑:
DM_DB_PASSWORD=你的密码
然后启动:
chmod +x deploy.sh
./deploy.sh
脚本自动检测 3306/8000/8011 端口是否被占,被占就自动换到可用端口,启动完打印实际地址。
跑个同步任务试试
浏览器访问 http://服务器IP:8000,看到登录界面说明成了。
默认管理员账号:admin / admin123
界面不复杂,左侧几个功能:数据源管理、任务管理、执行监控、节点管理。
跑一个 MySQL → MySQL 的全量同步试试:
- 数据源管理 → 新增,填源库信息(主机、端口、库名、账号密码),测试连接,保存
- 同样步骤加目标库
- 任务管理 → 新建任务,选源和目标数据源,选要同步的表
- 同步模式选全量,保存后启动
任务跑起来后,在"执行监控"能看实时的读取行数、写入行数和耗时。500 万行两分钟不到跑完——性能和原生版一样,没因为容器化打折。
架构上 Manager 负责调度和 Web 管理,Worker 负责数据搬运。Docker 部署把这三个组件打包到一起,开箱即用。
踩坑记录
实测遇到几个问题,写出来给大家省点时间:
1. 端口冲突
我服务器上本来就跑着 MySQL,3306 被占了。部署脚本自动检测到,把容器 MySQL 映射到了其他端口,没报错也没中断。这个自动化处理挺省心。
2. 内网环境镜像拉取
有些生产环境不能访问公网。镜像在阿里云 ACR,内网机器没法直拉。解决办法是找台公网机器拉下来再搬运:
# 公网机器拉取
./deploy.sh --pull
# 导出镜像
docker save -o datamover-images.tar datamover-manager datamover-worker
# 传到内网后导入
docker load -i datamover-images.tar
之后正常执行部署脚本就行。
3. Worker 注册不上
有次 Manager 节点管理里看不到 Worker。查日志发现 DM_LOCAL_IP 自动获取的地址不对——服务器多网卡,识别搞混了。在 .env 里手动指定本机 IP:
DM_LOCAL_IP=192.168.1.100
重启 Worker,几秒后注册成功。
4. 目标表安全机制
第一次用的时候任务显示执行成功,查目标库却发现没数据。后来才反应过来:DataMover 默认不向已有的目标表写入,而是输出到加后缀的新表。这是防止误覆盖线上数据的设计。确认数据正确后,在任务配置里勾选已有表就可以了。
总结
从原生部署换到 Docker,最直接的感受就是省心。不用操心 JDK、不用配环境变量、不用管 MySQL 初始化,一行命令全搞定。任务配置和原生版一样,性能也没损耗。
社区版永久免费,3 个同步任务、1 个执行节点。免费版包含 MySQL、Oracle、PostgreSQL、SQL Server、达梦、ClickHouse、Kafka 等 17 种核心数据源,个人开发者和中小企业够用。需要更多数据源、节点或 CDC 可升级付费版。
如果你也在做数据迁移、实时同步或者国产化替换,不妨试试。
官网下载:https://datamover.cn
文档地址:https://datamover.cn/doc/
电话咨询:18032410846
相关同步方案
除了数据迁移同步解决方案,DataMover还支持以下场景:
常见问题解答
数据迁移是否支持全量和增量?
DataMover的普通任务支持全量一次性同步和基于字段的增量同步。
增量同步和实时同步有什么区别?
增量同步延迟分钟级,实时同步(CDC)可达秒级延迟,能捕获所有数据变更。
CDC同步对源数据库性能影响多大?
采用无锁读取方式,对源库性能影响极小。
免费社区版能同步多少数据?
免费社区版不限制数据量,限制3个同步任务和1个执行节点。
开始你的第一次数据同步
5分钟部署,永久免费社区版