数据库数据迁移方法及系统技术方案

技术编号:10044623 阅读:218 留言:0更新日期:2014-05-14 16:06
本申请提供一种数据库数据迁移方法,应用在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,该方法包括:配置数据库迁移任务的多个表任务对应的表任务信息,所述多个表任务能够被批量调度;根据所调度的表任务从第一数据库读出该表任务中需迁移的源数据表的数据,并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及从所述分布式文件系统中读出所述多个分库数据表,再将该多个分库数据表导出到第二数据库中。所述迁移方法只需要一次配置即可将不同的数据从一种数据库迁移到另外一种数据库,提高了数据迁移的速度及稳定性。本申请还提供一种数据库数据迁移系统。

【技术实现步骤摘要】

本申请涉及计算机技术中不同数据库之间数据迁移的方法,尤其涉及异构数据库之间数据迁移的方法及系统。
技术介绍
早期互联网应用中,底层数据普遍采取单库存储所有数据的存储方案。随着互联网应用的发展,用户量的激增,数据存储数量呈指数递增,底层数据单库存储方案制约甚至限制着互联网应用的进一步扩展。为此,为解决单库存储的瓶颈问题,需逐步采用另外一种支持横向存储的解决方案。而要解决数据存储的瓶颈,必须切换现有的存储结构,但由于目前底层数据量非常庞大,在切换存储结构的同时,如何将原有的海量数据迁移到新的支持横向扩展的存储结构上也是一个很大的瓶颈点。现有的进行互联网中数据迁移用到的手段或者是通过不同数据库提供的导入导出工具将原数据库的数据导出到文件中,再将这些数据文件通过另外一种数据库工具导入到新的数据表,或者在不同数据库中编写和应用相关的程序,在程序中将数据从原数据库中通过查询语句查询出来后,再通过程序将数据插入到新的数据库,或者利用云数据迁移工具,将一个关系型数据库中的数据导入到分布式系统集群Hadoop的分布式文件系统(Hadoop Distributed File System,HDFS)中,也可以将HDFS的数据导入到关系型数据库中。通过Sqoop,可以在基于Hadoop分布式处理的基础上,将数据从原数据库中取出到HDFS中,再将数据从HDFS中取出导入到新的数据库中。由此看出目前互联网中的数据迁移工具的核心都在于将数据从原数据库中导出,再将数据导入到新的数据库中,这些技术方案存在以下不足,首先是在多表海量数据情况下无法进行批量操作;其次,无法避免数据量超出服务器处理能力的问题;再次,现有的数据库数据迁移工具普遍都无法支持对数据的二次处理,即都不能够支持对原数据库数据的分库迁移;最后,目前互联网中的数据迁移工具很多都不支持数据迁移后的校验功能。
技术实现思路
有鉴于此,有必要提供一种数据库数据迁移方法及系统,以解决现有数据库数据迁移中存在的速度、稳定性及数据正确性的问题。本申请提供一种数据库数据迁移方法,应用在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,该方法包括:配置数据库迁移任务的被批量调度的多个表任务对应的表任务信息,所述每个表任务将第一数据库中与该表任务对应的源数据表进行数据迁移;从第一数据库读出该表任务中需迁移的源数据表的数据;并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及从所述分布式文件系统中将该多个分库数据表导出到第二数据库中。进一步地,所述迁移方法还包括:比较第一数据库与第二数据库中的数据,校验在迁移过程中数据是否有缺失以及数据是否不完整。本申请还提供一种数据库数据迁移系统,运行在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,该迁移系统包括:配置模块,用于配置数据库迁移任务的多个表任务对应的表任务信息,所述每个表任务指对第一数据库中一个源数据表进行数据迁移的迁移任务;调度控制模块,能够读取所述表任务信息,并批量调度所述多个表任务;数据导入模块,用于根据所调度的表任务从第一数据库读出该表任务中需迁移的源数据表的数据,并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及数据导出模块,从所述分布式文件系统中读出所述多个分库数据表,再将该多个分库数据表导出到第二数据库中。进一步地,所述迁移系统还包括数据校验模块,该数据校验模块用于比较第一数据库与第二数据库中的数据,校验在迁移过程中数据是否有缺失以及数据是否不完整。与现有技术相比,本申请数据库数据迁移方法及系统将每个数据表当作一个迁移任务,以数据库导入导出工具或者定制程序作为异构数据库读写数据的主要手段,在分布式集群中运行这些任务,同时在数据处理中加入自定义的分库算法,将读出的数据划分到多个文件中,再在任务中调用数据库导入导出工具或者定制程序将数据导入到多个新的数据库中。由于每个表都是一个迁移任务,使得不同表不同数据源的问题能够有清晰的划分,可以支持多个任务批量同时进行而不互相影响,大大的加快了数据迁移的速度。在迁移完成后,可以对新库和旧库之间的数据进行校验,找出不一致的数据。因此本申请相对传统的处理数据导入导出的方法,提高了迁移的速度,提供了数据校验功能,保证了迁移过程中的稳定性及迁移过程中的数据正确性。上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举实施例,并配合附图,详细说明如下。附图说明以下结合附图描述本申请的实施例,其中:图1是本申请实施例提供的一种数据库数据迁移系统的结构框图;图2是本申请实施例提供的一种数据库数据迁移方法的流程图;图3是图2中步骤S20的流程图;图4A-图4F是分库示意图;图5是图2中步骤S30的流程图;图6是图2中步骤S40的流程图。具体实施方式以下基于附图对本申请的具体实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅作为实施例,并不用于限定本申请的保护范围。请参阅图1所示,是本申请实施例提供的一种数据库数据迁移系统的结构框图。电子装置1处于分布式系统集群4环境中,通过应用程序调用接口(API)与分布式系统集群4通讯。所述电子装置1可以是任意一种具有数据处理能力的用户终端、服务器等,该电子装置1还包括存储单元11和中央处理器(CPU)12。所述数据库数据迁移系统10(以下简称“迁移系统10”)运行在电子装置1上,该迁移系统10用于在分布式系统集群的环境下将第一数据库2中的数据迁移到第二数据库3中,尤其适合用于第一数据库2与多个第二数据库3之间海量数据的迁移。本实施例中,所述第一数据库2和第二数据库3互为异构数据库。在本实施例中,第一数据库可以是Oracle数据库。第二数据库可以是Mysql数据库。所述分布式系统集群4可以是Hadoop。所述迁移系统10包括配置模块100、调度控制模块101、数据导入模块102、数据导出模块103及数据校验模块104。这里所称的“模块”具有特定功能,用来完成给定的任务,可以是软件程序或软件程序段,也可以是执行所述软件程序或软件程序段的计算机硬件。该软件程序或软件程序段存储于计算机可读存储...
数据库数据迁移方法及系统

【技术保护点】
一种数据库数据迁移方法,应用在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,其特征在于,该方法包括:配置数据库迁移任务的被批量调度的多个表任务对应的表任务信息,所述每个表任务将第一数据库中与该表任务对应的源数据表进行数据迁移;从第一数据库读出该表任务中需迁移的源数据表的数据;并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及从所述分布式文件系统中将该多个分库数据表导出到第二数据库中。

【技术特征摘要】
1.一种数据库数据迁移方法,应用在分布式系统集群环境中,用于在第一
数据库和第二数据库之间迁移数据,其特征在于,该方法包括:
配置数据库迁移任务的被批量调度的多个表任务对应的表任务信息,所述
每个表任务将第一数据库中与该表任务对应的源数据表进行数据迁移;
从第一数据库读出该表任务中需迁移的源数据表的数据;
并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数
据表导入到分布式文件系统中;及
从所述分布式文件系统中将该多个分库数据表导出到第二数据库中。
2.如权利要求1所述的数据库数据迁移方法,其特征在于,通过表配置文
件来配置多个表任务对应的表任务信息。
3.如权利要求2所述的数据库数据迁移方法,其特征在于,对应每个表任
务,所述表配置文件包括源配置和目标配置,所述源配置给出了第一数据库中
需要迁移的源数据表的信息,所述目标配置给出了要把需要迁移的源数据表迁
往的第二数据库中的目标数据表的信息。
4.如权利要求1所述的数据库数据迁移方法,其特征在于,将第一数据库
中数据导入到分布式文件系统中的过程包括:
获取并加载所调度的表任务的表任务信息,所述表任务信息中包括该表任
务对应需要迁移的源数据表的切分字段及分库字段信息;
根据所述表任务信息中的切分字段将需要迁移的源数据表分成第一数量的
多个切片,并请求分布式系统集群对应每个切片形成一个第一映射任务,所述
每个第一映射任务都与第一数据库连接并读取源数据表的一个切片;
进一步请求分布式系统集群在所述每个第一映射任务中,根据所述表任务
信息中的分库字段对该第一映射任务读取的每个切片进行分库得到第二数量的
分库数据表,进一步请求分布式系统集群根据所述分库后得到的每个分库数据
表对应形成一个第一化简任务;及
由每个第一化简任务将分库后得到的每个分库数据表的数据写入到分布式
文件系统中。
5.如权利要求4所述的数据库数据迁移方法,其特征在于,所述分库过程
包括:
逐条读取第一数据库中一个源数据表的数据;
对所读取的数据做转义、转码;
读取表任务信息中的源数据表的分库字段信息;
对该分库字段对应的分库键值取模并映射到一个下标的文件中;及
将该下表的文件划分到对应的第一化简任务中。
6.如权利要求1所述的数据库数据迁移方法,其特征在于,从所述分布式
文件系统中将该多个分库数据表导出到第二数据库中的方法包括:
获取表任务信息;
请求分布式系统集群对应所述每个分库数据表形成一个第二映射任务,所
述每个第二映射任务会将一个分库数据表从所述分布式文件系统中读出并写入
本地系统临时文件;及
由所述每个第二映射任务调用一个第二数据库导入工具,将写入到本地系
统临时文件中的分库数据表导入到第二数据库中。
7.如权利要求6所述的数据库数据迁移方法,其特征在于,所述迁移方法
在将分布式文件系统中的数据导出到第二数据库中后还包括:
比较第一数据库与第二数据库中的数据,校验在迁移过程中数据是否有缺
失以及数据是否不完整。
8.如权利要求7所述的数据库数据迁移方法,其特征在于,所述比较第一
数据库与第二数据库中的数据的过程包括:
读取表任务信息;
根据表任务信息中的切分字段将需要校对的第一数据库中的源数据表分成
第一数量的多个切片,并请求分布式系统集群对应该每个切片形成一个第三映
射任务,所述每个第三映射任务读取源数据表中的一个切片,并根据所述表任
务信息中的分库字段对该第三映射任务读取的每个切片进行分库得到第二数量
的多个分库数据表;及
从第二数据库中读取与所述多个分库数据表对应的数据,并请求分布式系
统集群根据每个分库数据表对应形成一个第三化简任务,所述第三化简任务通

\t过合并和排序将第一数据库中的源数据表分库得到的多个分库数据表与从第二
数据库中读取的与所述多个分库数据表对应的数据进行比较,校验数据是否有
缺失及数据是否不完整。
9.如权利要求8所述的数据库数据迁移方法,其特征在于,所述第二数据
库所有分库的数据使用与第一数据库数据迁移到第二数据库的过程中相同的分
库算法的分布式数据库读取。
10.如权利要求1所述的数据库数据迁移方法,其特征在于,所述第一数
据为Oracle数据库,所述第二数据库为Mysql数据库。
11.如...

【专利技术属性】
技术研发人员:庄伟杰宁玉杰
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1