MySQL 到达梦 DM8 数据迁移同步:Docker 容器化方案实践

国产化替代大趋势下,MySQL 数据平滑迁移到达梦 DM8 是刚需。本文使用 DataMover 这一开源数据同步工具,讲解如何通过 Docker 一键部署实现从 MySQL 到 DM8 的全量数据迁移,覆盖数据源配置、任务创建、执行监控到结果验证的完整流程。

picture.image

场景背景

做过信创项目的人都知道——MySQL 的数据要迁到达梦,看着简单,真正上手就不是那么回事了。

达梦的 SQL 语法和 MySQL 有差异,字段类型、自增主键、字符集都得处理。传统做法是:MySQL 导出 SQL → 手动改写达梦兼容语法 → 分批导入。一张表还好,几十上百张表的时候,光改 DDL 就能改到怀疑人生。

DataX 也是一个选择,但 DataX 没有 Web 界面,全靠 JSON 配置文件,每调试一次需要修改 JSON 后重启任务,反复看日志排查问题,效率上不去。

DataMover 是一个开源的数据同步工具,提供可视化 Web 界面和 Docker 容器化部署方案,支持 MySQL、达梦、Oracle、PostgreSQL 等多种数据源之间的全量、增量及 CDC 实时同步。以下是我们项目中使用 DataMover 完成 MySQL 到 DM8 迁移的完整实践。

picture.image

DataMover 关键能力

先简单说几个关键能力,后面实操都能看到:

  • 自动建表:MySQL 的 CREATE TABLE 进来,DataMover 自动转换成达梦兼容的 DDL。字段类型、注释都在,不用手工改。
  • 智能映射:同名字段自动匹配,命名不一致的手动一拖就行。
  • 断点续传:任务跑到一半断了,重启接着跑,不重复不丢数据。
  • 可视化 Web 界面:不用写 JSON,浏览器里勾选配置就能跑。

DataMover 将最繁琐的"DDL 转换 + 字段映射"自动化,大幅降低了迁移工作量和出错概率。

Docker 部署方案

Docker 容器化是 DataMover 推荐的部署方式,一条命令即可完成全组件拉起,无需手动配置 Java 环境和外部数据库依赖。容器化带来的核心收益包括:环境一致性(开发、测试、生产环境完全一致)、资源隔离(每个服务独立容器,互不干扰)、快速扩缩容(通过调整容器资源配置即可应对不同数据量级),以及便捷的运维管理(镜像版本可追溯、回滚便捷)。

一键安装(推荐)

Linux / macOS:

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 环境、下载压缩包、拉取镜像并启动 Manager、Worker 和依赖组件。首次启动需 3-5 分钟完成 MySQL 初始化和建表。

picture.image

启动完成后访问 http://localhost:8000,默认账号 admin / admin123 登录。

picture.image

picture.image 如需自定义配置(如修改默认密码、调整 JVM 参数、更换端口映射),可从下载页获取 datamover-docker.zip,解压后编辑 .env 文件,然后执行 ./deploy.sh

unzip datamover-docker.zip
cd datamover-docker
# 编辑 .env 文件修改配置
./deploy.sh

原生安装包部署

对于无法使用 Docker 的环境(如某些安全要求严格的内部网络),下载页也提供原生安装包,分 Linux、Windows、macOS 三个版本:

Linux / macOS:

wget https://down.datamover.cn/datamover-latest.zip
unzip datamover-latest.zip
cd datamover
./bin/startup.sh

Windows:

.\bin\startup.bat

启动后同样是 http://localhost:8000 访问,功能与 Docker 版完全一致。详细配置参考官方文档

Manager 服务运行在 8000 端口,Worker 运行在 8011 端口。登录后可看到数据源管理、任务管理、节点管理几个核心模块。

picture.image

配置数据源

添加 MySQL 数据源

左侧导航进"数据源管理" → "新增数据源":

  • 类型选择 MySQL
  • 填写连接信息:主机、端口(3306)、库名、用户名、密码
  • 点击"测试连接"验证连通性

picture.image

添加达梦数据源

  • 类型选择 达梦(DM)
  • 连接地址格式:jdbc:dm://192.168.1.100:5236(默认端口 5236)
  • 填写达梦的数据库名、用户名、密码
  • 测试连接

注意:达梦 JDBC 驱动版本需要与 DataMover 版本匹配。DM8 完全兼容,DM7 建议先确认驱动兼容性。连接串中也可指定字符集参数,如 ?characterEncoding=UTF-8,避免后续中文乱码问题。

picture.image

创建同步任务

选择源和目标

点"新增任务":

  1. 基础信息:任务命名,如 mysql_to_dameng_order
  2. 选择源:选 MySQL 数据源
  3. 选择目标:选达梦数据源

表选择与字段映射

勾选需要迁移的表(如 ordersusersproductsorder_items),DataMover 自动检测目标库是否存在同名表。字段映射界面左右对比展示源表和目标表字段,同名自动匹配,不一致的可以手动拖拽对齐。对于字段命名规范不同的业务表,这一功能大大减少了映射工作量。

picture.image

自动建表

目标表不存在时,DataMover 自动创建并完成类型转换——MySQL 的 AUTO_INCREMENT 转为达梦 IDENTITYVARCHARDATETIME 等类型也做对应映射。建议正式迁移前先让 DataMover 自动建表,然后到达梦客户端查看生成的 DDL,确认转换结果符合预期再运行全量迁移。

同步模式

全量同步一次性搬迁所有数据。如需持续同步可选"增量同步"或"CDC 实时同步"——CDC 实时同步功能,延迟秒级,适合需要保持源与目标数据实时一致的生产场景。

执行与监控

配置完成后点"保存并启动"。监控界面展示:

  • 当前进度:已处理行数 / 总行数
  • 吞吐量:每秒处理行数,可用于评估迁移性能
  • 运行状态:运行中 / 已完成 / 异常
  • 日志:每条同步记录的详细日志,便于问题排查

picture.image

任务报错时,DataMover 会显示具体错误信息和 SQL 上下文,在字段映射中调整类型映射后即可重试,无需重新配置整个任务。这种交互方式相比 DataX 的 JSON 修改→重启→查日志循环,效率提升明显。

结果验证

同步完成后,在达梦查询工具进行验证:

1. COUNT 校验

-- MySQL 源库
SELECT COUNT(*) FROM orders;  -- 500000-- 达梦目标库
SELECT COUNT(*) FROM orders;  -- 500000

2. 抽样核对

SELECT * FROM orders WHERE id IN (1, 100, 10000, 500000);

对比关键字段的值(订单金额、状态、时间戳等),确保数据精度无损。

3. 表结构检查:确认字段名、类型、注释与源库一致。

踩坑记录

坑 1:达梦连接端口不符

达梦默认端口 5236,但安装时可能被修改。第一次连接超时排查较久——检查了网络连通性、防火墙规则,最后才发现是端口不一致。建议连接前在达梦服务器上用 ps -ef | grep dmserver 确认实际监听端口。

坑 2:自增主键映射

MySQL 的 AUTO_INCREMENT 到达梦后转为 IDENTITY。DataMover 自动处理 DDL 转换,但若业务依赖主键自增值(如分页查询依赖主键连续性),需提前在达梦侧创建序列并设置正确起始值。

坑 3:字符集乱码

源库 utf8mb4 与达梦默认 GBK 不匹配导致中文数据入库后乱码。JDBC 连接串添加 ?characterEncoding=UTF-8 解决。对于存量数据,建议在同步前先确认两边字符集配置。

坑 4:大表场景 JVM 内存不足

多表并发处理大数据量时,Worker 容器默认 2GB JVM 堆内存可能不够,导致 OOM 或频繁 Full GC 影响吞吐量。在 .env 中调大内存:

JAVA_OPTS=-Xms4g -Xmx4g

重新执行 ./deploy.sh 使配置生效。对于超大表(亿级行数),还可考虑分批迁移或调整 Worker 并发线程数。

总结

MySQL 到达梦 DM8 的数据迁移,核心需求是数据不丢、不错、支持断点续传。DataMover 的 Docker 容器化方案提供了环境一致性和快速部署能力,Web 界面配合自动化 DDL 转换和字段映射大幅降低了迁移复杂度。

picture.image

0
0
0
0
评论
未登录
暂无评论