一种数据迁移的方法和装置与流程

文档序号:12612270阅读:243来源:国知局
一种数据迁移的方法和装置与流程

本申请涉及通信技术领域,尤其涉及一种数据迁移的方法和装置。



背景技术:

相关技术中,存储在数据库中的各种数据由于业务需要等原因,可能需要进行迁移,比如:将某些数据从原始数据库迁移到目标数据库。目前,为确保数据迁移前后的一致性,通常会先停机,然后进行数据的迁移。然而,在这样的实现方式中,数据迁移期间只能读不能写,无法提供写相关的业务服务,会导致相关业务中断。当待迁移的数据量较大时,可能会导致业务长时间中断,影响用户的业务使用体验。



技术实现要素:

有鉴于此,本申请提供一种数据迁移的方法和装置,以解决相关技术中数据迁移导致业务中断的问题。

具体地,本申请是通过如下技术方案实现的:

一种数据迁移的方法,所述方法包括:

获取原始库中目标数据的迁移标识;

当所述迁移标识为未迁移时,锁定所述目标数据;

将所述目标数据迁移至目标库,并在迁移完毕后将原始库中所述目标数据的迁移标识置为已迁移。

可选的,所述方法还包括:

在接收到针对目标数据的业务访问时,获取原始库中所述目标数据的迁 移标识;

当所述迁移标识为已迁移时,基于目标库中的所述目标数据执行所述业务访问。

可选的,所述方法还包括:

当所述迁移标识为未迁移时,锁定原始库中所述目标数据;

再次获取原始库中所述目标数据的迁移标识;

当所述迁移标识仍为未迁移时,基于原始库中的所述目标数据执行所述业务访问。

可选的,所述方法还包括:

当所述迁移标识变为已迁移时,异常退出。

可选的,所述锁定所述目标数据,包括:

在所述目标数据的当前状态为未锁定时,锁定所述目标数据;

所述方法还包括:

在迁移完毕后解锁所述目标数据。

一种数据迁移的装置,所述装置包括:

第一获取单元,获取原始库中目标数据的迁移标识;

第一锁定单元,在所述迁移标识为未迁移时,锁定所述目标数据;

数据迁移单元,将所述目标数据迁移至目标库,并在迁移完毕后将原始库中所述目标数据的迁移标识置为已迁移。

可选的,所述装置还包括:

第二获取单元,在接收到针对目标数据的业务访问时,获取原始库中所述目标数据的迁移标识;

第一执行单元,在所述迁移标识为已迁移时,基于目标库中的所述目标数据执行所述业务访问。

可选的,所述装置还包括:

第二锁定单元,在所述迁移标识为未迁移时,锁定原始库中所述目标数据;

第三获取单元,再次获取原始库中所述目标数据的迁移标识;

第二执行单元,在所述迁移标识仍为未迁移时,基于原始库中的所述目标数据执行所述业务访问。

可选的,所述装置还包括:

异常退出单元,在所述迁移标识变为已迁移时,异常退出。

可选的,所述第一锁定单元,具体在所述目标数据的当前状态为未锁定时,锁定所述目标数据;

所述装置还包括:

数据解锁单元,在迁移完毕后解锁所述目标数据。

由以上描述可以看出,本申请可以在目标数据的迁移标识为未迁移时,锁定所述目标数据,将所述目标数据迁移至目标库,并在迁移完毕后将原始库中所述目标数据的迁移标识置为已迁移。本申请通过迁移标识实现不停机的数据迁移,在不中断业务的同时确保迁移前后数据的高一致性,提高用户的业务使用体验。

附图说明

图1是本申请一示例性实施例示出的一种数据迁移的方法的流程示意图。

图2是本申请一示例性实施例示出的一种业务访问的处理方法的流程示意图。

图3是本申请一示例性实施例示出的一种用于数据迁移的装置的一结构示意图。

图4是本申请一示例性实施例示出的一种数据迁移的装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所 有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

相关技术中,在进行数据迁移时,根据实际需要,可能需要将原始库中的数据迁移到一个目标库中,也可能需要将原始库中的数据迁移到多个目标库中。其中,将原始库中的数据迁移到多个目标库中的情况较为复杂,停机后可能会耗费几个小时,甚至几天才能完成迁移,这样长时间的业务中断是不能被接受的。

针对目前数据迁移存在的上述问题,本申请提供一种无需停机的数据迁移方案。

图1是本申请一示例性实施例示出的一种数据迁移的方法的流程示意图。

请参考图1,所述数据迁移的方法可以应用在服务端中,包括有以下步骤:

步骤101,获取原始库中目标数据的迁移标识。

在本实施例中,所述原始库为目标数据在迁移前的存储位置,所述原始库可以包括:原始分库、原始分表等。所述原始库中通常包括有多条目标数据。与所述原始库对应的是目标库,所述目标库为目标数据在迁移后的存储 位置,即在数据迁移时需要将所述目标数据由原始库迁移到目标库。所述目标库也可以包括:目标分库、目标分表等。

在本实施例中,在进行数据迁移之前,可以分别为所述原始库中的每条目标数据设置迁移标识,所述迁移标识包括:已迁移和未迁移,所述迁移标识的初始状态为未迁移。在实际应用中,较为简单的,可以采用预设的字符来表示所述迁移标识,比如:采用0表示未迁移,采用1表示已迁移等,本申请对此不作特殊限制。

在本实施例中,在进行数据迁移时,可以遍历所述原始库中的每条目标数据,以获取所述目标数据的迁移标识。

步骤102,当所述迁移标识为未迁移时,锁定所述目标数据。

在本实施例中,在获取到所述目标数据的迁移标识时,可以判断所述迁移标识是否为已迁移,如果所述迁移标识为已迁移,可以说明所述目标数据已被成功迁移到目标库,可以继续执行步骤101,获取下一条目标数据的迁移标识。如果所述迁移标识为未迁移,则可以判断所述目标数据的当前状态是否为未锁定,如果所述目标数据的当前状态为未锁定,可以说明当前没有针对所述目标数据的写业务,可以锁定所述目标数据,以便后续执行迁移操作。如果所述目标数据的当前状态为已锁定,通常说明当前存在针对所述目标数据的写业务,为确保数据的一致性,还不能进行迁移操作,此时,也可以继续执行步骤101,获取下一条目标数据的迁移标识。

步骤103,将所述目标数据迁移至目标库,并在迁移完毕后将原始库中所述目标数据的迁移标识置为已迁移。

基于前述步骤102,在锁定所述目标数据之后,可以将所述目标数据迁移至目标库,比如:可以先复制所述目标数据,然后将所述目标数据粘贴到目标库。

在本实施例中,在将所述目标数据迁移到目标库之后,可以将原始库中所述目标数据的迁移标识置为已迁移,并解锁原始库中的所述目标数据,即将原始库中的所述目标数据的当前状态置为未锁定。

在本实施例中,服务端可以定期遍历原始库中的目标数据,直至原始库中的所有目标数据的迁移标识均为已迁移时,可以确定所述原始库中所有的目标数据已完全迁移至目标库,本次迁移结束。

基于图1所示的数据迁移的方法,下面介绍服务端在数据迁移过程中接收到针对目标数据的业务访问的处理流程。

图2是本申请一示例性实施例示出的一种业务访问的处理方法的流程示意图。

请参考图2,该实施例在前述图1所示的实施例的基础上,服务端在进行数据迁移时,如果接收到业务访问,可以执行以下步骤:

步骤201,在接收到针对目标数据的业务访问时,获取原始库中所述目标数据的迁移标识。

在本实施例中,服务端在接收到针对正在迁移的原始库中目标数据的业务访问时,相关业务线程可以先获取原始库中所述目标数据的迁移标识。比如:业务线程可以根据所述业务访问中携带的ID信息在原始库中查找对应是目标数据,然后获取该目标数据的迁移标识。

举例来说,假设所述目标数据为余额宝的余额,则相关业务线程可以先从所述业务访问中提取账号信息,然后基于所述账号信息在原始库中查找到与所述账号信息对应的目标数据,即余额宝余额,然后获取所述余额宝余额的迁移标识。

步骤202,判断所述迁移标识是否为未迁移。当所述迁移标识为未迁移时,执行步骤203。当所述迁移标识为已迁移时,执行步骤208。

步骤203,锁定原始库中所述目标数据。

基于前述标识202的判断结果,当所述迁移标识为未迁移时,可以说明截至到获取所述迁移标识的时刻,所述目标数据尚未迁移到目标库,可以先判断原始库中的所述目标数据的当前状态是否为未锁定,如果为未锁定,则可以锁定原始库中的所述目标数据,以便执行后续流程。如果原始库中的所述目标数据的当前状态为已锁定,则可以等待预设的时间后,再次进行所述 目标数据当前状态的判断。

步骤204,再次获取原始库中所述目标数据的迁移标识。

基于前述步骤203,在锁定原始库中所述目标数据之后,其他业务线程无法基于原始库中所述目标数据进行业务访问,比如:写访问,也无法对原始库中所述目标数据进行迁移。此时,可以再次获取原始库中所述目标数据的迁移标识。

步骤205,再次判断所述迁移标识是否为未迁移。如果所述迁移标识仍为未迁移,则执行步骤206。如果所述迁移标识变为已迁移,则执行步骤207。

步骤206,基于原始库中的所述目标数据执行所述业务访问。

基于前述步骤205的判断结果,如果再次获取到的原始库中所述目标数据的迁移标识仍为未迁移,可以说明在锁定所述目标数据的过程中未发生迁移操作,此时,可以基于原始库中所述目标数据执行所述业务访问,比如:对原始库中所述目标数据进行覆盖写等。

步骤207,异常退出。

基于前述步骤205的判断结果,如果再次获取到的原始库中所述目标数据的迁移标识由未迁移变为已迁移,可以说明在锁定所述目标数据的过程中所述目标数据已成功迁移至目标库,所以其迁移标识变为已迁移,此时,无法基于原始库中所述目标数据执行所述业务访问,可以异常退出,向用户返回错误的消息。可选的,如果再次获取到的原始库中所述目标数据的迁移标识由未迁移变为已迁移,也可以跳转到目标库,基于目标库中的所述目标数据执行所述业务访问,本申请对此不作特殊限制。

步骤208,基于目标库中的所述目标数据执行所述业务访问。

基于前述标识202的判断结果,当所述迁移标识为已迁移时,可以说明所述目标数据已成功迁移至目标库,此时,可以跳转到目标库,基于目标库中的所述目标数据执行所述业务访问,以实现迁移过程中数据的高一致性。

由以上描述可以看出,本申请可以在目标数据的迁移标识为未迁移时,锁定所述目标数据,将所述目标数据迁移至目标库,并在迁移完毕后将原始 库中所述目标数据的迁移标识置为已迁移。本申请通过迁移标识实现不停机的数据迁移,在不中断业务的同时确保迁移前后数据的高一致性,提高用户的业务使用体验。

可选的,在本申请一个例子中,针对数据量较大的目标数据,比如:账务余额等状态数据,本申请提供的上述迁移方案能够在不中断相关业务的前提下进行状态数据的迁移,同时有效确保状态数据的高一致性。举例来说,假设所述目标数据为余额宝的余额,与所述目标数据相关的业务操作可以包括:转入、转出等业务操作。当服务端将存储在原始库中大量账号的余额宝余额迁移到目标库时,基于上述迁移方案,可以确保在整个迁移的过程中,相关业务操作不中断,用户还可以无感知地进行转入、转出等业务操作,同时迁移过程中余额宝余额可以保证高一致性,不论余额宝余额是否已经成功从原始库迁移至目标库,用户都能查询到准确的余额。

值得注意的是,本申请上述实施例中涉及的业务访问均为写访问。当业务访问为读访问时,无需对目标数据进行锁定。此外,可选的,在本申请另一个例子中,在原始库中的所有数据全部成功迁移后,可以相关业务访问全部切换到目标库中,进而在处理业务访问时,无需再获取原始库中相关目标数据的迁移标识,业务线程可以基于目标库中的目标数据执行业务访问。

与前述数据迁移的方法的实施例相对应,本申请还提供了数据迁移的装置的实施例。

本申请数据迁移的装置的实施例可以应用在服务端上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在服务端的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请数据迁移的装置所在服务端的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的服务端通常根据该服务端的实际功能,还可以包括其他硬件,对此不再赘述。

图4是本申请一示例性实施例示出的一种数据迁移的装置的结构示意图。

请参考图4,所述数据迁移的装置300可以应用在前述图3所示的服务端中,包括有:第一获取单元301、第一锁定单元302、数据迁移单元303、第二获取单元304、第一执行单元305、第二锁定单元306、第三获取单元307、第二执行单元308、异常退出单元309以及数据解锁单元310。

所述第一获取单元301,获取原始库中目标数据的迁移标识;

所述第一锁定单元302,在所述迁移标识为未迁移时,锁定所述目标数据;

所述数据迁移单元303,将所述目标数据迁移至目标库,并在迁移完毕后将原始库中所述目标数据的迁移标识置为已迁移。

所述第二获取单元304,在接收到针对目标数据的业务访问时,获取原始库中所述目标数据的迁移标识;

所述第一执行单元305,在所述迁移标识为已迁移时,基于目标库中的所述目标数据执行所述业务访问。

所述第二锁定单元306,在所述迁移标识为未迁移时,锁定原始库中所述目标数据;

所述第三获取单元307,再次获取原始库中所述目标数据的迁移标识;

所述第二执行单元308,在所述迁移标识仍为未迁移时,基于原始库中的所述目标数据执行所述业务访问。

所述异常退出单元309,在所述迁移标识变为已迁移时,异常退出。

可选的,所述第一锁定单元302,具体在所述目标数据的当前状态为未锁定时,锁定所述目标数据;

所述数据解锁单元310,在迁移完毕后解锁所述目标数据。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的, 其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1