数据库数据迁移方法及系统的制作方法

文档序号:6490480阅读:165来源:国知局
数据库数据迁移方法及系统的制作方法【专利摘要】本申请提供一种数据库数据迁移方法,应用在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,该方法包括:配置数据库迁移任务的多个表任务对应的表任务信息,所述多个表任务能够被批量调度;根据所调度的表任务从第一数据库读出该表任务中需迁移的源数据表的数据,并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及从所述分布式文件系统中读出所述多个分库数据表,再将该多个分库数据表导出到第二数据库中。所述迁移方法只需要一次配置即可将不同的数据从一种数据库迁移到另外一种数据库,提高了数据迁移的速度及稳定性。本申请还提供一种数据库数据迁移系统。【专利说明】数据库数据迁移方法及系统【
技术领域
】[0001]本申请涉及计算机技术中不同数据库之间数据迁移的方法,尤其涉及异构数据库之间数据迁移的方法及系统。【
背景技术
】[0002]早期互联网应用中,底层数据普遍采取单库存储所有数据的存储方案。随着互联网应用的发展,用户量的激增,数据存储数量呈指数递增,底层数据单库存储方案制约甚至限制着互联网应用的进一步扩展。为此,为解决单库存储的瓶颈问题,需逐步采用另外一种支持横向存储的解决方案。而要解决数据存储的瓶颈,必须切换现有的存储结构,但由于目前底层数据量非常庞大,在切换存储结构的同时,如何将原有的海量数据迁移到新的支持横向扩展的存储结构上也是一个很大的瓶颈点。[0003]现有的进行互联网中数据迁移用到的手段或者是通过不同数据库提供的导入导出工具将原数据库的数据导出到文件中,再将这些数据文件通过另外一种数据库工具导入到新的数据表,或者在不同数据库中编写和应用相关的程序,在程序中将数据从原数据库中通过查询语句查询出来后,再通过程序将数据插入到新的数据库,或者利用云数据迁移工具,将一个关系型数据库中的数据导入到分布式系统集群Hadoop的分布式文件系统(HadoopDistributedFileSystem,HDFS)中,也可以将HDFS的数据导入到关系型数据库中。通过Sqoop,可以在基于Hadoop分布式处理的基础上,将数据从原数据库中取出到HDFS中,再将数据从HDFS中取出导入到新的数据库中。由此看出目前互联网中的数据迁移工具的核心都在于将数据从原数据库中导出,再将数据导入到新的数据库中,这些技术方案存在以下不足,首先是在多表海量数据情况下无法进行批量操作;其次,无法避免数据量超出服务器处理能力的问题;再次,现有的数据库数据迁移工具普遍都无法支持对数据的二次处理,即都不能够支持对原数据库数据的分库迁移;最后,目前互联网中的数据迁移工具很多都不支持数据迁移后的校验功能。【
发明内容】[0004]有鉴于此,有必要提供一种数据库数据迁移方法及系统,以解决现有数据库数据迁移中存在的速度、稳定性及数据正确性的问题。[0005]本申请提供一种数据库数据迁移方法,应用在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,该方法包括:[0006]配置数据库迁移任务的被批量调度的多个表任务对应的表任务信息,所述每个表任务将第一数据库中与该表任务对应的源数据表进行数据迁移;[0007]从第一数据库读出该表任务中需迁移的源数据表的数据;[0008]并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及[0009]从所述分布式文件系统中将该多个分库数据表导出到第二数据库中。[0010]进一步地,所述迁移方法还包括:比较第一数据库与第二数据库中的数据,校验在迁移过程中数据是否有缺失以及数据是否不完整。[0011]本申请还提供一种数据库数据迁移系统,运行在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,该迁移系统包括:[0012]配置模块,用于配置数据库迁移任务的多个表任务对应的表任务信息,所述每个表任务指对第一数据库中一个源数据表进行数据迁移的迁移任务;[0013]调度控制模块,能够读取所述表任务信息,并批量调度所述多个表任务;[0014]数据导入模块,用于根据所调度的表任务从第一数据库读出该表任务中需迁移的源数据表的数据,并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及[0015]数据导出模块,从所述分布式文件系统中读出所述多个分库数据表,再将该多个分库数据表导出到第二数据库中。[0016]进一步地,所述迁移系统还包括数据校验模块,该数据校验模块用于比较第一数据库与第二数据库中的数据,校验在迁移过程中数据是否有缺失以及数据是否不完整。[0017]与现有技术相比,本申请数据库数据迁移方法及系统将每个数据表当作一个迁移任务,以数据库导入导出工具或者定制程序作为异构数据库读写数据的主要手段,在分布式集群中运行这些任务,同时在数据处理中加入自定义的分库算法,将读出的数据划分到多个文件中,再在任务中调用数据库导入导出工具或者定制程序将数据导入到多个新的数据库中。由于每个表都是一个迁移任务,使得不同表不同数据源的问题能够有清晰的划分,可以支持多个任务批量同时进行而不互相影响,大大的加快了数据迁移的速度。在迁移完成后,可以对新库和旧库之间的数据进行校验,找出不一致的数据。因此本申请相对传统的处理数据导入导出的方法,提高了迁移的速度,提供了数据校验功能,保证了迁移过程中的稳定性及迁移过程中的数据正确性。[0018]上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举实施例,并配合附图,详细说明如下。【专利附图】【附图说明】[0019]以下结合附图描述本申请的实施例,其中:[0020]图1是本申请实施例提供的一种数据库数据迁移系统的结构框图;[0021]图2是本申请实施例提供的一种数据库数据迁移方法的流程图;[0022]图3是图2中步骤S20的流程图;[0023]图4A-图4F是分库示意图;[0024]图5是图2中步骤S30的流程图;[0025]图6是图2中步骤S40的流程图。【具体实施方式】[0026]以下基于附图对本申请的具体实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅作为实施例,并不用于限定本申请的保护范围。[0027]请参阅图1所示,是本申请实施例提供的一种数据库数据迁移系统的结构框图。电子装置I处于分布式系统集群4环境中,通过应用程序调用接口(API)与分布式系统集群4通讯。所述电子装置I可以是任意一种具有数据处理能力的用户终端、服务器等,该电子装置I还包括存储单元11和中央处理器(CPU)12。[0028]所述数据库数据迁移系统10(以下简称“迁移系统10”)运行在电子装置I上,该迁移系统10用于在分布式系统集群的环境下将第一数据库2中的数据迁移到第二数据库3中,尤其适合用于第一数据库2与多个第二数据库3之间海量数据的迁移。[0029]本实施例中,所述第一数据库2和第二数据库3互为异构数据库。在本实施例中,第一数据库可以是Oracle数据库。第二数据库可以是Mysql数据库。所述分布式系统集群4可以是Hadoop。[0030]所述迁移系统10包括配置模块100、调度控制模块101、数据导入模块102、数据导出模块103及数据校验模块104。这里所称的“模块”具有特定功能,用来完成给定的任务,可以是软件程序或软件程序段,也可以是执行所述软件程序或软件程序段的计算机硬件。该软件程序或软件程序段存储于计算机可读存储介质或其他存储设备中,可被计算机或其他包含处理器的电子装置执行,从而完成本申请数据库数据迁移的作业流程。在本实施例中,所述迁移系统10存储于存储单元11中,能够被CPU12执行。[0031]所述各模块的功能请参照图2至图6的流程。[0032]请参阅图2所示,是本申请实施例提供的一种数据库数据迁移方法的流程图。[0033]步骤S10,配置数据库迁移任务的多个表(table)任务对应的表任务信息。[0034]所述第一数据库2—般包含多个数据表,所述每个表任务指对第一数据库2中一个源数据表进行数据迁移的迁移任务。所述配置模块100通过表配置(table-config.xml)文件来配置多个表任务对应的表任务信息,所述表配置文件可以存储在存储单元11中。调度控制模块101能够读取所述表任务信息,并批量调度所述多个表任务。[0035]在本实施例中,使用xml格式表配置文件来配置所述多个表任务对应的表任务信息。所述每个表任务具有身份标识(id)。对应所述每个表任务,所述表配置文件都包括源(source)配置和目标(target)配置。在每个表任务中,所述源配置给出了第一数据库2中需要迁移的源数据表的信息,所述目标配置给出了要把需要迁移的源数据表迁往的第二数据库3中的目标数据表的信息。具体地,所述源配置可包括第一数据库2中需迁移的数据表的源表名(sourcename)、切分字段(split-by)、分库字段(partition-by)以及源表列(sourcecolumns)和源表主键(sourcekey)等信息。所述目标配置具体可包括将写入第二数据库3中的目标数据表的目标表名(targetname)、目标表列(targetcolumns)以及目标表主键(targetkey)等信息。通过在表配置文件中填写前述源表名、目标表名等信息,即可实现一个表任务的配置。[0036]步骤S20,数据导入模块102根据所调度的表任务从第一数据库2读出该表任务中需迁移的源数据表的数据,并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中。[0037]步骤S30,数据导出模块103从所述分布式文件系统中读出所述多个分库数据表,再将该多个分库数据表导出到第二数据库3中。[0038]通过以上两个步骤S20和S30,即完成了一个表任务中需迁移的数据表中的数据在不同数据库之间的数据迁移。而对于多个表任务,便由调度控制模块101统一进行调度和隔离,使得每个任务没有冲突,并且可以并行进行。[0039]步骤S40,数据校验模块104比较第一数据库2与第二数据库3中的数据,校验在迁移过程中数据是否有缺失以及数据是否不完整。[0040]请参阅图3所示,是图2中步骤S20的流程图。[0041]在本实施例中,以第一数据库2为Oracle数据库,第二数据库3为Mysql数据库为例进行介绍。[0042]步骤S201,数据导入模块102首先从表配置文件中获取并加载所调度的表任务的表任务信息。所述表任务信息中包括该表任务对应需要迁移的源数据表的切分字段及分库字段等息。[0043]步骤S202,数据导入模块102根据所述表任务信息中的切分字段将需要迁移的源数据表分成第一数量的多个切片,并请求分布式系统集群4对应每个切片形成一个第一映射(map)任务,即形成第一数量的第一映射任务,所述每个第一映射任务都与第一数据库2连接并读取源数据表的一个切片。所述切片,即根据表任务信息提供的切分字段将需要处理的数据表的数据切分为多个部分,每个部分即是一个切片。所述每个切片读取后可以存储在分布式系统集群4中的一个电脑的处理器的缓存中,通过采用分布式系统集群4,可以将一个源数据表的每个切片分发到一个普通电脑中处理,由于每个切片的数据量较小,从而无需采用处理能力很强的服务器来处理。[0044]步骤S203,数据导入模块102进一步请求分布式系统集群4在所述每个第一映射任务中,根据所述表任务信息中的分库字段对该第一映射任务读取的每个切片进行分库得到第二数量的分库数据表,所述数据导入模块102请求分布式系统集群4根据所述分库后得到的每个分库数据表对应形成一个第一化简(reduce)任务,即具有第二数量的第一化简任务。[0045]所述分库是指通过分库算法将一个源数据表中的数据切分为多个分库数据表的过程。所述分库算法,即可以对数据进行横向切分,使得数据可以从单库分布到各个分库的划分算法。第一数据库2中的源数据表的多个切片中属于同一个分库的数据在分库后会被分到同一个分库数据表中。[0046]所述第一映射任务进行分库的具体处理过程可参见下面的例子:[0047]第一映射任务主要负责逐条读取第一数据库(Oracle)2中某一个源数据表的数据,并对读取后的数据做转义、转码,如对符号“,”转义,对中文转码后,读取表配置文件中配置好的该表中的分库字段对应的分库键值,例如图4A中customer_id对应的字段。然后,使用分库算法切分,例如使用cobar(cobar,阿里巴巴开发的一个关系型数据的分布式处理系统,它可以在分布式的环境下像传统数据库一样提供海量数据服务)对数据进行切分的算法。以图4A所示的数据表400为例,使用分库算法对分库键值进行切分的具体方式说明如下。对数据表400中customer_id对应的字段的值进行取模,映射到某一个下标中,如I至128。比如customer_id值为611087491,取模后的下标为16,则该行数据映射到下标为16的文件中,并将该行数据映射到下标为16的第一化简任务中进行处理,同理,其他的数据都按照这种方式,逐条逐条的划分到对应的文件及对应的第一化简任务中,最终达到将这个Oracle表的数据进行分库的结果。[0048]下面以所述单个数据表400作为原始表为例,将该数据表400进行划分,划分到128个文件中,其中5个文件划分到了数据得到5个有数据的分库数据表,其他文件中的是无数据的分库数据表。请参见图4A到图4F的分库示意图。根据所述数据表400中的customerjd对应的字段值进行划分后,可以把数据从该单个数据表400分到5个不同的文件中。[0049]其中图4A是数据表400分库前的示意图。[0050]将数据表400中第一行数据的分库键值(customerjd值为611087491)取模,得到下标为16,则将该第一行数据映射到下标为16的文件中,参见图4B所示的文件。同理,将该第一行的数据映射到下标为16的第一化简任务中进行处理。[0051]将数据表400中第十六行数据的分库键值(customerjd值为10714947)取模,得到下标为48,则将该第十六行的数据映射到下标为48的文件中,参见图4C所示的文件。同理,将该第十六行的数据映射到下标为48的第一化简任务中进行处理。[0052]将数据表400中第二、三、四行数据的分库键值取模,得到的下标为102,则将该第二、三、四行的数据映射到下标为102的文件中,参见图4D所示的文件。同理,将该第二、三、四行的数据映射到下标为102的第一化简任务中进行处理。[0053]将数据表400中第五至第十二行数据的分库键值取模,得到下标为103,则将该第五至十二行的数据映射到下标为103的文件中,参见图4E所示的文件。同理,将该第五至第十二行的数据映射到下标为103的第一化简任务中进行处理。[0054]将数据表400中第十三、十四、十五、十七行数据的分库键值取模,得到的下标均为104,则将该第十三、十四、十五、十七行的数据的映射到下标为104的文件中,参见图4F所示的文件。同理,将该第十三、十四、、十五、十七行的数据映射到下标为104的第一化简任务中进行处理。[0055]通过划分后的表,可以放置到不同的数据库,在读取数据时,只需要通过原有的分库算法对指定的分库键值(如customer_id,这个是在分库后的数据中也会存在的字段)进行分库,将分库键值映射到对应的数据库下标,即可读取同一个表在不同库中的数据,而同表不同数据库之间的每一条数据是互不影响且是唯一的。[0056]在本实施例中,可以使用cobar分库算法和开源的cobar分布式数据库来实现数据的横向切分和读写。[0057]步骤S204,由每个第一化简任务将分库后得到的每个分库数据表的数据写入到分布式文件系统中。即,第二数量的第一化简任务将分库后得到的第二数量的分库数据表的数据写入到分布式文件系统中。所述分布式文件系统可以为HDFS。[0058]本申请引入分库,解决了数据横向切分的问题。[0059]请参阅图5所示,是图2中步骤S30的流程图。[0060]步骤S301,数据导出模块103根据表任务的身份标识(id)从表配置文件中获取表任务?目息。[0061]步骤S302,数据导出模块103请求分布式系统集群4对应所述第二数量的分库数据表形成第二数量的第二映射任务,所述每个第二映射任务会将一个分库数据表从所述分布式文件系统中读出并写入本地系统临时文件。[0062]具体地,所述数据导出模块103可以通过文件数据源匹配算法将分布式文件系统中的分库数据表划分给不同的第二映射任务进行读取。所述第二映射任务可以使用行读取器(LineRecordReader)将分布式文件系统中的分库数据表按行的方式一行一行的读出,此时,第二映射任务读取到的数据都是属于同一个分库的。[0063]步骤S303,由所述每个第二映射任务调用一个第二数据库3(如Mysql数据库)导入工具(如mysqlimport),将写入到本地系统临时文件中的分库数据表导入到第二数据库3中。需要说明的是,写入到本地系统临时文件中的分库数据表可导入到一个或多个第二数据库3中。[0064]请参阅图6所示,是图2中步骤S40的流程图。[0065]步骤S401,数据校验模块104读取表配置文件中的表任务信息。[0066]步骤S402,数据校验模块104根据表任务信息中的切分字段将需要校对的第一数据库2中的源数据表分成第一数量的多个切片,并请求分布式系统集群4对应该每个切片形成一个第三映射任务,所述每个第三映射任务读取源数据表中的一个切片,并根据所述表任务信息中的分库字段对该第三映射任务读取的每个切片进行分库得到第二数量的多个分库数据表。[0067]步骤S403,数据校验模块104从第二数据库3中读取与所述多个分库数据表对应的数据,并请求分布式系统集群4根据每个分库数据表对应形成一个第三化简任务,所述第三化简任务通过合并和排序将第一数据库2中的源数据表分库得到的多个分库数据表与从第二数据库3中读取的与所述多个分库数据表对应的数据进行比较,校验数据是否有缺失及数据是否不完整等问题存在。[0068]其中,第二数据库3所有分库的数据使用与第一数据库2数据迁移到第二数据库3的过程中相同的分库算法的分布式数据库读取,该分布式数据库如cobar。所述第三化简任务通过合并和排序,将分别从第一数据库2和第二数据库3的数据形成一组组的数据对,实际上,分别相当于一条导入过程记录和导出过程记录。可以理解,从第二数据库3中读取数据时也可以采用分布式处理方法,即请求分布式系统集群4形成多个映射任务来分别读取每个分库中的数据。[0069]与现有技术相比,本申请数据库数据迁移方法及系统将每个数据表当作一个迁移任务,以数据库导入导出工具或者定制程序作为异构数据库读写数据的主要手段,在分布式集群中运行这些任务,同时在数据处理中加入自定义的分库算法,将读出的数据划分到多个文件中,再在任务中调用数据库导入导出工具或者定制程序将数据导入到多个新的数据库中。由于每个表都是一个迁移任务,使得不同表不同数据源的问题能够有清晰的划分,可以支持多个任务批量同时进行而不互相影响,大大的加快了数据迁移的速度。在迁移完成后,可以对新库和旧库之间的数据进行校验,找出不一致的数据。因此本申请相对传统的处理数据导入导出的方法,提高了迁移的速度,提供了数据校验功能,保证了迁移过程中的稳定性及迁移过程中的数据正确性。[0070]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本申请的保护范围之内。【权利要求】1.一种数据库数据迁移方法,应用在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,其特征在于,该方法包括:配置数据库迁移任务的被批量调度的多个表任务对应的表任务信息,所述每个表任务将第一数据库中与该表任务对应的源数据表进行数据迁移;从第一数据库读出该表任务中需迁移的源数据表的数据;并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及从所述分布式文件系统中将该多个分库数据表导出到第二数据库中。2.如权利要求1所述的数据库数据迁移方法,其特征在于,通过表配置文件来配置多个表任务对应的表任务信息。3.如权利要求2所述的数据库数据迁移方法,其特征在于,对应每个表任务,所述表配置文件包括源配置和目标配置,所述源配置给出了第一数据库中需要迁移的源数据表的信息,所述目标配置给出了要把需要迁移的源数据表迁往的第二数据库中的目标数据表的信肩、O4.如权利要求1所述的数据库数据迁移方法,其特征在于,将第一数据库中数据导入到分布式文件系统中的过程包括:获取并加载所调度的表任务的表任务信息,所述表任务信息中包括该表任务对应需要迁移的源数据表的切分字段及分库字段信息;根据所述表任务信息中的切分字段将需要迁移的源数据表分成第一数量的多个切片,并请求分布式系统集群对应每个切片形成一个第一映射任务,所述每个第一映射任务都与第一数据库连接并读取源数据表的一个切片;进一步请求分布式系统集群在所述每个第一映射任务中,根据所述表任务信息中的分库字段对该第一映射任务读取的每个切片进行分库得到第二数量的分库数据表,进一步请求分布式系统集群根据所述分库后得到的每个分库数据表对应形成一个第一化简任务;及由每个第一化简任务将分库后得到的每个分库数据表的数据写入到分布式文件系统中。5.如权利要求4所述的数据库数据迁移方法,其特征在于,所述分库过程包括:逐条读取第一数据库中一个源数据表的数据;对所读取的数据做转义、转码;读取表任务信息中的源数据表的分库字段信息;对该分库字段对应的分库键值取模并映射到一个下标的文件中;及将该下表的文件划分到对应的第一化简任务中。6.如权利要求1所述的数据库数据迁移方法,其特征在于,从所述分布式文件系统中将该多个分库数据表导出到第二数据库中的方法包括:获取表任务信息;请求分布式系统集群对应所述每个分库数据表形成一个第二映射任务,所述每个第二映射任务会将一个分库数据表从所述分布式文件系统中读出并写入本地系统临时文件;及由所述每个第二映射任务调用一个第二数据库导入工具,将写入到本地系统临时文件中的分库数据表导入到第二数据库中。7.如权利要求6所述的数据库数据迁移方法,其特征在于,所述迁移方法在将分布式文件系统中的数据导出到第二数据库中后还包括:比较第一数据库与第二数据库中的数据,校验在迁移过程中数据是否有缺失以及数据是否不完整。8.如权利要求7所述的数据库数据迁移方法,其特征在于,所述比较第一数据库与第二数据库中的数据的过程包括:读取表任务信息;根据表任务信息中的切分字段将需要校对的第一数据库中的源数据表分成第一数量的多个切片,并请求分布式系统集群对应该每个切片形成一个第三映射任务,所述每个第三映射任务读取源数据表中的一个切片,并根据所述表任务信息中的分库字段对该第三映射任务读取的每个切片进行分库得到第二数量的多个分库数据表;及从第二数据库中读取与所述多个分库数据表对应的数据,并请求分布式系统集群根据每个分库数据表对应形成一个第三化简任务,所述第三化简任务通过合并和排序将第一数据库中的源数据表分库得到的多个分库数据表与从第二数据库中读取的与所述多个分库数据表对应的数据进行比较,校验数据是否有缺失及数据是否不完整。9.如权利要求8所述的数据库数据迁移方法,其特征在于,所述第二数据库所有分库的数据使用与第一数据库数据迁移到第二数据库的过程中相同的分库算法的分布式数据库读取。10.如权利要求1所述的数据库数据迁移方法,其特征在于,所述第一数据为Oracle数据库,所述第二数据库为Mysql数据库。11.如权利要求1所述的数据库数据迁移方法,其特征在于,所述分布式系统集群为Hadoop,所述分布式文件系统为Hadoop的分布式文件系统。12.—种数据库数据迁移系统,运行在分布式系统集群环境中,用于在第一数据库和第二数据库之间迁移数据,其特征在于,该迁移系统包括:配置模块,用于配置数据库迁移任务的多个表任务对应的表任务信息,所述每个表任务指对第一数据库中一个源数据表进行数据迁移的迁移任务;调度控制模块,能够读取所述表任务信息,并批量调度所述多个表任务;数据导入模块,用于根据所调度的表任务从第一数据库读出该表任务中需迁移的源数据表的数据,并对该源数据表的数据进行分库得到多个分库数据表,再将该多个分库数据表导入到分布式文件系统中;及数据导出模块,从所述分布式文件系统中读出所述多个分库数据表,再将该多个分库数据表导出到第二数据库中。13.如权利要求12所述的数据库数据迁移系统,其特征在于,所述配置模块通过表配置文件来配置多个表任务对应的表任务信息。14.如权利要求13所述的数据库数据迁移系统,其特征在于,对应每个表任务,所述表配置文件包括源配置和目标配置,所述源配置给出了第一数据库中需要迁移的源数据表的信息,所述目标配置给出了要把需要迁移的源数据表迁往的第二数据库中的目标数据表的信息。15.如权利要求12所述的数据库数据迁移系统,其特征在于,所述数据导入模块将第一数据库中数据导入到分布式文件系统中的过程包括:获取并加载所调度的表任务的表任务信息,所述表任务信息中包括该表任务对应需要迁移的源数据表的切分字段及分库字段信息;根据所述表任务信息中的切分字段将需要迁移的源数据表分成第一数量的多个切片,并请求分布式系统集群对应每个切片形成一个第一映射任务,所述每个第一映射任务都与第一数据库连接并读取源数据表的一个切片;进一步请求分布式系统集群在所述每个第一映射任务中,根据所述表任务信息中的分库字段对该第一映射任务读取的每个切片进行分库得到第二数量的分库数据表,进一步请求分布式系统集群根据所述分库后得到的每个分库数据表对应形成一个第一化简任务;及由每个第一化简任务将分库后得到的每个分库数据表的数据写入到分布式文件系统中。16.如权利要求15所述的数据库数据迁移系统,其特征在于,所述数据导出模块将分布式文件系统中的数据导出到第二数据库中的过程包括:获取表任务信息;请求分布式系统集群对应所述每个分库数据表形成一个第二映射任务,所述每个第二映射任务会将一个分库数据表从所述分布式文件系统中读出并写入本地系统临时文件;及由所述每个第二映射任务调用一个第二数据库导入工具,将写入到本地系统临时文件中的分库数据表导入到第二数据库中。17.如权利要求16所述的数据库数据迁移系统,其特征在于,所述迁移系统还包括:数据校验模块,用于比较第一数据库与第二数据库中的数据,校验在迁移过程中数据是否有缺失以及数据是否不完整。`18.如权利要求17所述的数据库数据迁移系统,其特征在于,所述数据校验模块比较第一数据库与第二数据库中的数据的过程包括:读取表任务信息;根据表任务信息中的切分字段将需要校对的第一数据库中的源数据表分成第一数量的多个切片,并请求分布式系统集群对应该每个切片形成一个第三映射任务,所述每个第三映射任务读取源数据表中的一个切片,并根据所述表任务信息中的分库字段对该第三映射任务读取的每个切片进行分库得到第二数量的多个分库数据表;及从第二数据库中读取与所述多个分库数据表对应的数据,并请求分布式系统集群根据每个分库数据表对应形成一个第三化简任务,所述第三化简任务通过合并和排序将第一数据库中的源数据表分库得到的多个分库数据表与从第二数据库中读取的与所述多个分库数据表对应的数据进行比较,校验数据是否有缺失及数据是否不完整。19.如权利要求12所述的数据库数据迁移系统,其特征在于,所述第一数据为Oracle数据库,所述第二数据库为Mysql数据库。20.如权利要求12所述的数据库数据迁移系统,其特征在于,所述分布式系统集群为Hadoop,所述分布式文件系统为Hadoop的分布式文件系统。【文档编号】G06F17/30GK103793424SQ201210429450【公开日】2014年5月14日申请日期:2012年10月31日优先权日:2012年10月31日【发明者】庄伟杰,宁玉杰申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1