ITPub博客

首页 > 数据库 > 国内数据库 > mysql迁移到DM7(达梦7)的步骤

mysql迁移到DM7(达梦7)的步骤

原创 国内数据库 作者:ora_test 时间:2020-09-29 16:50:22 0 删除 编辑

1. 数据库系统迁移概述

不同的关系数据管理系统之间存在结构差异,MySQL、Oracle、SQL Server 和 DM 都对 SQL-92标准做了许多自有的扩展。

系统迁移过程中面临的最重要的问题是执行 SQL-92 语言标准和每一个关系数据管理系统提供的语言扩展。

有一些开发人员只使用标准的SQL语法,喜欢尽可能的保持他们的程序代码的普遍性。通常,这种方法把程序代码限制在 

SQL-92标准的入门级别(Entry-Level)上,而这个级别是被许多的数据库产品实现了的,包

括 MySQL 和 DM。这种方法将会产生一些不必要的程序代码复杂性而且还会对程序的性能造成很大的影响。

例如,MySQL、DM 的 DECODE 函数、CASE 表达式是一个非标准的 SQL 扩展。私有开发接口的使用也会带来了新的问题,

如程序带来的资源消耗。开发一个可能用到多个关系数据管理系统的应用程序,最好是考虑使用标准数据库接口如 ODBC、

OLEDB、JDBC 等。 从应用程序开发的观点来看,MySQL和DM是以相似的方法来管理数据的。在Oracle

和 DM 之间有着一定的内部区别,但是如果管理得当,可以把这些区别对迁移的影响减 到最小。


2. 系统迁移的基本步骤 

数据库系统的迁移通常采用以下几个步骤进行。


2.1 分析系统

应用系统运行在Linux服务器上,使用的操作系统为Red Hat Enterprise Linux Server 7.5(Maipo),利用通用的JDBC接口与MySQL 5.7数据库进行交互。主要对应MySQL中的两个库,两库之间为协同的关系,涉及到的数据类型包括数值、字符串、文本、大字段等类型,需要进行类型修改或转换。使用了大量的视图和存储模块,由于MySQL5.7与DM7的语法存在较大差异性,需要根据实际场景进行改写。


2.2 确定方案

此次迁移工作包括后台数据库的迁移和前台应用系统的迁移,后台的数据库迁移工作以我们达梦数据库厂商前期,请对应用系统比较熟悉的技术人员配合;前台应用系统的迁移以应用软件开发商,我们达梦数据库只要负责和承担数据库差异的解释和优化工作。


2.3 搭建环境

原系统运行环境为MySQL 5.7,新系统环境为DM7,两套环境仅应用与之交互的数据库不同。


2.4 系统迁移

数据库系统迁移主要包括功能迁移、功能测试和效率优化。在功能迁移的过程中,

保持一个原则就是不改变其应用逻辑,因为在功能迁移的阶段重点是在解决系统差异上

面,如果过多的考虑应用逻辑问题,迁移工作的进度将会受到影响,也增加了迁移工作

的难度,同时如改变应用的程序逻辑,将存在功能修改错误的风险。

后台数据库的迁移工作主要是脚本的迁移和数据迁移工作。一般采用的顺序是先进

性脚本的迁移,再进行数据的迁移,这样做的好处主要有快速部署环境、便于对系统的把握、便于优化系统等。

前台系统的迁移主要是连接串的修改,一些差异的修改,如 SQL 参数的处理、SQL函数的改写等,

因应用系统千变万化,只能具体情况具体对待。在迁移的过程中注意做好修改记录,便于分析查找问题。


2.5 系统测试

功能迁移完成之后,需要进行一个完整性测试,主要包括功能测试和性能测试,测

试的目的如下:

1) 测试功能是否正确,一是看程序能否执行,而是看结果是否正确,如果不对,可跟踪达梦日志,分析问题产生的原因

进行相应的修改。

2) 测试执行效率,将用户反映慢的地方记录下来,效率优化的时候进行处理。功能测试一般采用黑盒测试的方式进行,

按照系统的功能点进行逐一测试,并做好测试记录,测试主要考察功能测试点是否能够正常执行同时要考察测试结果

数据是否正确。

在进行性能测试前,可使用自动化的测试工具,加大测试数据量。性能测试在于找

出系统运行慢的地方,做好相关的记录,性能测试可以辅助采用一些自动化的工具,如

Loadrunner 等;根据需要,也可以编写一些有针对性的测试用例,加强系统性能测试。


2.6 错误修改

针对前面记录的功能问题进行修改,并进行回归测试。


2.7 性能调优

针对前面记录的性能问题,可跟踪系统实际运行的 SQL 语句,分析 SQL 语句组成、

功能和相关的表,建立合适的索引一般能解决性能问题;如有必要,也可采用改写等价

SQL 语句的方法进行。

SQL 优化主要包括以下几个方面:

①在合适的地方建立适当的索引

②IN,NOT IN,<> 等操作符的转换

③OR 的优化

④IN 到 EXISTS 的转换

⑤只查询用的的列等等


2.8 迁移验收

提交功能、性能测试报告,提请系统迁移验收。


3. MySQL至DM7的迁移要点

3.1 数据库兼容

达梦数据库含有兼容其他数据库的兼容参数,进行元数据和数据迁移前需要修改达梦数据库的兼容参数,

可兼容数据源上常规的语法使用。

3.2 数据库编码

为保证数据的一致性,需要保证达梦数据库和MySQL数据库的字符集一致。由于MySQL对字符集的使用较灵活,可在列级、表级等实现,而达梦数据库则全局唯一,需考虑应用系统的逻辑进行有目的的修改。

3.3 数据类型的对比

找出 MySQL 数据库常用数据类型和达梦数据库之间的对应关系,一般在从 MySQL

迁移数据到达梦数据库时,达梦的数据迁移工具DTS会自动把 MySQL 的数据类型映射成达

梦对应的数据类型。

3.4 过程以及函数的对比

MySQL中一些过程和函数在DM7中都有相同的对象存在,可以直接替代,如CAST()函数;对于MySQL独有的函数或基于MySQL语法创建的自定义函数,在DM7中需要基于DM7的SQL语法进行改写、创建,实现相同的功能。如MySQL中的date_format函数可以使用DM7中to_char或to_date函数进行替代达、MySQL中的if()函数在DM7中可采用case when进行替代等。

3.5 连接方式的对比 

MySQL和DM7都支持join的常用的几种连接方式,MySQL不支持全外连接,需采用左外连接和右外连接做union all

的方式实现。

虽然,两者都支持常用的join连接方式,但用法较为不同。首先,对于join…on…方式,两者都支持,且效果相同;其次,MySQL还支持多表join可以不添加on指定条件,在where子句对join的结果进行过滤,实际不添加on进行join的结果为多表的笛卡尔积。对于此种方式的语句,可以直接在DM7中进行改写;最后,对于多表的join连接,还会有多表join连接结果与其他表间的left join或right join的连接结果再做各类型的join连接,需分清左右表顺序,尤其是对left join和right join连接类型。

3.6 关于在迁移过程中要注意的细节问题

MySQL至DM7的迁移工作中,需要注意很多细节问题。以字段设置为例,MySQL的字段可以定义current time属性,实际后台是触发器帮助更新行数据的时间戳,达梦可以用相同的触发器原理仿真,就是需要一些修改的工作量;另外,在MySQL中时间类型TIMESTAMP默认default设置为“0000-00-00 00:00:00”,而在DM7中TIMESTAMP类型数据不能为“0000-00-0000:00:00”,这在DM7中是不合法的,必须在'0001-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'之间;还有字段的default设置,默认的字符或字符串默认值,在DM7中需要添加单引号' ',如a char(10) default ‘abc’等等。




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/789425/viewspace-2725126/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2016-02-17

  • 博文量
    2
  • 访问量
    5258