无停机安全数据库迁移技术的制作方法

文档序号:37461113发布日期:2024-03-28 18:44阅读:7来源:国知局
无停机安全数据库迁移技术的制作方法

本公开涉及分布式计算系统。更具体而言,本公开描述了用于分布式计算系统内的数据库迁移而不引起数据库停机的技术。


背景技术:

1、基于云的服务提供用于处理任务的解决方案,其中任务可能经由事务导致数据在数据存储库或数据库中存储或更新。在多租户分布式计算系统中,随着数据存储后端的需求变化,客户数据可能从一个数据存储库迁移到另一个数据存储库。传统上,迁移客户数据会带来停机(downtime)成本,这表示在计算环境从初始数据存储库转换到目标数据存储库的时间期间客户进程的功能损失。因此,需要一种改进的技术,用于将数据从一个数据存储库迁移到另一个数据存储库,同时保留客户进程的功能。


技术实现思路

1、本公开的实施例涉及提供无停机的数据库迁移。在无停机的情况下进行的数据库迁移可以保留用户在迁移之前、期间和之后与数据库交互的功能,使得用户在迁移过程中不会经历功能损失。特别地,本公开的一些实施例描述了用于将数据的一部分(而不是所有数据)从一个数据库迁移到另一个数据库的方法。

2、一些实施例提供用于在分布式计算系统内实现初始数据存储库和目标数据存储库的方法。数据存储库可以是数据库或其它数据存储系统。数据存储库可以具有若干种不同类型,包括nosql(包括键-值)、关系型和多模式。分布式计算系统可以被配置为提供工作流服务或其它应用服务。对于与工作流对应的实施例,分布式计算系统可以包括分布式计算系统的用户/客户可用的一套云服务当中的工作流即服务(wfaas)。因为工作流服务可以在数据迁移之前和期间处置对数据存储库处的事务的大量请求,因此本文公开的技术可以解决客户请求的适当处置,诸如工作流启动或查询。工作流可以包括要执行以处理工作流实例数据的一系列任务或其它操作。

3、一个实施例针对一种由分布式计算系统执行的方法。该方法可以包括实现初始数据存储库和目标数据存储库。初始数据存储库可以具有初始存储状态,其可以是打开或关闭。类似地,目标数据存储库可以具有目标存储状态,其可以是打开或关闭。一个数据存储库被指定为主(数据存储库)。初始数据存储库可以被配置为存储与初始数据存储库的用户(例如,客户、租户等)相关联的数据。可以将数据的一部分从初始数据存储库迁移到目标数据存储库。迁移数据的一部分可以包括将数据的该部分从初始数据存储库复制到目标数据存储库、改变初始存储状态、改变目标存储状态、以及改变指定的主(数据存储库)。

4、当数据的一部分被迁移时,分布式计算系统可以接收需要创建新的数据实体(例如,第一数据实体)的客户请求。创建数据实体也可以被称为启动实例(例如,工作流实例),使得客户请求可以被称为启动请求。创建第一数据实体可以包括与数据存储库的一个或多个事务。请求可以包括可以唯一地标识该请求的键和/或其它属性。分布式计算系统可以确定初始数据存储库被指定为主数据存储库并且因此是与启动请求和事务相关联的适当数据存储库。分布式计算系统(例如,分布式计算系统的调度器或其它进程)也可以确定初始存储状态为打开。如果存储状态为打开,那么检查目标数据存储库是否存在与请求相关联的键。键可以作为第一数据实体的启动事务的一部分被存储;数据存储库中存在键指示具有相同键的数据实体已在该数据存储库处被启动。为了确保在迁移过程期间不启动具有相同键的实例,分布式计算系统(除了核实该键不存在于初始数据存储库中之外)还可以核实该键不存在于目标数据存储库中。如果该键不存在,那么可以在初始数据存储库处创建第一数据实体。用于创建第一数据实体的事务可以包括将第一数据实体提交到初始数据存储库或中止事务。

5、在另一个实施例中,该方法可以包括用于处置后面在迁移过程中发生的启动请求的附加操作。目标数据存储库可以被指定为主数据存储库。分布式计算系统可以接收创建与第二键相关联的第二数据实体的第二请求。分布式计算系统然后可以确定目标数据存储库被指定为主(数据存储库)、确定目标存储状态、以及核实第二键不存在于初始数据存储库中。基于这些确定(例如,目标存储状态为打开),分布式计算系统可以在目标数据存储库处创建第二数据实体。

6、在一些实施例中,存储在初始数据存储库处的用户数据可以包括不可变数据、瞬态数据和键数据。不可变数据可以是在数据存储库内创建的、可以被读取但不能被更新或删除的数据。当在初始数据存储库和目标数据存储库之间迁移数据的第一部分和附加部分时,数据的这些部分可以包括不可变数据。

7、在另一个实施例中,该方法可以包括用于在数据的一部分已经从初始数据存储库复制到目标数据存储库之后处置回滚数据迁移的附加操作。云服务(例如,wfaas)可以在迁移期间在目标数据存储库中创建新的不可变数据(例如,第二数据实体可以包括新的不可变数据)。初始数据存储库可以被指定为主数据存储库。数据的附加部分可以从目标数据存储库传输到初始数据存储库。数据的附加部分可以包括由云服务创建的新的不可变数据。在此传输期间,分布式计算系统可以接收创建第三数据实体的第三请求。第三请求可以包括第三键。分布式计算系统然后可以确定初始数据存储库被指定为主数据存储库、初始存储状态为打开、以及第三键不存在于目标数据存储库中。分布式计算系统然后可以在初始数据存储库处创建第三数据实体。

8、在一些其它实施例中,该方法包括在将事务提交到初始数据存储库之前确保初始存储状态为打开的操作。该事务可能导致在数据存储库中创建键和不可变数据,该数据与第一数据实体和第二数据实体的创建相关联。

9、另一个实施例针对一种分布式计算系统,其包括一个或多个处理器和存储计算机可执行指令的一个或多个存储器,该计算机可执行指令在用一个或多个处理器执行时,使得分布式计算系统实现初始数据存储库和目标数据存储库。分布式计算系统可以将初始数据存储库指定为主数据存储库。这些指令可以使得分布式计算系统将数据的一部分从初始数据存储库迁移到目标数据存储库。当数据正在(例如,通过复制)迁移时,分布式计算系统可以接收在初始数据存储库处创建第一数据实体的请求。该请求可以包括可以唯一地标识该请求的键、第一数据实体、第一数据实体的范围或该请求的其它属性。这些指令可以使得分布式计算系统确定初始数据存储库被指定为主数据存储库并且因此是与启动请求和事务相关联的适当数据存储库。这些指令还可以使得分布式计算系统确定初始存储状态为打开。如果存储状态为打开,那么检查目标数据存储库是否存在与请求相关联的键。如果该键不存在,那么分布式计算系统将第一数据实体存储在初始数据存储库处。用于创建第一数据实体的事务可以包括将第一数据实体提交到初始数据存储库或中止事务。

10、在又一个实施例中,指令可以使得分布式计算系统处置后面在迁移过程中发生的启动请求。目标数据存储库可以被指定为主数据存储库。分布式计算系统可以接收创建与第二键相关联的第二数据实体的第二请求。然后,指令可以使得计算系统确定目标数据存储库被指定为主(数据存储库)、确定目标存储状态、以及核实第二键不存在于初始数据存储库中。基于这些确定(例如,目标存储状态为打开),系统可以在目标数据存储库处创建第二数据实体。

11、在另一个实施例中,指令可以允许分布式计算系统在数据的一部分已经从初始数据存储库复制到目标数据存储库之后处置回滚数据迁移。第二数据实体可以包括目标数据存储库中的新的不可变数据。初始数据存储库可以被指定为主数据存储库。指令可以使得分布式计算系统将数据的附加部分从目标数据存储库传输到初始数据存储库。在此传输期间,分布式计算系统可以接收创建第三数据实体的第三请求。第三请求可以包括第三键。指令可以使得分布式计算系统确定初始数据存储库被指定为主数据存储库、初始存储状态为打开、以及第三键不存在于目标数据存储库中。计算系统然后可以在初始数据存储库处创建第三数据实体。

12、又一个实施例针对一种存储特定计算机可执行指令的非暂态计算机可读介质,该计算机可执行指令在由处理器执行时使得计算机系统至少:实现初始数据存储库和目标数据存储库;将数据的一部分从初始数据存储库迁移到目标数据存储库;当数据正在迁移时,接收在初始数据存储库处创建第一数据实体的请求;确定初始数据存储库被指定为主数据存储库;确定初始存储状态为打开;核实目标数据存储库处是否存在与请求相关联的键;以及根据确定该键不存在,在初始数据存储库处创建第一数据实体。用于创建第一数据实体的事务可以包括将第一数据实体提交到初始数据存储库或中止事务。

13、在一些实施例中,指令可以使得分布式计算系统:将目标数据存储库指定为主数据存储库;接收创建与第二键相关联的第二数据实体的第二请求;确定目标数据存储库被指定为主(数据存储库)、确定目标存储状态、核实第二键不存在于初始数据存储库中;以及根据这些确定,在目标数据源处创建第二数据实体。

14、在另一个实施例中,指令可以使得分布式计算系统:在目标数据存储库中创建新的不可变数据;将初始数据存储库指定为主数据存储库;将数据的附加部分从目标数据存储库传输到初始数据存储库;以及在此传输期间,接收创建第三数据实体的第三请求。第三请求可以包括第三键。指令可以附加地使得分布式计算系统:确定初始数据存储库被指定为主数据存储库、确定初始存储状态、核实第三键不存在于目标数据存储库中;以及在初始数据存储库处创建第三数据实体。

15、实施例可以通过使用计算机程序产品来实现,该计算机程序产品包括计算机程序/指令,该计算机程序/指令在由处理器执行时,使得处理器执行本公开中描述的任何方法。

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