news 2026/8/31 6:36:30

MySQL数据库迁移达梦数据库学习报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL数据库迁移达梦数据库学习报告

文章目录

  • MySQL数据库迁移达梦数据库学习报告
    • 概述
    • 源库环境准备
      • MySQL数据库安装
      • 数据库实例配置
      • 创建测试数据库与业务对象
      • 源库连接信息确认
    • 迁移前评估
      • 启动DTS工具
      • 创建评估工程与节点
      • 配置评估数据源
      • 配置评估内容与策略
      • 选择评估对象
      • 执行评估并查看报告
    • 执行迁移
      • 创建迁移节点
      • 配置迁移数据源
      • 配置迁移策略
      • 选择迁移对象
      • 执行迁移任务
    • 迁移后对比
      • 创建对比节点
      • 配置对比选项
      • 选择对比对象
      • 对比中的精度差异说明
    • 验证迁移结果
      • 验证测试表
      • 验证视图
      • 验证函数
      • 验证存储过程
      • 验证触发器
    • 学习总结

MySQL数据库迁移达梦数据库学习报告

使用DTS工具完成MySQL到DM的迁移评估、执行、对比与验证

概述

本次学习通过达梦数据迁移工具DTS,完成从MySQL数据库到达梦数据库的完整迁移示范过程。整个流程包括源库环境准备、迁移前兼容性评估、执行数据迁移、迁移后数据对比以及迁移结果验证五个阶段,全面掌握异构数据库迁移的标准流程和关键要点。

项目配置
源数据库MySQL 8.0.46(Windows环境)
目标数据库达梦DM8(Linux环境)
迁移工具达梦DTS(Data Migration Tool)
迁移对象表、视图、函数、存储过程、触发器
迁移数据库db_mysql

源库环境准备

MySQL数据库安装

在Windows宿主机环境下完成MySQL数据库的安装,本次实战使用MySQL 8.0.46版本。通过MySQL Installer安装向导完成软件安装。

数据库实例配置

MySQL软件安装完成后,通过MySQL Installer进行实例配置,主要步骤如下:

  • 类型与网络:配置类型选择"Development Computer",端口保持默认3306,确保网络开放以便Linux端DTS工具访问
  • 设置管理员root密码:设置root密码为Mysql123
  • 设置Windows服务:自动生成服务名MySQL80,设置为开机自启
  • 执行配置:确认所有配置项无误后点击"Execute"执行配置



创建测试数据库与业务对象

使用root用户登录MySQL,创建测试数据库并设置字符集:

-- 创建数据库,字符集设为utf8mb4CREATEDATABASEdb_mysqlDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;-- 切换到该数据库USEdb_mysql;

db_mysql数据库中创建部门表dept与员工表emp,并插入测试数据:

-- 创建部门表CREATETABLEdept(deptnoINTPRIMARYKEY,dnameVARCHAR(50),locVARCHAR(50));-- 创建员工表CREATETABLEemp(empnoINTPRIMARYKEY,enameVARCHAR(50),jobVARCHAR(30),mgrINT,hiredateDATE,salDECIMAL(10,2),commDECIMAL(10,2),deptnoINT,createtimeDATETIME,remarkVARCHAR(200),FOREIGNKEY(deptno)REFERENCESdept(deptno));-- 插入测试数据INSERTINTOdeptVALUES(10,'ACCOUNTING','NEW YORK');INSERTINTOdeptVALUES(20,'RESEARCH','DALLAS');INSERTINTOdeptVALUES(30,'SALES','CHICAGO');INSERTINTOempVALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20,NOW(),NULL);INSERTINTOempVALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30,NOW(),NULL);COMMIT;

在表的基础上创建多种数据库对象,包括视图、存储过程、函数和触发器:

-- 创建视图CREATEVIEWv_emp_deptASSELECTe.empno,e.ename,e.sal,d.dnameFROMemp eJOINdept dONe.deptno=d.deptno;-- 创建函数DELIMITER//CREATEFUNCTIONfn_salary_level(salDECIMAL(10,2))RETURNSVARCHAR(20)DETERMINISTICBEGINIFsal>=3000THENRETURN'高薪';ELSEIFsal>=1000THENRETURN'中薪';ELSERETURN'普通';ENDIF;END//DELIMITER;-- 创建存储过程DELIMITER//CREATEPROCEDUREsp_get_employees_by_dept(INp_deptnoINT)BEGINSELECT*FROMempWHEREdeptno=p_deptno;END//DELIMITER;-- 创建触发器DELIMITER//CREATETRIGGERtrg_emp_before_insert BEFOREINSERTONempFOR EACH ROWBEGINIFNEW.remarkISNULLTHENSETNEW.remark=CONCAT('自动生成:',NEW.ename,'的入职记录');ENDIF;END//DELIMITER;


源库连接信息确认

迁移前确认MySQL源库的连接参数,确保达梦DTS工具能够正常访问源库:

参数说明
宿主机IP192.168.1.xxxMySQL所在Windows主机IP
端口3306MySQL默认端口
数据库名db_mysql迁移的数据库
用户名root迁移用户
密码Mysql123用户密码

注意:需要确保Windows防火墙开放3306端口,且MySQL用户允许从远程IP连接(需要执行GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码';并执行FLUSH PRIVILEGES;)。

迁移前评估

在正式迁移前,对迁移任务进行评估是确保迁移成功的必要环节。评估能提前发现源数据库与目标数据库之间的兼容性问题,包括对象语法兼容性、字符集兼容性、对象类型支持度以及数据量评估等。

启动DTS工具

在达梦数据库所在的Linux环境下,开启图形化界面权限并设置DISPLAY变量,进入达梦安装目录的tool目录,执行./dts启动达梦数据迁移工具。

# 设置图形化显示exportDISPLAY=:0.0# 进入工具目录cd/home/dmdba/dmdbms/tool# 启动DTS./dts

创建评估工程与节点

在DTS工具中创建迁移工程mysql_to_dm,在工程下的评估目录中新建评估任务assess_employee,迁移路径选择MySQL => DM

配置评估数据源

配置MySQL源库连接信息,包括主机IP、端口、数据库名、用户名和密码。配置完成后点击"测试连接",确认源库连接正常。

配置评估内容与策略

本次评估对象数量较少,选择"选择评估对象"方式手动指定待评估对象。由于数据量较小,无需统计表信息,评估SQL和评估策略按默认选项处理。

选择评估对象

指定评估数据库为db_mysql,选择该数据库下所有对象,包括表(dept/emp)、视图(v_emp_dept)、函数(fn_salary_level)、存储过程(sp_get_employees_by_dept)、触发器(trg_emp_before_insert)。

执行评估并查看报告

完成所有配置后,确认评估任务配置无误,点击"完成"开始执行评估。评估完成后查看评估报告,分析兼容性结果。

本次评估结果显示,该版本MySQL数据库对象与达梦数据库兼容性较好。其中视图与触发器标记为不兼容,其他对象完全兼容或转换后兼容。但在后续迁移后对比与迁移验证中证明,视图与触发器实际成功迁移并能正常使用,评估结果存在一定的误报情况。

执行迁移

创建迁移节点

在工程mysql_to_dm下的迁移目录中新建迁移任务migrate_employee,迁移路径选择MySQL => DM

配置迁移数据源

分别配置源端和目的端的数据源连接:

  • 源端MySQL配置:与评估节点配置一致
  • 目的端达梦配置:配置达梦目标库的IP、端口、用户名和密码,测试连接确认正常

配置迁移策略

迁移策略与评估节点配置相同,选择"选择迁移对象"方式,手动指定需要迁移的对象。

选择迁移对象

指定数据库为db_mysql,勾选需要迁移的所有对象类型,包括该数据库下的两张表(dept、emp)、视图、函数、存储过程和触发器。

执行迁移任务

查看迁移任务配置,确认源端和目的端对象对应关系无误后,点击"完成"开始执行迁移。迁移过程中可以查看每个对象的迁移状态和进度。

迁移后对比

迁移完成后,需要对源库和目标库的对象定义和数据进行对比,验证迁移的准确性和完整性。

创建对比节点

在DTS工具中创建对比节点,数据源配置与迁移节点保持一致,源端为MySQL,目的端为达梦。

配置对比选项

选择"对比指定类型的对象",对比策略保持默认。对比内容包括对象定义(DDL语句)和数据(DML依据)两个维度。

注意:对比时不要勾选"忽略大小写"选项。如果勾选忽略大小写,在对比执行时可能出现定义与数据不一致的情况。因为MySQL中的表字段名是小写,而达梦实例配置了大小写敏感(CASE_SENSITIVE=Y),迁移后字段名会自动转为大写,忽略大小写会导致对比逻辑混乱。

选择对比对象

指定db_mysql模式并选择该模式下所有对象,执行对比。对比完成后查看对比报告,获取对比结果。

📸 截图位置12:对比报告结果

本次对比结果显示,不一致数量为0,说明源端和目的端db_mysql模式下的对象和数据完全一致,迁移成功。


对比中的精度差异说明

在对比过程中发现,emp表和dept表的createtime字段(DATETIME类型)存在显示精度差异:

  • MySQL数据库DATETIME精度为秒,显示格式为16:43:31.0
  • 达梦数据库DATETIME类型支持纳秒级精度,显示格式为16:43:31.000000000

这是由于两个数据库的DATETIME类型默认精度不同导致的显示差异,实际数据值是一致的,不影响数据的正确性。如果需要统一显示格式,可以在达梦端通过TO_CHAR函数指定格式输出。

验证迁移结果

使用达梦管理工具Manager连接达梦目标库,在模式中可以看到从MySQL迁移过来的db_mysql模式。对迁移过来的对象进行功能验证,确保所有对象都能正常使用。

验证测试表

查询dept和emp表的数据,确认数据完整且与源库一致:

-- 查询部门表SELECT*FROMdb_mysql.deptORDERBYdeptno;-- 查询员工表SELECT*FROMdb_mysql.empORDERBYempno;-- 统计数据量SELECTCOUNT(*)FROMdb_mysql.dept;SELECTCOUNT(*)FROMdb_mysql.emp;

验证视图

查询迁移过来的视图,确认视图定义正确且能正常查询:

-- 查询视图SELECT*FROMdb_mysql.v_emp_dept;-- 查看视图定义SELECTTEXTFROMALL_VIEWSWHEREOWNER='DB_MYSQL'ANDVIEW_NAME='V_EMP_DEPT';

验证函数

调用迁移过来的函数,确认函数能正常执行并返回正确结果:

-- 调用函数SELECTdb_mysql.fn_salary_level(5000)FROMDUAL;SELECTdb_mysql.fn_salary_level(15000)FROMDUAL;

验证存储过程

执行迁移过来的存储过程,确认存储过程能正常运行:

-- 执行存储过程CALLdb_mysql.sp_get_employees_by_dept(20);

验证触发器

插入一条数据到emp员工表,触发器trg_emp_before_insert会自动开启事务并生成该条数据的remark字段,验证触发器是否正常工作:

-- 插入数据触发触发器(remark字段不指定值,由触发器自动生成)INSERTINTOdb_mysql.emp(empno,ename,job,mgr,hiredate,sal,comm,deptno,createtime)VALUES(9999,'TEST','CLERK',7902,DATE'2026-01-01',800,NULL,20,SYSDATE);-- 验证触发器执行结果(remark字段应自动生成)SELECTempno,ename,remarkFROMdb_mysql.empWHEREempno=9999;-- 清理测试数据DELETEFROMdb_mysql.empWHEREempno=9999;COMMIT;

学习总结

通过本次MySQL到达梦的完整迁移实践,深入掌握了异构数据库迁移的标准流程和关键要点:

  1. MySQL安装完成后需要通过MySQL Installer进行实例配置,包括配置类型选择、端口设置、root密码设置和Windows服务配置。默认端口3306,需要确保网络开放以便远程DTS工具访问。
  2. 迁移前评估能提前发现兼容性问题,但评估结果存在一定的误报情况。本次评估显示视图和触发器不兼容,但在后续迁移后对比与验证中证明视图与触发器成功迁移并有效使用。因此评估结果仅供参考,最终以迁移后实际验证为准。
  3. 迁移后进行对比验证时,不要勾选"忽略大小写"选项。因为MySQL表字段名是小写,而达梦实例配置了大小写敏感(CASE_SENSITIVE=Y),迁移后字段名自动转为大写,忽略大小写会导致对比时出现定义与数据不一致的误报。
  4. MySQL与达梦的DATETIME类型存在精度差异:MySQL默认精度为秒,达梦支持纳秒级精度。这会导致显示格式不同(MySQL显示16:43:31.0,达梦显示16:43:31.000000000),但实际数据值一致,不影响正确性。可通过TO_CHAR函数统一显示格式。
  5. 达梦DTS工具支持MySQL到DM的完整迁移,包括表、视图、函数、存储过程、触发器等多种对象类型。对于MySQL特有的语法(如DELIMITERAUTO_INCREMENT等),DTS会自动进行语法转换。
  6. 迁移完成后需要对所有对象进行功能验证,包括表数据查询、视图查询、函数调用、存储过程执行和触发器触发,确保每个对象都能在达梦环境下正常运行。特别是触发器,需要通过实际操作验证其业务逻辑是否正确执行。
  7. 整个迁移流程(评估→迁移→对比→验证)形成了完整的闭环,是生产环境数据库迁移的标准方法论。每个环节都有其不可替代的作用:评估降低风险、迁移执行数据转移、对比验证准确性、功能验证确保可用性。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 6:36:25

奔驰大G常见故障:W463/W464/W465维修保养指南

奔驰G级,江湖人称"大G",是豪华越野的天花板,也是成都街头回头率最高的存在。方正的盒子造型、标志性的"三把锁"、硬派到极致的梯形车架——但车无完车,大G车身重、结构特殊、电子系统复杂,车龄上来…

作者头像 李华
网站建设 2026/8/31 6:36:03

基于SpringBoot的中国历史知识学习系统的设计与实现

1. 项目背景与意义 中国历史源远流长,蕴含着丰富的文化内涵和智慧结晶。然而,传统的历史学习方式往往依赖纸质教材和课堂讲授,存在知识碎片化、学习路径单一、互动性不足等问题。随着互联网和移动技术的普及,越来越多的人希望通过…

作者头像 李华
网站建设 2026/8/31 6:34:19

端侧AI推理为何推高硬件成本?开发者优化降本实践

在实际的数码硬件市场中,“AI 让硬件变贵了”确实是一个普遍感受。手机、笔记本、平板在加入 AI 功能后,起售价常常高于上一代同配置产品;很多用户把这种涨价理解为厂商在营销概念,但从工程角度看,涨价背后是端侧推理对…

作者头像 李华
网站建设 2026/8/31 6:34:09

017-AI自动化分析

AI 自动化分析 概述 ivdtools-analysis 是面向体外诊断(IVD)评价数据的人工智能分析 Skill(当前版本 0.1.0)。它以 R 包 ivdtools 为统计引擎,从 CSV、TSV、Excel 或 RDS 数据出发,完成数据质量检查、统计…

作者头像 李华
网站建设 2026/8/31 6:33:57

基于SpringBoot的演唱会门票预订网站的设计与实现

1. 项目背景与意义随着文化演出市场的快速发展,演唱会已成为大众文化消费的重要形式。传统的线下购票方式存在排队耗时、信息不透明、黄牛囤票等问题,用户体验较差。与此同时,互联网和移动支付的普及为在线票务预订提供了成熟的技术基础&…

作者头像 李华
网站建设 2026/8/31 6:33:24

51单片机+DHT11+LCD1602温湿度报警系统Proteus仿真全攻略

简介:本资源是一套面向嵌入式初学者与课程设计者的51单片机综合实践项目,聚焦温湿度监测与阈值报警功能实现,适用于电子类专业实训、毕业设计及Proteus仿真入门学习。资源包共44个文件,涵盖Proteus仿真工程、Keil C源代码&#xf…

作者头像 李华