从SQL SERVER到MY SQL的数据库迁移研究

2019-07-16 03:17钟志宏
电脑知识与技术 2019年14期

钟志宏

摘要:异构数据库系统的迁移是建立数据仓库、新旧应用系统无缝迁移的关键技术。通过研究SQL SERVER数据库系统与MY SQL数据库系统的异同特征,采用SQL脚本编辑转换、ODBC应用程序,有效地实现了原有系统从SQL SERVER到MY SQL数据库系统的迁移,并保证了原有应用系统仅进行少量修改,实现了系统运行平台的快速转换,有效满足了用户的投入成本小、系统性能高、业务不中断的要求。

关键词:数据库迁移;SQL SERVER;MY SQL

中图分类号:TP391        文献标识码:A

文章编号:1009-3044(2019)14-0001-02

开放科学(资源服务)标识码(OSID):

Abstract: The migration of heterogeneous database system is the key technology for the data warehouse establishment and seamless migration of old and new application systems. Through researching the similarities and differences between SQL SERVER database system and MY SQL database system, using SQL script editing conversion and ODBC application program, the migration of the original system from SQL SERVER to MY SQL database system is effectively realized, and only a few modifications are made to the original application system. The rapid transformation of the system operation platform is realized, which effectively meets the requirements of low input cost, high system performance and uninterrupted business.

Key words: Database migration; SQL SERVER; MY SQL

1 研究意義与背景

数据库管理系统(即DBMS)是整个信息应用系统的核心,合理选择数据库管理系统以及完善的数据库设计,能够有效提高应用系统的可靠性、平台的伸缩性、开发成本和周期。近年来,随着大数据、云计算与人工智能等基于海量数据处理的新技术的出现,异构数据库、结构化半结构数据的多种数据源的集成与迁移成为研究和应用的支撑技术。同时,随着信息化建设的加速、公司业务规模的扩大、机构的扩展,也使得当前很多面向具体业务的信息应用系统需要进行数据库的迁移,在数据迁移的过程中,不仅要保证数据的准确性,还要确保数据的完整性约束、权限控制、存储过程与自定义函数、触发器等等,从而确保数据库的迁移对应用系统影响最小,以满足企业控制成本支持、提高平台性能、拓展业务规模、提升用户体验的现实需求。

异构数据库迁移是指将数据从一种数据库管理系统迁移到另一种数据库管理系统中。由于异构数据库之间常常存在数据类型不兼容、默认字符集不一致、完整性约束定义差异、内置函数及变量不同、存储过程与函数定义不一致等等情况,导致数据迁移较为复杂,甚至有些迁移要求成为不可完成的任务。当前常常采用的异构数据库迁移方法主要有三种:

(1)基于SQL脚本的编辑。将导出源数据库的SQL语句脚本,通过人工方式编辑转换为目标数据库所对应的SQL语句脚本,然后在目标数据库系统中执行转换后的SQL脚本,从而实现目标数据库的创建。该方法方便灵活,能够有效满足应用迁移需要,但主要适用于结构不是太复杂、数据迁移转换频率较低的数据库。

(2)基于数据库管理系统厂商的数据迁移工具。DBMS厂商(比如甲骨文的Oracle和MY SQL、微软的SQL SERVER、IBM的DB2等)通常提供数据迁移工具软件,使得数据库管理员DBA能实现快速的数据迁移。但该方法主要适用于在同一数据库管理系统的多个不同版本之间进行数据迁移,对于异构数据库通常必须配合SQL脚本编辑方法。

(3)基于元数据的中间件技术。基于数据库元数据,利用XML定义异构数据库之间的映射关系,同时开发数据迁移的中间件软件,从而能够快速而自动的实现源数据库到目标数据库的数据迁移,但该方法通常研制成本高,开发时间长,主要满足大型数据集成、频繁迁移的自动化应用场景中。

本文根据用户信息系统平台转换与扩展的需要,主要研究如何快速而又完整地将数据库从SQL SERVER静态迁移(即在迁移时,暂停数据库服务,从而确保数据的完整性和一致性。)到MYSQL的方法与技术,并实现原有应用系统最小修改原则,快速实现原有平台到新平台的转化,达到用户投入成本小、平台转化快、应用场景不变、系统无缝迁移的总体需求。

2 迁移解决方案

2.1 应用系统迁移总步骤

为了确保应用能够快速的无缝迁移,整个实施步骤如图1所示。

(1)数据库迁移。充分研究SQL SERVER数据库系统与MY SQL数据库系统的异同特征,采用SQL脚本编辑转换、ODBC应用程序,实现了原有系统从SQL SERVER到MY SQL数据库系统的迁移。

(2)数据校验及数据库对象验证。根据SQL SERVER数据库中的元数据信息,对转换到MYSQL数据库中的数据进行完整性与一致性校验,对视图、存储过程、特定函数、触发器进行验证,对安全性规则进行验证。

(3)应用程序修改及转换测试。针对迁移后的MY SQL数据库,修改应用程序中针对性的代码,如数据库链接字符串或数据库服务器配置文件、部分数据存储类。

(4)整体应用系统迁移。发布系统平台升级公告,选择业务量最小时段进行停服原始数据备份、数据库迁移、应用系统更换,新系统平台开启正常服务。

下面主要介绍数据库迁移和数据校验相关内容。

2.2数据库迁移

数据库迁移是整个应用系统迁移工作的核心,涉及字符集的选择、数据类型转换、完整性约束条件的转换、存储过程与触发器的转换、用户权限规则转换等方面,如图2所示。

系统是从SQL SERVER2008 R2迁移到MY SQL5.7数据库管理系统,服务器操作系统为Windows Server 2008(64位)。首先从SQLSERVER2008导出数据库整体结构SQL脚本,通过映射修改后,在MYSQL中利用修改后的脚本建立数据库整体结构。

(1)字符集的选择。SQL SERVER2008中数据库采用默认字符集,且服务器排序规则为Chinese_PRC_CI_AS,为了防止MY SQL数据库出现乱码,MY SQL服务器采用的字符集为utf8,同时选择相应的排序规则。

(2)数据类型的转换。数据类型转换目的是确保源数据库与目标数据库数据相容,是数据正确迁移的重要保障。SQL SERVER与MY SQL数据类型绝大多数是对应的,主要的区别在于:①用于存储二进制数据(如图片、文档、音频等文件)在SQL SERVER为image类型,而在MY  SQL中采用longblob类型;②MY SQL中支持逻辑值bool和boolean,但实质上存储的整形数据1(True)和0(False);③MYSQL中支持特殊的枚举数据类型enum和多值的集合类型set。

(3)完整性约束条件的转换。数据库中的完整性约束分为三类:实体完整性、参照完整性、用户自定义完整性,其中实体完整性和参照完整性称为关系数据库系统中的两个不变性,所有的关系数据库必须支持两个不变性。①SQL SERVER与MY SQL对应实体完整性和参照完整性的支持是完全一致的,使用的关键字与语法也相同,需要注意的是,MY SQL中只有表的存储引擎为INNODB时才支持参照完整性;②MY SQL中不支持Check关键字定义用户完整性,用户完整性的定义主要采用触发器来实现,对于字符类型的限定取值范围的check约束,MY SQL中也可以采用举数据类型enum来实现约束,当然此时MY SQL数据库应处于Strict严格模式下。

(4)存储过程与存储函数的转换。存储过程与存储函数能够有效提高信息管理系统的开发效率,使用不同程序设计语言的程序员可以调用数据库中定义好的存储过程和存储函数实现统一、规范的数据访问,而不必分别编写相应应用程序。SQL SERVER与MY SQL中存储过程的编写语法基本相同,但调用各自内部函数时,其相同功能的函数可能函数名称并不相同,因此需要进行映射与转换。

(5)触发器的转换。触发器是进行数据库自动化操作和复杂数据完整性规则的数据库对象。SQL SERVER与MY SQL中存储过程的编写语法基本相同,由于触发器中常常会用到数据操作影响的新值与旧值,在SQL SERVER中分别用Inserted和Deleted两个临时表来存储,而MY SQL中对应的则是NEW和OLD,因此需要进行转换。

(6)用户权限规则的转换。用户权限给予了数据库访问用户相关的数据访问范围,是数据库安全性的基本保证。为了满足用户数据库操作的习惯,有必要在MY SQL系统中重建SQL SERVER系统下的用户权限规则。

2.3数据迁移与校验

数据的迁移应按照一定的次序依次进行,以保证数据能够成功导入目标数据库中:首先根据参照完整性迁移表的外键数据,然后再迁移主键数据。该过程通过编写数据迁移脚本以及基于ODBC的应用程序自动完成。

数据完成从SQL SERVER与MY SQL迁移后必须进行数据校验,以确保数据的完整性、一致性、正确性。数据校验通过编写应用程序来完成,采用随机分别抽取一定比例的源数据库和目标数据库中相同记录进行比对的方式进行,校验程序允许设置抽样率;如果迁移数据量较少,可采用较大抽样率甚至100%(全部校验),如果数据较大,一般可选择抽样率10%,进行两次校验,即可达到校验目的。

3 结束语

本文根据用户信息系统平台迁移的实际需求,分析比较了现有异构数据库系统数据迁移的相关方法及其优缺点,提出了采用SQL脚本编辑与ODBC API应用程序相结合的迁移方案,实现了将用户信息系统由SQL SERVER数据库系统到MY SQL数据库系统的迁移。迁移过程涉及字符集的选择、数据类型转换、完整性约束条件的转换、存储过程与触发器的转换、用户权限规则转换等方面,并保证了原有应用系统仅进行少量修改,有效满足了用户的投入成本小、系统性能高、业务不中断的要求。

参考文献:

[1] 方英兰,陈兵辉,唐苗. 基于JDBC的异构数据库迁移系统的设计与实现[J]. 北方工业大学学报,2013,25(1).

[2] 熊华平,李莉娇,陈付平,荣海亮. 大型异构数据库数据迁移系统的研究与应用[J]. 计算机应用与软件, 2012,29(7).

[3] 唐如意,巢玉强. 基于用电信息采集系统跨平台数据库数据迁移的应用[J]. 电工技术,2015(11).

[4] 程利. 數据库应用平台的异构数据迁移[J]. 信息系统工程, 2014(3).

[5] 欧应栗. 异构数据库数据迁移的研究与实现[J]. 现代计算机, 2015(16).

[6] 邵桐,朱明东. 基于元数据的数据交换系统研究[J]. 软件导刊, 2016(7).

[7] 常建辉.基于XML异构数据库集成技术的研究与实现[J].计算机应用与软件, 2012,29(7).

【通联编辑:王力】