针对国产化改造项目中,业务系统数据库从 MySQL 迁移到达梦的场景,本例构建了MySQL8.0的单机示例数据,并详细记录了从MySQL8.0迁移到DM8的实操过程和本次测试用例中MYSQL和DM典型差异的对比,以供参考。
1.基础环境
1.基础环境配置
1.迁移评估:
根据评估执行结果,将触发器以及高风险迁移对象存储过程单独迁移,便于观察MYSQL和达梦在触发器和存储过程中的典型差异。
2.新建迁移工程,配置源端 MySQL 连接
3.配置目标端 DM8 连接,选择迁移源库(MySQL db_user 业务库)
4.选择待迁移业务对象(触发器、存储过程除外)
5.迁移结果,迁移成功
6.触发器和存储过程分别执行迁移
迁移结果均显示执行成功
7.达梦端验证触发器是否可用
触发器TRIGGER trg_user_before_insert验证
主表t_user_main写入数据,触发日志表t_user_log记录新增用户ID与操作时间,触发器验证可用
8.达梦端验证存储过程是否可用
验证结果显示存储过程虽然迁移成功了,但实际在达梦中不能用
**解决方法:**改为手动迁移
原 MySQL 逻辑:遍历指定库所有表,动态 count 每张表行数,写入辅助表MYSQL_TABLES;
关键点差异:
@xxx达梦不支持,替换为局部变量;information_schema.TABLES → DM 系统视图ALL_TABLES;DELIMITER分隔符;EXECUTE IMMEDIATE,不能使用PREPARE/EXECUTEMySQL 风格;UPPER()转换。手动迁移成功,存储过程可成功统计表的数据量记录到辅助表中。
1.达梦COMPATIBLE_MODE=4是降低迁移工作量的核心手段,可解决绝大多数业务 DML 语法问题,但针对触发器、存储过程,在迁移过程中仍需人工进行验证和改写;
DTS 工具仅做结构与数据迁移,数据库可编程对象(触发器、存储过程)无法自动兼容,需预留充足人工改造时间。
文章
阅读量
获赞
