1. 迁移前奏:先搞清楚你的库到底有多“歪”
1.1 盘点家底:对象与数据量评估
我见过太多人拿到迁移任务就直接打开工具开导,结果导到一半报错,回头一看才发现源库里有几十个视图、一堆自定义函数、还有定时任务没迁移。所以第一步不是动手,而是先把源库的家底盘清楚。
你需要梳理的对象清单包括:表、视图、存储过程、自定义函数、触发器、定时事件、索引、约束、外键关系。别看这些好像都差不多,MySQL和达梦在每一个对象类型上都有不同程度的方言差异,后面我会逐个说。
盘点数据量的方法很简单,直接查 information_schema 就行:
sql复制SELECT
table_schema,
table_name,
table_rows,
ROUND((data_length + index_length) / 1024 / 1024, 2) AS size_mb
FROM information_schema.tables
WHERE table_schema = 'your_db'
ORDER BY size_mb DESC;
注意 table_rows 是估估值,InnoDB 下并不精确,但用来排序找大表足够了。更准确的做法是对核心大表执行 COUNT(*),不过生产环境别浪,挑业务低峰期做。
另外还要顺便摸一下表的“形态”:是不是分区表?有没有自增列?有没有 ON UPDATE CURRENT_TIMESTAMP 这种 MySQL 特性?字段默认值有没有用函数表达式?这些在达梦里可能完全不支持,早发现早处理,别等迁移工具帮你踩雷。
提示:把对象清单导成 Excel,标记每类对象的数量、是否使用了特殊特性,这个清单就是你整个迁移工期的排期表。
1.2 达梦与MySQL的核心差异速览
很多“迁移失败”并不是技术做不到,而是没有认识到这两个数据库在架构层面的天然差异。我把最影响迁移路径的内容列成一张速查表:
| 对比项 | MySQL | 达梦8 |
|---|---|---|
| 大小写敏感 | 与操作系统相关,通常库名表名小写 | 实例初始化参数 CASE_SENSITIVE 决定,1为敏感,0为不敏感 |
| 库与模式概念 | database 即 schema | 用户(USER)与模式(SCHEMA)关联,一个用户默认对应一个同名模式 |
| 自增列 | AUTO_INCREMENT |
IDENTITY(1,1) 或序列 + 默认值 |
| 时间类型精度 | DATETIME(6) 微秒精度 |
TIMESTAMP 精度可达微秒,DATE 在达梦中包含时分秒 |
| 分页语法 | LIMIT offset, count |
兼容模式下支持 LIMIT,原生也支持 TOP 和 FETCH |
| 字符串连接 | CONCAT() |
` |
| 空值处理 | IFNULL() |
NVL() / IFNULL() |
NULL 排序 |
默认升序 NULL 排最前 | 默认升序 NULL 排最后,可通过 NULLS FIRST/LAST 控制 |
| 存储引擎 | InnoDB/MyISAM 等 | 统一页式存储,无引擎概念 |
| 双引号 | 默认字符串或标识符(看 ANSI_QUOTES) |
默认标识符;字符串必须用单引号 |
优先级最高的一个决策点是:大小写策略必须在初始化实例前确定,一旦定了后期几乎没法改。你要先摸清现有 MySQL 里表名、列名、存储过程体里的大小写使用习惯,再决定达梦实例的 CASE_SENSITIVE 取值。
我个人的建议是:如果你只有一个迁移任务,尽量把达梦的 CASE_SENSITIVE 设置为 0(不敏感),这样 MySQL 侧那些“表名字段名随手写、大小写混用”的习惯在达梦侧不会炸。缺点是后续新开发的 SQL 如果不规范,可能查出来列名大小写和定义不一致,但总体来说迁移阶段省事太多。
1.3 迁移策略选型:全量、增量、双写?
迁移策略不是拍脑袋定的,取决于业务方给你多少停机窗口。
- 停机迁移:最省事。业务停写,导出全量数据,导入达梦,校验完成后切换应用连接。适合数据量在几百 GB 以内、业务允许停 2-4 小时的中小系统。
- 全量+增量:先全量迁移,再用日志或 CDC 工具做增量追平,切换前短暂停写。适合数据量大、停机窗口短的场景。热词里提到的
seatunnel 达梦 cdc就是这类场景下的典型玩法。 - 双写并行:新老并行写一段时间,等两边数据一致再切换。这个方案对应用改造要求高,建议只在核心交易链路使用。
对于第一次做 MySQL 到达梦迁移的团队,我最推荐“全量+短暂停写”的组合:先用全量迁移工具导数据,演练几轮把耗时长的问题暴露出来,切换当天停写 15 分钟做增量补齐,然后直接改连接串。这套方案代码改动小,出问题也容易回滚。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 迁移工具与路径:别再一张张导表了
2.1 达梦官方数据迁移工具(DTS)
达梦官网提供的数据迁移工具(DTS)是 GUI 程序,Windows 和 Linux 版本都有,通常和数据库安装包一起打包。它是大多数人迁移 MySQL 到达梦的首选工具。
DTS 的工作流程很直观:新建工程 → 新建迁移 → 配置源库(MySQL)和目标库(DM8)→ 选择迁移对象 → 保存执行。
实操时有几个细节特别值得注意:
第一,源库配置选择 MySQL 后,需要填 IP、端口、用户名密码和数据库名。如果你要迁移的 MySQL 有多个 database,DTS 会分别列
