CN109766328A - 数据库迁移方法、系统、数据处理设备、计算机介质 - Google Patents
数据库迁移方法、系统、数据处理设备、计算机介质 Download PDFInfo
- Publication number
- CN109766328A CN109766328A CN201811615758.0A CN201811615758A CN109766328A CN 109766328 A CN109766328 A CN 109766328A CN 201811615758 A CN201811615758 A CN 201811615758A CN 109766328 A CN109766328 A CN 109766328A
- Authority
- CN
- China
- Prior art keywords
- task
- data
- migration
- database
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了数据库迁移方法、系统、数据处理设备、计算机介质。所述数据库迁移方法包括:针对一个数据库迁移任务构建多个任务层;将针对该数据库中的各数据表的数据表迁移任务分配至所述多个任务层中的相应任务层;以及在每一个任务层上同步执行该层上的数据表的迁移。通过将数据库迁移的工作拆分成多个任务层上的同步任务并进行数据的分布式传输,能够提高数据库迁移的效率和稳定性。
Description
技术领域
本发明涉及数据传输技术,尤其涉及数据库迁移方法、系统、数据处理设备、计算机介质。
背景技术
随着云计算技术的兴起,数据库往往要架在云上,而用户的数据库可能会因为版本升级、机房迁移等情况,产生迁移的需求。
当前,数据库迁移往往通过单机单任务拷贝的方式进行。对于一个数据库迁移任务,尤其是在数据库中有大量的数据需要迁移的情况下,例如一个数据量很大的有1000张表或者更多张表的数据库,要在单机上一次性同步完成数据迁移是很困难的事情。
单机进行数据库迁移往往产生以下问题:
1)单机的性能上存在着瓶颈,可扩展性较差,所以大数据量情况下处理速度较慢,导致低效。
2)由单机执行数据库迁移,只能有一个任务,导致即便一个表的格式不正确,也往往会影响数据库迁移工作整体上的顺利进行。
因此,亟需一种能够提高数据库迁移的效率和稳定性的方案来解决上述这样的问题。
发明内容
为了解决以上问题之一,本发明提供了一种数据库迁移方法、系统、数据处理设备、计算机介质。
针对上述问题之一,本发明的发明人创新性地提出了数据库分布式迁移方案。
根据本发明的一个实施例,提供一种数据库迁移方法,包括:针对一个数据库迁移任务构建多个任务层;将针对该数据库中的各数据表的数据表迁移任务分配至所述多个任务层中的相应任务层;以及在至少一个任务层同步执行该层上的数据表的迁移。
本发明首先将整个数据库迁移任务抽象成多层或多级同步任务,这可以说是为本发明实现分布式迁移策略的前提。这里需要注意,将一个在单机上依序执行的数据传输或数据迁移任务(可以认为是平行的数据传输任务)抽象成层级式的,这打破了传统的思维模式,采用了创新的思维方式来解决数据库中的大量数据被在单机上依次平行传输导致的低效、不稳定的问题。
进一步地,本发明还在从数据库迁移任务抽象出的每个同步任务层上布置或安排多个同步任务,以利用分布式系统的多个终端分别执行这些同步任务,从而实现了数据的分布式传输,顺利解决了单机迁移的低效问题,实现了数据库迁移工作的高效、快速。
再进一步地,本发明还考虑采用同步控制策略来控制多个任务同步执行,提高了数据库迁移工作的可靠性和稳定性。
由此,本发明能够实现高效、快速、稳定的数据库迁移。
可选地,上述的数据库迁移方法还包括:在构建多个任务层的步骤之前,接收针对一个数据库迁移任务的数据库迁移并行度参数,所述数据库迁移并行度参数用于指定要对该数据库执行数据库迁移时,该数据库迁移任务要拆分成的任务层的数量。
这里,上述的数据库迁移并行度参数可以用于表明一个数据库迁移任务可以被分成几个任务层。它可以是由用户指定的,也可以是分布式系统基于要迁移的数据量以及该系统自身的处理能力等方面综合评价之后给出的一个指标,也就是说,可以根据要迁移的数据量大小以及分布式系统的实际处理能力,来确定该数据库迁移并行度参数。数据库迁移并行度参数可以是大于等于1的自然数。
可选地,可以依据每一个数据表迁移任务要迁移的数据量,确定该数据表迁移任务所属的任务层。
可选地,针对一个数据库迁移任务构建多个任务层包括基于所接收的该数据库迁移任务要拆分成的任务层的数量,来分配相应数量的分布式节点群组,每个分布式节点群组用于执行每个任务层上的数据表迁移任务。
可选地,上述的数据库迁移方法还包括:在分配数据表迁移任务的步骤之前,针对该数据库中的要迁移的每个数据表产生一个或多个数据表迁移任务。
可选地,上述的同步执行是指每一任务层上的各任务都执行完成后,开始执行下一任务层的任务。
根据本发明的另一个实施例,提供一种数据库迁移方法,包括:将针对该数据库中的数据表的多个数据表迁移任务分布在同一个任务层,并同步执行该层上的数据表的迁移;以及将针对该数据库中的后续数据表的多个数据表迁移任务分布在后续任务层,并同步执行该层上的数据表的迁移。
在本实施例中,与上一个实施例不同,本实施例考虑的是先采用分布式方法分配多个数据表迁移任务到分布式系统的多个终端,按照层的概念,在第一层(可以认为是第一个任务层)先形成分布式数据传输,并完成任务的同步;然后,继续第二层的分布式数据传输,即,继续分配后续的多个数据表迁移任务到分布式系统的多个终端,在后续的任务层仍然形成分布式数据传输,并完成任务的同步,由此可以完成整个数据库的迁移工作。
本实施例是上一个实施例的变型。在本实施例中,先考虑实现数据的分布式迁移,并且完成同步,然后逐个任务层进行分布式数据同步传输,由此实现数据库的整体迁移。由此,本实施例与上一个实施例类似,同样能够实现高效、快速、稳定的数据库迁移。
可选地,根据本发明的一个示例性实施例的数据库迁移方法还包括:在分布数据表迁移任务的步骤之前,接收针对一个数据库迁移任务的数据库迁移并行度参数,所述数据库迁移并行度参数用于指定要对该数据库执行数据库迁移时,要在同一个任务层上同步执行的数据表迁移任务的数量。
这里,上述的数据库迁移并行度参数也可以用于表明要在同一个任务层上同步执行的数据表迁移任务的数量。类似地,它可以是由用户指定的,也可以是分布式系统基于要迁移的数据量以及该系统自身的处理能力等方面综合评价之后给出的一个指标,也就是说,可以根据要迁移的数据量大小以及分布式系统的实际处理能力,来确定该数据库迁移并行度参数。数据库迁移并行度参数可以是大于等于1的自然数。
对于同一个数据库迁移任务而言,它要被拆分成的任务层的数量与要在同一个任务层上同步执行的数据表迁移任务的数量可以是相关的,而且两者的关系可以描述如下:对于同一个数据库迁移任务,其要拆分成的任务层的数量越大,同一个任务层上同步执行的数据表迁移任务的数量可能越少;反之亦然。
可选地,在根据本发明的一个示例性实施例的数据库迁移方法中,可以进行智能分层,例如,可以依据每一个数据表迁移任务要迁移的数据量,确定该数据表迁移任务所属的任务层。
例如,所述的智能分层可以是例如基于每一个数据表迁移任务要迁移的数据量,将迁移数据量相近的数据表迁移任务分布在同一个任务层,由此节约时间,提高处理效率。这里,判断迁移数据量的相近度可以通过例如两个数据量相差不超过例如10%或者20%(再例如,在5%~30%的范围内)等这样的数据来进行智能筛选以分层。
另外,智能分层也可以例如考虑数据库的表数据之间的依赖关系来分层,将具有依赖关系的表数据放在同一个或者相邻、相近的层上来进行传输,以在目标数据库中仍然能够完整地呈现原有的依赖关系。
当然,也可以根据各种分层方式的组合来进行智能分层,总之,本发明对于整体迁移任务的分层方式不作任何限制。
同理,对于先分布表迁移任务再形成层的实施方式,分布表迁移任务的方式也可以是像分层那样智能的,即,可以根据数据量和表数据的依赖关系等来分配表迁移任务,而且对于分配表迁移任务的方式不作限制。
可选地,在根据本发明的一个示例性实施例的数据库迁移方法中,该数据库中的要迁移的每个数据表在相应的任务层作为一个或多个数据表迁移任务被执行。
这里,对于数据库中的一个数据表,可以根据其数据量的多少,为其生成一个数据表迁移任务或者为其生成多个数据表迁移任务。在生成多个数据表迁移任务的情况下,可以采用适当的方法来完成数据表中数据的分割与合成。
另外,在一个数据表被生成多个数据表迁移任务的情况下(即存在数据表的分割传送),这个数据表的每个表迁移任务可以在同一任务层,也可以不在同一任务层,本发明对此不作任何限制。
进一步地,一个数据表的多个表迁移任务是否分布在同一任务层,可以根据这些表迁移任务的迁移数据量和/或分布式系统的处理能力来决定。
可选地,在根据本发明的一个示例性实施例的数据库迁移方法中,所述同步执行是指每一任务层上的各任务都执行完成后,开始执行下一任务层的任务。
在本发明中,可以通过上述这样的同步策略,来控制同一任务层的数据迁移任务的同步,由此提高数据迁移的可靠性和稳定性。另外,本发明不限于该同步控制策略,而是只要可以采用任何合适的同步策略来实施数据迁移任务的同步执行。
根据本发明的再一个实施例,提供一种分布式数据库迁移系统,包括:任务层构建装置,被配置用于针对一个数据库迁移任务构建多个任务层;任务分配装置,被配置用于将针对该数据库中的各数据表的数据表迁移任务分配至所述多个任务层中的相应任务层;以及任务执行装置,被配置用于在每一个任务层上同步执行该层上的数据表的迁移任务。
可选地,上述数据库迁移设备还包括接收装置,被配置用于接收针对一个数据库迁移任务的数据库迁移并行度参数,所述数据库迁移并行度参数用于指定要对该数据库执行数据库迁移时,该数据库迁移任务要拆分成的任务层的数量,或者要在同一个任务层上同步执行的数据表迁移任务的数量。
可选地,上述任务分配装置依据每一个数据表迁移任务要迁移的数据量,确定该数据表迁移任务所属的任务层。
可选地,上述数据库迁移设备还包括表迁移任务产生装置,被配置用于针对该数据库中的要迁移的每个数据表产生一个或多个数据表迁移任务。
可选地,所述分布式数据库迁移系统的多个分布式节点中的每一个能够作为所述任务执行装置。
可选地,所述同步执行是指在每一任务层上的各任务都被相应的任务执行装置执行完成后,开始执行下一任务层的任务。
根据本发明的一个实施例,提供一种数据处理设备,包括:处理器;以及存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行上面描述的数据迁移方法之一。
根据本发明的一个实施例,提供一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被处理器执行时,使所述处理器执行上面描述的数据迁移方法之一。
本发明通过对要迁移的数据库中的数据实施分布式迁移,有效降低了大数量数据库迁移的复杂度,大大节省了数据传输时间,并且还能够通过采用同步策略控制分布式数据传输的可靠性,由此能够实现高效、快速、稳定的数据库迁移。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的附图标记通常代表相同部件。
图1给出了根据本发明的一个示例性实施例的数据库迁移方法的示意性流程图。
图2给出了根据本发明的另一个示例性实施例的数据库迁移方法的示意性流程图。
图3给出了根据本发明的又一个示例性实施例的数据库迁移方法的示意性流程图。
图4给出了根据本发明的再一个示例性实施例的数据库迁移方法的示意性流程图。
图5给出了根据本发明的一个示例性实施例的分布式数据库迁移系统的示意性框图。
图6给出了根据本发明的一个示例性实施例的分布式数据库迁移系统及其中的节点分布的示意性框图。
图7示意性地示出了根据本发明的一个实施例的用于迁移数据库的数据传输过程以及数据库迁移任务的分层机制和同步策略的示例。
图8给出了根据本发明的一个示例性实施例的数据处理设备的示意性框图。
图9示出了实施本发明的数据库迁移方法的一个具体示例。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。这里需要说明的是,本申请中的数字、序号以及附图标记仅是为了方便描述而出现的,对于本发明的步骤、顺序等等均不构成任何限制,除非在说明书中明确指出了步骤的执行有特定的先后顺序。
如前所述,为了解决单机执行数据库迁移任务导致的低效、不稳定的问题,本发明公开了一种能够提高数据库迁移的效率和稳定性的方法。图1给出了根据本发明的一个示例性实施例的数据库迁移方法的示意性流程图。
如图1所示,在步骤S101,针对一个数据库迁移任务构建多个任务层。
在本步骤,先针对该数据库迁移任务构建多个任务层,即,本发明中可以先采用把数据库迁移任务进行层次分解而拆分为多个任务层的形式,降低整体数据库迁移工作的复杂度。
如发明内容中所述,本发明首先将整个数据库迁移任务抽象成多层或多级同步任务,这可以说是为本发明实现分布式迁移策略的前提。这里需要注意,将一个传统地在单机上依序执行的数据传输或数据迁移任务(可以认为是平行的数据传输任务)抽象成层级式的,这打破了传统的思维模式,采用了创新的思维方式来解决数据库中的大量数据被在单机上依次平行传输导致的低效、不稳定的问题。
这里,针对一个数据库迁移任务构建多个任务层可以包括:基于该数据库迁移任务要拆分成的任务层的数量,来分配相应数量的分布式终端或分布式节点群组,每个分布式终端或分布式节点群组用于执行每个任务层上的数据表迁移任务。
比如,该数据库迁移任务要拆分成的任务层的数量为4,则可以为该数据库迁移任务分配4个分布式终端群组(即,4组分布式终端),以便在后续执行该数据表迁移任务时,每一任务层明确对应一组分布式终端。
在步骤S102,将针对该数据库中的各数据表的数据表迁移任务分配至所述多个任务层中的相应任务层。
在本步骤,本发明在从数据库迁移任务抽象出的每个任务层上布置或安排多个同步任务,以便可以利用分布式系统的多个终端分别执行这些同步任务,从而实现了数据的分布式传输,顺利解决了单机迁移的低效问题,由此实现数据库迁移工作的高效、快速。
在步骤S103,对于多个任务层中的每个任务层,同步执行该层上的数据表的迁移。
在本步骤,对于每个任务层上的多个数据表迁移任务,其数据表的迁移需要同步地执行,由此保证数据传输的可靠性和稳定性。
进一步地,本发明可以考虑采用同步策略来控制一个任务层上的多个数据表迁移任务的同步执行,由此提高数据库迁移工作的可靠性和稳定性。例如,可以采用以下这样的同步策略来控制一个任务层上的多个数据表迁移任务的同步执行:在每一任务层上的每个数据表迁移任务都执行完成后,才开始执行下一任务层的任务,由此达到数据传输完成的精准同步,避免数据的丢失。请注意,本发明不局限于所举出的这一个示例的同步策略,而是可以在本发明中使用任何合适的同步策略。
另外,在本步骤,对于这多个任务层,可以按照顺序,例如从第1层到最后1层依次完成每一任务层上的任务(请注意,本发明的“按照顺序”不限于按照这样的顺序,按照其它的顺序也是可以的);也可以同时进行各任务层的数据迁移,即这些层同时都在执行任务,不必等待先后顺序。请注意,各层同时执行任务的方式更高效快速,不过这需要系统的处理能力较强;每一层依序执行的方式依然能够比单机执行的方式快很多,而且对系统处理能力的要求没有那么高。总之,可以依据系统的处理能力以及需要迁移的数据量等情况灵活决定任务层的执行次序。
综上可知,通过将一个总的数据库迁移任务进行分割(划分)并实施分布式的数据传输,本发明能够实现高效、快速、稳定的数据库迁移。
另外,需要注意,在本发明中,可以一次迁移整个数据库,即实现整个数据库的高效、快速、稳定的迁移,也可以一次仅迁移一个数据库的一部分,例如一次仅迁移构成整个数据库迁移任务的多个任务层中的一部分任务层,即,剩余的迁移任务可以后续再进行。也就是说,可以暂停或停止数据库的迁移操作,之后再继续进行该数据库的剩余部分的迁移,或者可以之后再分几次进行该数据库的剩余部分的迁移工作,只要该数据库的内容在最终迁移完成之前没有发生改变。
不过,如果数据库的内容发生了改变,即涉及到数据库的更新,则可以根据数据库的更新情况及时更改数据库的迁移任务,例如,更新数据库中的有内容更新或改变的数据表所在的相应任务层上的数据表迁移任务之后,如果有内容更新或改变的数据表尚未发生过迁移,则继续进行迁移,而如果该数据表对应的原数据表已经被迁移过,则可以重新启动该数据表迁移任务,重新完成数据表的迁移。
通过将数据库迁移任务分成多个表迁移任务,可以避免单机迁移时因表的格式不正确、机器故障或数据传输错误等原因导致的整个迁移工作停滞。
图2给出了根据本发明的另一个示例性实施例的数据库迁移方法的示意性流程图。
如图2所示,在步骤S210,将针对该数据库中的数据表的多个数据表迁移任务分布在同一个任务层,并同步执行该层上的数据表的迁移。
然后,在步骤S220,将针对该数据库中的后续数据表的多个后续数据表迁移任务分布在后续任务层,并同步执行后续任务层上的数据表的迁移。
在本实施例中,与上一个实施例不同,本实施例考虑的是先采用分布式方法分配多个数据表迁移任务到分布式系统的可以作为该多个数据表迁移任务的执行节点的多个终端,按照层的概念,在第一层(可以认为是第一个任务层)先形成分布式数据传输,并完成该任务层上的各表迁移任务的同步;然后,继续第二层的分布式数据传输,即,继续分配后续的多个数据表迁移任务到分布式系统的多个终端,在后续的任务层仍然形成分布式数据传输,并完成任务的同步,由此可以完成整个数据库的迁移工作。
本实施例是上一个实施例的变型。在本实施例中,先考虑实现第一批数据的分布式迁移,并且通过执行同步控制策略来完成这第一批数据的同步,然后逐个任务层进行分布式数据同步传输,由此实现数据库的整体迁移。由此,本实施例与上一个实施例类似,在每一任务层中,各数据表之间能够同时进行数据迁移,因此同样能够实现高效、快速、稳定的数据库迁移。
与前面描述的类似,在一个任务层分布多少个数据表迁移任务可以依据分布式系统的处理能力、要迁移的总数据量、各单张表的数据量等等。本发明对此不作任何限制。
另外,如图3和图4所示,根据本发明的一个示例性实施例的数据库迁移方法还可以包括以下步骤(分别对应图3中的S105和图4中的S205):接收针对一个数据库迁移任务的数据库迁移并行度参数,该数据库迁移并行度参数用于指定要对该数据库执行数据库迁移时,该数据库迁移任务要拆分成的任务层的数量,或者要在同一个任务层上同步执行的数据表迁移任务的数量。
这里,上述的数据库迁移并行度参数可以用于表明一个数据库迁移任务可以被分成几个任务层。它可以是由用户指定的,也可以是分布式系统基于要迁移的数据量以及该系统自身的处理能力等方面综合评价之后给出的一个指标,也就是说,可以根据要迁移的数据量大小以及分布式系统的实际处理能力,来确定该数据库迁移并行度参数。
另一方面,上述的数据库迁移并行度参数也可以用于表明要在同一个任务层上同步执行的数据表迁移任务的数量。类似地,它可以是由用户指定的,也可以是分布式系统基于要迁移的数据量以及该系统自身的处理能力等方面综合评价之后给出的一个指标,也就是说,可以根据要迁移的数据量大小以及分布式系统的实际处理能力,来确定该数据库迁移并行度参数。
由此可见,数据库迁移并行度参数可以是大于等于1的自然数。对于同一个数据库迁移任务而言,它要被拆分成的任务层的数量与要在同一个任务层上同步执行的数据表迁移任务的数量可以是相关的,而且两者的关系可以描述如下:对于同一个数据库迁移任务,其要拆分成的任务层的数量越大,同一个任务层上同步执行的数据表迁移任务的数量可能越少;反之亦然。
可选地,在根据本发明的一个示例性实施例的数据库迁移方法中,可以进行智能分层,例如,可以依据每一个数据表迁移任务要迁移的数据量,确定该数据表迁移任务所属的任务层。
例如,所述的智能分层可以是,基于每一个数据表迁移任务要迁移的数据量,将迁移数据量相近的数据表迁移任务分布在同一个任务层,由此使得它们任务完成时间接近一致,所以能够节约执行任务时间,提高处理效率。这里,判断迁移数据量的相近度可以通过例如两个数据量相差不超过例如10%或者20%(再例如,在5%~30%的范围内)等这样的数据来进行智能筛选以分层。
另外,智能分层也可以例如考虑数据库的表数据之间的依赖关系来分层,将具有依赖关系的表数据放在同一个或者相邻、相近的层上来进行传输,以在目标数据库中仍然能够完整地呈现原有的依赖关系。
当然,也可以根据各种分层方式的组合来进行智能分层,总之,本发明对于整体迁移任务的分层方式不作任何限制。
同理,对于下面将要描述的先分布表迁移任务再形成层的实施方式,分布表迁移任务的方式也可以是像分层那样智能的,即,可以根据数据量和表数据的依赖关系等来分配表迁移任务,而且对于分配表迁移任务的方式不作限制。
另外,可选地,在根据本发明的一个示例性实施例的数据库迁移方法中,该数据库中的要迁移的每个数据表在相应的任务层可以对应地作为一个或多个数据表迁移任务被执行。
这里,对于数据库中的一个数据表,可以根据其数据量的多少,为其生成一个数据表迁移任务或者为其生成多个数据表迁移任务。在生成多个数据表迁移任务的情况下,可以采用适当的方法来完成数据表中数据的分割与合成。
另外,在一个数据表被生成多个数据表迁移任务的情况下(即存在数据表的分割传输),这个数据表的每个表迁移任务可以在同一任务层,也可以不在同一任务层,本发明对此不作任何限制。
进一步地,一个数据表的多个表迁移任务是否分布在同一任务层,可以根据这些表迁移任务的迁移数据量和/或分布式系统的处理能力来决定。
另外,可选地,在根据本发明的一个示例性实施例的数据库迁移方法中,所述同步执行是指每一任务层上的各任务都执行完成后,开始执行下一任务层的任务。
在本发明中,可以通过上述这样的同步策略,来控制同一任务层的数据迁移任务的同步,由此提高数据迁移的可靠性和稳定性,避免由于数据迁移任务不同步导致的数据丢失或系统故障。另外,本发明不限于该同步控制策略,而是只要可以采用任何合适的同步策略来实施数据迁移任务的同步执行。
图5给出了根据本发明的一个示例性实施例的数据库迁移系统的示意性框图。
该分布式数据库迁移系统100可以被配置用于,将一个数据库1整个地,或者将一个数据库1中的要迁移的数据(比如该数据库的一部分),从源地址迁移到目标地址上作为目标数据库2,如图7所示。
如图5所示,该数据库迁移系统100包括:任务层构建装置110,可以被配置用于针对一个数据库迁移任务构建多个任务层;任务分配装置120,可以被配置用于将针对该数据库中的各数据表的数据表迁移任务分配至所述多个任务层中的相应任务层;以及任务执行装置130,可以被配置用于在每一个任务层上同步执行该层上的数据表的迁移任务。
另外,可选地,如图5所示,根据本发明的另一个示例性实施例的数据库迁移设备还包括接收装置105,可以被配置用于接收针对一个数据库迁移任务的数据库迁移并行度参数,所述数据库迁移并行度参数用于指定要对该数据库执行数据库迁移时,该数据库迁移任务要拆分成的任务层的数量,或者要在同一个任务层上同步执行的数据表迁移任务的数量。
另外,可选地,上述任务分配装置120依据每一个数据表迁移任务要迁移的数据量,确定该数据表迁移任务所属的任务层。
另外,可选地,上述数据库迁移系统100还包括表迁移任务产生装置101,可以被配置用于针对该数据库中的要迁移的每个数据表产生一个或多个数据表迁移任务。
这里,上述的任务层构建装置110、任务分配装置120、接收装置105、表迁移任务产生装置101等部件中的一个或多个可以由分布式数据库迁移系统100的中心节点或者中心节点上的处理模块、或者由系统100的任意一个或多个分布式节点或任意一个或多个分布式节点上的处理模块来充当,本发明对此不作任何限制。
图6给出了根据本发明的一个示例性实施例的数据库迁移系统的示意性框图。
如图6所示,该分布式数据库迁移系统100包括多个作为该分布式数据库迁移系统的分布式节点和/或中心节点,用于将源数据库1中的数据迁移到目标数据库2。其中,这些分布式节点能够互相通信,每个分布式节点可以作为一个传输节点,用于将一个要被迁移的数据库中的数据传送至一个新的数据库中。
另外,可选地,对于一个分布式数据库迁移系统100而言,上面提到的同步执行是指在每一任务层上的各任务均被分布式节点上的相应的任务执行装置130(可以是分布式节点本身作为任务执行装置130,也可以是其中的例如仅处理模块作为任务执行装置,本发明对此不作任何限制)执行完成后,才开始执行下一任务层的任务。
本发明通过对要迁移的数据库中的数据实施分布式迁移,有效降低了大数量数据库迁移的复杂度,大大节省了数据传输时间,并且还能够通过采用同步策略控制分布式数据传输的可靠性,由此能够实现高效、快速、稳定的数据库迁移。
另外,对于一个数据库迁移任务而言,可以先明确读取库和写入库的数据源类型(例如是MySQL还是Oracle等数据源),以便于数据库的访问和操作,不过读取库和写入库的数据源类型是否相同对于本发明没有实质性影响,原因在于,如果这两个库的数据源类型相同,可以直接使用本发明的数据迁移方法进行迁移工作;如果这两个库的数据源类型不同,则可以进行适当的转换,但是这种转换不影响本发明的实质,仍然可以使用本发明进行数据库的迁移工作。
另外,在执行迁移任务之前,最好也要明确哪些表需要迁移,即是否要整库迁移,还是只迁移其中一部分,这部分内容在前面已经描述过,即,在本发明中,可以实现整库迁移,也可以实现一部分迁移,在此也不再赘述。
图7示意性地示出了根据本发明的一个实施例的用于迁移数据库的数据传输过程以及数据库迁移任务的分层机制和同步策略的示例。
如图7所示,数据库1(要迁移的数据库)要被迁移至目标数据库2,该数据库迁移任务共分为n个任务层,在第1任务层分配有3个表迁移任务,每个表迁移任务可以由分布式迁移系统100的一个任务执行装置130执行(如前所述,系统100的分布式节点可以作为任务执行装置),这3个表迁移任务需要同步执行,直到这三个表迁移任务的执行完成,即同步完成,也就是每一个任务节点(即任务执行装置)都完成了将相应的需传送数据传输至目标数据库2中的任务之后,才能继续进行后续任务层即第2,...,第n任务层,在第n任务层,可以看出该层依然是有3个表迁移任务,同样,这3个表迁移任务需要同步执行,直到这三个表迁移任务的执行完成,即每个表迁移任务对应的数据都已被传输和放入目标数据库中,则同步完成,至此,完成了该数据库迁移任务的分布式传输,即数据库1中的要迁移的数据(如前所述,不一定是整库的数据,可能只是该数据库中的一部分数据需要迁移)已经迁移到了目标数据库2中。
图8给出了根据本发明的一个示例性实施例的数据处理设备的示意性框图。
参见图8,该数据处理设备200包括存储器210和处理器220。
处理器220可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器220可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器220可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器210上存储有可执行代码,当所述可执行代码被所述处理器20执行时,使所述处理器220执行上面描述的数据迁移方法之一。其中,存储器210可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器220或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器210可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器210可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
具体实施示例
为了更容易理解,下面将举一个实施示例,该示例将不作为对本发明的任何限制。
假如用户需要迁移的一个mysql数据库(源数据库)里有11张表,需要将数据迁移(或者同步)到另一个mysql库(目标数据库)中。
源数据库里的表如下:
table1:{a:long,b:long}/*定义源数据库中的数据表*/
table2:{a:long,b:long}
…
table11:{a:long,b:long}。
数据库迁移的过程简介如下。
步骤1接收用户输入
用户输入可以包括例如要迁移数据库中的哪些表(是数据库整体迁移还是仅迁移其中的具体哪些部分),以及迁移并行度参数(本示例中该参数是3)。
步骤2解析用户输入,生成任务分层和分配迁移任务,如图9所示
在图9中,“开始”,“结束”,“分叉”和“联结”是逻辑节点,这些节点均不参与实际数据迁移的执行,而图中的“执行分布式迁移任务”节点是实际的数据同步节点,一个该节点可以代表单表同步,实际执行结果是读取库的某一张表到写入库的某一张表。
在该示例中,由于迁移并行度参数是3,而源数据库中有11个表需要迁移(整库迁移),此时第1、2、3层可以都是3个表迁移任务(假如每张表生成1个表迁移任务),第4层可以是2个表迁移任务,如图9所示的那样;也可以按照其它方式,比如第1层是2个表迁移任务,第2、3层是3个表迁移任务,由此可以看出,本发明并不严格要求一定按照迁移并行度参数来分配表迁移任务,甚至分层,即,可以认为,大致按照迁移并行度参数来执行表迁移任务的分配和分层是可以的。
步骤3数据同步的执行
如图9所示,从“开始”节点开始执行调度,“分叉”节点会触发多个节点的任务,“联结”节点会等上游节点都完成后,继续进行调度(同步策略),到达“结束”节点说明任务成功,节点若执行失败会自动重试。其中,“执行分布式迁移任务”节点可以通过大数据计算框架分布式地执行数据同步。
由此完成从源数据库到目的数据库的数据迁移。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图等等显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (19)
1.一种数据库迁移方法,其特征在于,包括:
针对一个数据库迁移任务构建多个任务层;
将针对该数据库中的各数据表的数据表迁移任务分配至所述多个任务层中的相应任务层;以及
在每一个任务层上同步执行该层上的数据表的迁移。
2.如权利要求1所述的数据库迁移方法,其特征在于,还包括:
在构建多个任务层的步骤之前,接收针对一个数据库迁移任务的数据库迁移并行度参数,所述数据库迁移并行度参数用于指定要对该数据库执行数据库迁移时,该数据库迁移任务要拆分成的任务层的数量。
3.如权利要求1或2所述的数据库迁移方法,其特征在于,依据每一个数据表迁移任务要迁移的数据量,确定该数据表迁移任务所属的任务层。
4.如权利要求1或2所述的数据库迁移方法,其特征在于,针对一个数据库迁移任务构建多个任务层包括基于所接收的该数据库迁移任务要拆分成的任务层的数量,来分配相应数量的分布式节点群组,每个分布式节点群组用于执行每个任务层上的数据表迁移任务。
5.如权利要求1或2所述的数据库迁移方法,其特征在于,还包括:
在分配数据表迁移任务的步骤之前,针对该数据库中的要迁移的每个数据表产生一个或多个数据表迁移任务。
6.如权利要求1或2所述的数据库迁移方法,其特征在于,所述同步执行是指每一任务层上的各任务都执行完成后,开始执行下一任务层的任务。
7.一种数据库迁移方法,其特征在于,包括:
将针对该数据库中的数据表的多个数据表迁移任务分布在同一个任务层,并同步执行该层上的数据表的迁移;以及
将针对该数据库中的后续数据表的多个数据表迁移任务分布在后续任务层,并同步执行所述后续任务层上的数据表的迁移。
8.如权利要求7所述的数据库迁移方法,其特征在于,还包括:
在分布数据表迁移任务的步骤之前,接收针对一个数据库迁移任务的数据库迁移并行度参数,所述数据库迁移并行度参数用于指定要对该数据库执行数据库迁移时,要在同一个任务层上同步执行的数据表迁移任务的数量。
9.如权利要求7或8所述的数据库迁移方法,其特征在于,依据每一个数据表迁移任务要迁移的数据量,确定该数据表迁移任务所属的任务层。
10.如权利要求7或8所述的数据库迁移方法,其特征在于,还包括:
在分布数据表迁移任务的步骤之前,针对该数据库中的要迁移的每个数据表产生一个或多个数据表迁移任务。
11.如权利要求7或8所述的数据库迁移方法,其特征在于,所述同步执行是指每一任务层上的各任务都执行完成后,开始执行下一任务层的任务。
12.一种分布式数据库迁移系统,其特征在于,包括:
任务层构建装置,被配置用于针对一个数据库迁移任务构建多个任务层;
任务分配装置,被配置用于将针对该数据库中的各数据表的数据表迁移任务分配至所述多个任务层中的相应任务层;以及
任务执行装置,被配置用于在每一个任务层上同步执行该层上的数据表的迁移任务。
13.如权利要求12所述的数据库迁移系统,其特征在于,还包括接收装置,被配置用于接收针对一个数据库迁移任务的数据库迁移并行度参数,所述数据库迁移并行度参数用于指定要对该数据库执行数据库迁移时,该数据库迁移任务要拆分成的任务层的数量,或者要在同一个任务层上同步执行的数据表迁移任务的数量。
14.如权利要求12或13所述的数据库迁移系统,其特征在于,所述任务分配装置依据每一个数据表迁移任务要迁移的数据量,确定该数据表迁移任务所属的任务层。
15.如权利要求12或13所述的数据库迁移系统,其特征在于,还包括:
表迁移任务产生装置,被配置用于针对该数据库中的要迁移的每个数据表产生一个或多个数据表迁移任务。
16.如权利要求12或13所述的数据库迁移系统,其特征在于,包括:
所述分布式数据库迁移系统的多个分布式节点中的每一个能够作为所述任务执行装置。
17.如权利要求11所述的数据库迁移系统,其特征在于,所述同步执行是指在每一任务层上的各任务都被相应的任务执行装置执行完成后,开始执行下一任务层的任务。
18.一种数据处理设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1~11中任何一项所述的方法。
19.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被处理器执行时,使所述处理器执行如权利要求1~11中任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811615758.0A CN109766328A (zh) | 2018-12-27 | 2018-12-27 | 数据库迁移方法、系统、数据处理设备、计算机介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811615758.0A CN109766328A (zh) | 2018-12-27 | 2018-12-27 | 数据库迁移方法、系统、数据处理设备、计算机介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109766328A true CN109766328A (zh) | 2019-05-17 |
Family
ID=66451125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811615758.0A Pending CN109766328A (zh) | 2018-12-27 | 2018-12-27 | 数据库迁移方法、系统、数据处理设备、计算机介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766328A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569231A (zh) * | 2019-09-09 | 2019-12-13 | 江苏满运软件科技有限公司 | 数据迁移方法、装置、设备和介质 |
CN111930715A (zh) * | 2020-07-16 | 2020-11-13 | 北京金山云网络技术有限公司 | 数据迁移方法、装置、计算机设备和存储介质 |
CN112988702A (zh) * | 2019-12-12 | 2021-06-18 | 天翼电子商务有限公司 | 异构数据源实时数据传输方法及系统、存储介质及终端 |
US11822570B2 (en) | 2021-11-03 | 2023-11-21 | International Business Machines Corporation | Database synchronization employing parallel poll threads |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7548898B1 (en) * | 2001-02-28 | 2009-06-16 | Teradata Us, Inc. | Parallel migration of data between systems |
CN102724290A (zh) * | 2012-05-23 | 2012-10-10 | 华为技术有限公司 | 一种获取目标客户群的方法、设备及系统 |
CN102831211A (zh) * | 2012-08-14 | 2012-12-19 | 中山大学 | 一种基于表关联分析的数据表迁移的方法 |
CN103793424A (zh) * | 2012-10-31 | 2014-05-14 | 阿里巴巴集团控股有限公司 | 数据库数据迁移方法及系统 |
CN106406987A (zh) * | 2015-07-29 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 一种集群中的任务执行方法及装置 |
CN106648846A (zh) * | 2016-09-23 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种改进的异构多核任务调度的方法 |
-
2018
- 2018-12-27 CN CN201811615758.0A patent/CN109766328A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7548898B1 (en) * | 2001-02-28 | 2009-06-16 | Teradata Us, Inc. | Parallel migration of data between systems |
CN102724290A (zh) * | 2012-05-23 | 2012-10-10 | 华为技术有限公司 | 一种获取目标客户群的方法、设备及系统 |
CN102831211A (zh) * | 2012-08-14 | 2012-12-19 | 中山大学 | 一种基于表关联分析的数据表迁移的方法 |
CN103793424A (zh) * | 2012-10-31 | 2014-05-14 | 阿里巴巴集团控股有限公司 | 数据库数据迁移方法及系统 |
CN106406987A (zh) * | 2015-07-29 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 一种集群中的任务执行方法及装置 |
CN106648846A (zh) * | 2016-09-23 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种改进的异构多核任务调度的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569231A (zh) * | 2019-09-09 | 2019-12-13 | 江苏满运软件科技有限公司 | 数据迁移方法、装置、设备和介质 |
CN110569231B (zh) * | 2019-09-09 | 2022-10-14 | 江苏满运软件科技有限公司 | 数据迁移方法、装置、设备和介质 |
CN112988702A (zh) * | 2019-12-12 | 2021-06-18 | 天翼电子商务有限公司 | 异构数据源实时数据传输方法及系统、存储介质及终端 |
CN111930715A (zh) * | 2020-07-16 | 2020-11-13 | 北京金山云网络技术有限公司 | 数据迁移方法、装置、计算机设备和存储介质 |
US11822570B2 (en) | 2021-11-03 | 2023-11-21 | International Business Machines Corporation | Database synchronization employing parallel poll threads |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766328A (zh) | 数据库迁移方法、系统、数据处理设备、计算机介质 | |
KR102167059B1 (ko) | 멀티-타일 프로세싱 어레이의 동기화 | |
CN104965757B (zh) | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 | |
CN104965761B (zh) | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 | |
KR102178190B1 (ko) | 명령 세트 | |
CN104978228B (zh) | 一种分布式计算系统的调度方法和装置 | |
CN104869140B (zh) | 多集群系统和控制多集群系统的数据存储的方法 | |
JP2017091589A (ja) | プロセッサコア及びプロセッサシステム | |
CA2896973A1 (en) | Methods, devices and systems for dynamically managing memberships in replicated state machines within a distributed computing environment | |
KR20130090147A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
CN107003892A (zh) | Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
CN103914556A (zh) | 大规模图数据处理方法 | |
CN104794155B (zh) | 数据加载的方法、装置及系统 | |
WO2023179415A1 (zh) | 机器学习计算优化方法和平台 | |
KR20200077548A (ko) | 지속성 레벨 표시자를 사용하는 컴퓨팅 클러스터 관리 | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN110262847A (zh) | 应用程序启动加速方法、装置及机器可读存储介质 | |
CN109992278A (zh) | 一种基于容器的应用程序发布方法及装置 | |
CN109271408A (zh) | 一种分布式数据连接处理方法、装置、设备及存储介质 | |
KR102228502B1 (ko) | 컴퓨터 프로세싱의 타이밍 제어 | |
CN104182295A (zh) | 一种数据备份方法及装置 | |
CN106293736A (zh) | 用于粗粒度多核计算系统的两级编程模型及其编程方法 | |
CN102650980A (zh) | 多核动态可重构处理器生成配置信息的方法和装置 | |
CN110321204A (zh) | 计算系统、硬件加速模块管理方法和装置以及存储介质 | |
CN109376020A (zh) | 多区块链交互并发下的数据处理方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190517 |