CN111930716A - 一种数据库扩容方法、装置及系统 - Google Patents
一种数据库扩容方法、装置及系统 Download PDFInfo
- Publication number
- CN111930716A CN111930716A CN202010757943.4A CN202010757943A CN111930716A CN 111930716 A CN111930716 A CN 111930716A CN 202010757943 A CN202010757943 A CN 202010757943A CN 111930716 A CN111930716 A CN 111930716A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- capacity expansion
- request
- migrated
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例涉及大数据技术领域,具体公开了一种数据库扩容方法、装置及系统,所述方法包括接收数据库扩容请求;所述数据库扩容请求包括新增子数据库的设备标识信息;确定扩容前的数据库中的待迁移数据,以使所述待迁移数据迁移至所述设备标识信息所对应的新增子数据库中;在确定数据迁移开始后,接收并记录所述待迁移数据所对应的数据写入请求;在确定数据迁移结束后,利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。利用本说明书各个实施例,可以最大限度的保证数据库扩容过程中,数据库的高可用性,以及提高数据库扩容的高效性。
Description
技术领域
本说明书涉及大数据技术领域,特别地,涉及一种数据库扩容方法、装置及系统。
背景技术
当前分布式数据库主要应用领域是大数据分析。分布式数据库处理的数据量已经达到PB级,且数据量还在以惊人的速度增长。已有的分布式数据库系统总会面临计算能力和数据存储能力的瓶颈,当集群的资源不足的时候,则需要通过在线扩容以增加数据库的处理量。即通过增加新的物理设备,让新增的设备分担集群数据处理压力。在扩容的过程中原数据库中的数据需要重新分布至新的物理设备,以保证数据处理的一致性,以及适应扩展带来的性能和存储能力的提升。
目前分布式数据库大多采用哈希分布或者随机分布技术把数据分布到各个节点上。对于已经在运行的分布式数据库系统,数据的哈希分布方式是固定的,如果新增节点,则用户id与服务器的映射关系会大量失效。在这种场景下增加节点就需要修改哈希分布方式,对已有数据重新做哈希分布,让数据分布在新增节点上。同时在扩容的过程需要中断业务,而分布式数据库系统扩容时涉及的数据量巨大,所以扩容所花费的时间也一般比较长,从而使得业务的连续性受到较大的影响。因此,目前亟需一种可以保证业务连续性的数据库在线扩容方法。
发明内容
本说明书实施例的目的在于提供一种数据库扩容方法、装置及系统,可以最大限度的保证数据库扩容过程中,数据库的可用性,进而最大限度的保证业务的连续性。
本说明书提供一种数据库扩容方法、装置及系统是包括如下方式实现的:
一种数据库扩容方法,应用于扩容控制设备,所述方法包括:接收数据库扩容请求;所述数据库扩容请求包括新增子数据库的设备标识信息;确定扩容前的数据库中的待迁移数据,以使所述待迁移数据迁移至所述设备标识信息所对应的新增子数据库中;在确定数据迁移开始后,接收并记录所述待迁移数据所对应的数据写入请求;在确定数据迁移结束后,利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。
本说明书提供的所述方法的另一些实施例中,所述方法还包括:根据所述数据库扩容请求中的设备标识信息以及扩容前的数据库哈希分布,计算得到扩容后的数据库哈希分布;所述数据库哈希分布根据一致性哈希算法确定;根据所述扩容后的数据库哈希分布确定所述新增子数据库的哈希区间。相应的,所述确定扩容前的数据库中的待迁移数据包括将扩容前的数据库中所述哈希区间所对应的数据作为待迁移数据。
本说明书提供的所述方法的另一些实施例中,所述方法还包括:接收并记录所述哈希区间内任意哈希值所对应的数据写入请求。
本说明书提供的所述方法的另一些实施例中,所述方法还包括:在确定数据迁移开始后、数据迁移结束前,拒绝所述待迁移数据所对应的数据读取请求。
本说明书提供的所述方法的另一些实施例中,所述记录所述待迁移数据所对应的数据写入请求,包括:获取所述数据写入请求的请求时间以及数据标识;所述数据标识表示所述数据写入请求所请求的数据的标识信息。根据所述请求时间以及数据标识生成所述数据写入请求的请求标识信息;其中,所述请求标识信息包括数据标识、时间戳以及版本号;所述版本号表示所述数据标识所对应的数据写入请求在数据迁移过程中的请求次数。利用所述请求标识信息记录所述数据写入请求。
本说明书提供的所述方法的另一些实施例中,所述利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理,包括:基于预设分组规则将记录的所述数据写入请求进行分组,获得多个数据写入请求集;其中,所述数据写入请求集包含一个或者多个数据写入请求;利用所述数据写入请求集对所述新增子数据库中的数据进行更新处理。
本说明书提供的所述方法的另一些实施例中,所述方法还包括:基于预设时间间隔清理所述扩容控制设备在执行数据库扩容过程中所产生的中间数据。
另一方面,本说明书实施例还提供一种数据库扩容装置,应用于扩容控制设备,所述装置包括:数据接收模块,用于接收数据库扩容请求;所述数据库扩容请求包括新增子数据库的设备标识信息;迁移数据确定模块,用于确定扩容前的数据库中的待迁移数据,以使所述待迁移数据迁移至所述设备标识信息所对应的新增子数据库中;请求记录模块,用于在确定数据迁移开始后,接收并记录所述待迁移数据所对应的数据写入请求;更新处理模块,用于在确定数据迁移结束后,利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。
本说明书提供的所述装置的另一些实施例中,所述装置还包括:哈希分布配置模块,用于根据所述数据库扩容请求中的设备标识信息以及扩容前的数据库哈希分布,计算得到扩容后的数据库哈希分布;所述数据库哈希分布根据一致性哈希算法确定;哈希区间确定模块,用于根据所述扩容后的数据库哈希分布确定所述新增子数据库的哈希区间。相应的,所述迁移数据确定模块还用于将扩容前的数据库中所述哈希区间所对应的数据作为待迁移数据。
另一方面,本说明书实施例还提供一种数据库扩容系统,所述系统包括扩容控制设备以及数据库;其中,所述数据库包括扩容前的数据库以及新增子数据库;所述扩容控制设备包括至少一个处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括上述任意一个或者多个所述方法的步骤。
本说明书一个或多个实施例提供的数据库扩容方法、装置及系统,通过预先配置扩容控制设备,并在扩容控制设备中配置扩容调度流程,统一调度扩容任务。在接收扩容请求后,确定该扩容请求所对应的待迁移数据。并在数据迁移过程中,对待迁移数据的处理请求进行统一管理,接收以及记录相应待迁移数据的数据写入请求。在确定数据迁移完成后,利用记录的数据写入请求通过回放的方式,对新增子数据库中的待迁移数据进行更新处理。从而在数据库扩容时,实现相应迁移数据的数据写入请求的正常处理。在数据库写多读少的实际应用场景下,最大限度的保证了数据库扩容过程中,数据库的高可用性,进而最大限度的保证业务的连续性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本说明书提供的一种数据库扩容方法实施例的流程示意图;
图2为本说明书提供的一个实施例中的数据库哈希分布示意图;
图3为本说明书提供的一种数据库扩容装置的模块结构示意图;
图4为本说明书提供的一个实施例中的扩容控制设备的模块结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是说明书一部分实施例,而不是全部的实施例。基于说明书一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例方案保护的范围。
本说明书实施例提供的一个场景示例中,所述数据库扩容方法可以应用于数据库扩容系统,所述数据库扩容系统可以包括分布式数据库以及对数据库扩容进行协调控制的扩容控制设备。所述扩容控制设备可以包括一个服务器,也可以包括多个服务器,或者服务器与存储设备组成的系统。所述分布式数据库可以采用一致性哈希算法进行布设。
所述扩容控制设备可以接收扩容请求,根据新增的用于扩容的实体设备的信息,计算新的哈希分布。以及生成扩容任务,根据新的哈希分布调度原分布式数据库,将部分数据迁移至新增装置中,并记录扩容任务的状态。在数据迁移过程中,所述控制设备可以收集待迁移数据的数据写入请求,暂停数据读取请求。扩容任务结束后,所述扩容控制设备可以将收集的数据写入请求基于数据写入请求的哈希值,更新至相应的数据存储位置中。
通过采用一致性哈希算法进行数据库布设,可以最大限度的减少数据迁移量。同时,通过配置扩容控制设备,利用扩容控制设备协调数据库扩容处理,并在数据迁移期间,利用扩容控制设备继续接收待数据迁移的数据写入请求,以及在扩容结束后,扩容控制设备再利用记录的数据写入请求对新增子数据库中的数据进行更新处理,从而可以在迁移的过程中尽量保证业务的连续性。更为高效的方式实现数据库的在线扩容,并尽量保证扩容期间数据库的高可用性。
图1是本说明书提供的所述数据库扩容方法实施例流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。具体的一个实施例如图1所示,本说明书提供的数据库扩容方法的一个实施例中,所述方法可以应用于所述扩容控制设备,所述方法可以包括如下步骤:
S20:接收数据库扩容请求;所述数据库扩容请求包括新增子数据库的设备标识信息。
所述扩容控制设备可以接收数据库扩容请求。所述数据库扩容请求可以包括新增子数据库的设备标识信息。所述设备标识信息可以用于标识新增设备。所述新增设备为实现所述新增子数据库的数据存储及处理的实体设备。所述新增设备可以基于数据库扩容需求预先布设。所述设备标识信息如可以为新增设备标识码或者IP地址等。
所述数据库扩容请求可以由有数据库扩容需求的业务应用系统发送给所述扩容控制设备,也可以由业务人员基于数据库扩容需求直接在所述扩容控制设备中发起,这里不做限定。
S22:确定扩容前的数据库中的待迁移数据,以使所述待迁移数据迁移至所述设备标识信息所对应的新增子数据库中。
在接收数据库扩容请求后,所述扩容控制设备可以确定扩容前的数据库中的待迁移数据。所述待迁移数据可以为存储在扩容前的数据库中,待迁移至新增子数据库中的数据。所述待迁移数据可以为扩容前的数据库中的任意数据,也可以为指定数据。一些实施方式中,所述待迁移数据可以根据扩容前的数据库的数据分布特征、实际需求、新增子数据库信息等中的一种或者多种因素确定。所述待迁移数据可以由扩容控制设备通过分析或运算等方式确定;也可以由外接系统确定后,将待迁移数据的标识信息发送给扩容控制设备,这里不做限定。
一些实施方式中,在确定待迁移数据后,所述扩容控制设备可以生成扩容任务,由扩容控制设备从扩容前的数据库中调取待迁移数据,发送至新增子数据库中,实现数据的迁移。另一些实施方式中,也可以在确定待迁移数据后,所述扩容控制设备生成扩容任务,并将扩容任务发送给外接系统,由外接系统根据待迁移数据的标识信息从扩容前的数据库中调取待迁移数据,发送至新增子数据库中,实现数据的迁移。当然,也可以利用其他实现方式进行数据迁移操作。
S24:在确定数据迁移开始后,接收并记录所述待迁移数据所对应的数据写入请求。
所述扩容控制设备在确定开始数据迁移后,可以接收所述待迁移数据所对应的数据写入请求,并记录各数据写入请求。所述数据写入请求可以包括更新、修改等。
所述扩容控制设备还可以记录扩容任务的处理状态,以掌控数据迁移的各个环节,便于对扩容过程中所涉及的问题进行协调处理。如可以记录数据迁移的运行开始时间、结束时间、运行时长、运行状态(待运行、运行、成功、失败等)、数据迁移对扩容控制设备的资源占用情况等。所述扩容控制设备还可以计算数据迁移之间的依赖关系,如确定待迁移数据之间的优先级,优先级高的待迁移数据先处理,优先级低的待迁移数据后处理。所述扩容控制设备还可以确定触发条件,满足触发条件的数据迁移所对应的待迁移数据被调起。还可以采用并发数据迁移处理,所述扩容控制设备还可以确定并发数等。
如t0时刻代表数据迁移开始的时刻,t1时刻代表数据迁移结束的时刻。所述扩容控制设备通过记录的处理状态,在确定开始数据迁移后,可以通过接口接收对待迁移数据的数据写入请求。数据写入请求如可以包括DML语句、DDL语句等。并可以记录在所述扩容控制设备所对应的外接数据库中,如oracle数据库。
S26:在确定数据迁移结束后,利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。
所述扩容控制设备在确定数据迁移结束后,可以利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。可以根据数据库对应的数据写入请求处理方式,利用所述数据写入请求对所述新增子数据库中的相应数据进行处理,如修改、删除等处理。具体处理实现方案可以参考数据库的相应处理方式进行,这里不做赘述。
另一些实施例中,所述扩容控制设备还可以在确定数据迁移开始后、数据迁移结束前,拒绝所述待迁移数据所对应的数据读取请求。
上述实施例提供的方案,通过预先配置扩容控制设备,并在扩容控制设备中配置扩容调度流程,统一调度扩容任务。在接收扩容请求后,确定该扩容请求所对应的待迁移数据,并在数据迁移过程中,对待迁移数据的处理请求进行统一管理。并接收以及记录相应待迁移数据的数据写入请求。在确定数据迁移完成后,利用记录的数据写入请求通过回放的方式,对新增子数据库中的待迁移数据进行更新处理。从而在数据库扩容时,实现相应迁移数据的数据写入请求的处理。在数据库写多读少的实际应用场景下,最大限度的保证了数据库扩容过程中,数据库的高可用性。
一些实施例中,所述扩容控制设备还可以根据数据写入请求的提交时间生成相应数据写入请求的请求标识信息。所述请求标识信息可以包括数据标识、时间戳以及版本号。
所述数据标识可以表示所述数据写入请求所请求的数据所对应的标识信息。数据写入请求中通常包含有数据标识,以确定对数据库中的哪个数据进行修改、删除等处理,或者新增某数据标识所对应的数据等。可以从数据写入请求中确定数据标识。所述数据标识如可以为数据库的key值。
所述时间戳可以根据提交时间直接生成。所述版本号可以所述数据标识所对应的数据写入请求在数据迁移过程中的请求次数确定。如某数据标识所对应的数据写入请求为t0时刻后的第一次请求,则版本号为V1.0,如果再次接受到相应数据标识所对应的数据写入请求,则版本号为V2.0。可以通过数据标识确定当前数据写入请求所针对的数据,并通过时间戳进行排序,根据排序确定是对该数据标识的第几次请求,进而确定其所对应的版本号。
可以通过所述请求标识信息将所述数据写入请求记录在oracle数据库中。通过请求标识信息记录数据写入请求,可以准确高效的确定出某数据标识的所对应的多次数据写入请求的处理顺序,以在数据更新阶段,提高数据更新的准确性。
一些实施例中,可以根据预设分组规则将记录的所述数据写入请求进行分组,获得多个数据写入请求集。其中,所述数据写入请求集包含一个或者多个数据写入请求。利用数据写入请求集对所述新增子数据库中的数据进行更新处理。
一些实施方式中,如可以根据数据写入请求的请求标识信息对数据写入请求进行分组。如可以将请求标识信息中相同数据标识的数据写入请求放到一个数据写入请求集中。通过将相同数据标识所对应的数据写入请求作为一个事务进行提交处理,可以更为简单方便的实现对同一数据的系列处理,提高数据处理的效率。另一些实施方式中,还可以按请求标识信息中的时间戳以及版本号对各数据写入请求进行排序,根据排序依次选定N个数据写入请求作为一组。通过排序的方式进行事务的划分,在排序靠前的事务提交成功后,再提交后一个事务。如果数据写入请求集未处理成功,则可以通过不断重试机制,直至处理成功,从而进一步保证数据写入请求处理的一致性。当然,也可以根据基于其他的分组规则将记录的所述数据写入请求进行分组,这里不做限定。
另一些实施例中,还可以根据所述数据库扩容请求中的新增设备信息以及扩容前的数据库哈希分布,计算得到扩容后的数据库哈希分布。所述数据库哈希分布可以根据一致性哈希(Hash)算法确定。然后,可以根据所述扩容后的数据库哈希分布确定所述设备标识信息所对应的新增子数据库的哈希区间。相应的,所述确定扩容前的数据库中的待迁移数据可以包括将扩容前的数据库中所述哈希区间所对应的数据作为待迁移数据。
所述一致性哈希算法如可以为哈希环算法、HashSlot算法等。
以哈希环算法为例,如图2所示,整个数据库的Hash空间可以被构建成一个首尾相接的环。使用哈希环算法时,通常需要进行两次映射。
第一次,给每个数据库节点计算Hash,然后记录它们的Hash值,就是确定各节点在环上的位置。
第二次,给每个数据的Key计算Hash,然后沿着顺时针的方向找到环上的第一个节点,就是该Key储存对应的节点。
可以进一步为每个实际节点(实际的物理服务器)布设虚拟节点,以减小hash环偏斜所带来的影响。虚拟节点是实际节点在hash环上的复制品,一个实际节点可以对应多个虚拟节点。加入虚拟节点以后的hash环如图2所示。
从图2中可以看出,A、B、C三个节点分别虚拟出了一个虚拟节点。引入虚拟节点的概念后,数据的分布相对更为均衡。图2中,1号、3号内的哈希值所对应的数据被存储在节点A中,5号、4号内的哈希值所对应的数据被存放在节点B中,6号、2号内的哈希值所对应的数据被存储在节点C中,根据实际情况,可以虚拟出更多的虚拟节点,以便减小hash环偏斜所带来的影响,虚拟节点越多,hash环上的节点就越多,缓存被均匀分布的概率就越大。
然后,扩容控制设备可以根据新增子数据库的设备标识信息确定扩容后的数据库的哈希分布。假设根据新增子数据库的设备标识信息确定要增加一个数据库节点D,可以根据需要确定新增的数据库节点D在hash环上的位置,并为其分配虚拟节点。然后,可以沿hash环上顺时针,将节点D与节点D之后第一位的节点之间的部分哈希值、以及节点D的虚拟节点与节点D的虚拟节点之后第一位的节点的部分哈希值作为节点D的哈希区间。相应的,位于该哈希区间内的哈希值所对应的数据被存储在节点D中。
可以将扩容前的数据库中节点D所对应的哈希区间内任意哈希值所对应的数据作为待迁移数据,迁移至数据库节点D中。由上述分析可知,在利用哈希环算法的情况下,待迁移数据仅仅为位于节点D与节点D之后第一位的节点之间的数据、以及位于节点D的虚拟节点与节点D的虚拟节点之后第一位的节点之间的数据,即位于节点D以及节点D的虚拟节点之后第一位的节点上的部分数据。扩容时数据库的哈希分布无需全部重新计算,且待迁移的数据量也相对较少,从而可以大幅提高扩容效率。
以HashSlot算法为例,可以利用HashSlot算法来实现数据库中Key值的均匀分布和实例的增删管理。首先可以默认分配16384个Hash Slot(哈希槽),这个大小正好可以使用2kb的空间保存。当然,也可以采取其他分配数值。每个Slot相当于一致性Hash环上的一个节点。接入集群的所有实例将均匀地占有这些Slot,而当Set一个Key时,使用CRC16(Key)%16384来计算出这个Key属于哪个Slot,并最终映射到对应的实例上去。
当增删实例时,Slot和实例间如可以采用下述方式改动:
假设扩容前的数据库有3个节点A、B、C,那么此时Slot的覆盖情况是:
节点A:0-5460
节点B:5461-10922
节点C:10923-16383
然后,扩容控制设备可以根据新增子数据库的设备标识信息确定扩容后的数据库的哈希分布。假设根据新增子数据库的设备标识信息确定要增加一个数据库节点D,则可以将扩容前的数据库3个节点A、B、C中的一部分Slot移动到D上,成功接入数据库节点D后数据库Slot的覆盖情况将变为如下情况:
节点A:1365-5460
节点B:6827-10922
节点C:12288-16383
节点D:0-1364,5461-6826,10923-12287
同时,如果删除一个节点,则将其原来占有的Slot以及对应的储存均匀地归还给其他节点即可。
通过利用HashSlot算法可以更加简单高效的确定扩容后的数据库的哈希分布,确定新增子数据库的hash区间,降低数据迁移量,进而提高数据库扩容的效率。
相应的,另一些实施例中,扩容控制设备可以在数据迁移过程中,接收并记录所述哈希区间内任意哈希值所对应的数据写入请求。通过上述方式,不仅仅可以接收待迁移数据所对应的数据写入请求,还可以接收新增子数据库所对应的哈希区间内任意哈希值所对应的数据写入请求,使得接收的数据写入请求更加全面。同时,对其他哈希区间的数据可以维持正常处理,进一步提高数据库在扩容期间的高可用性。相应的,可以基于数据写入请求所对应的哈希值对所述新增子数据库中的相应哈希值所对应的数据进行更新处理。
另一些实施例中,所述扩容控制设备还可以基于预设时间间隔清理所述扩容控制设备在执行扩容任务过程中所产生的中间数据。扩容的过程中,待迁移数据可以首先从扩容前的数据库中提取后,放到扩容节点上持久的存放,然后,再迁移至新增子数据库中。对该部分数据,可以在迁移成功后删除。同时,在控制节点还可以存储有控制列表,该列表中可以记录数据的迁移情况,如果迁移成功了,可以将该记录数据一起清理。扩容节点还存储有数据写入请求,在更新处理完成后,可以将该部分数据一起清理。通过定期的清理在数据扩容过程后出现的中间数据,可以释放扩容控制设备空间和资源。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。具体的可以参照前述相关处理相关实施例的描述,在此不做一一赘述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书一个或多个实施例提供的数据库扩容方法,通过预先配置扩容控制设备,并在扩容控制设备中配置扩容调度流程,统一调度扩容任务。在接收扩容请求后,确定该扩容请求所对应的待迁移数据,并在数据迁移过程中,对待迁移数据的处理请求进行统一管理,接收以及记录相应待迁移数据的数据写入请求。在确定数据迁移完成后,利用记录的数据写入请求通过回放的方式,对新增子数据库中的待迁移数据进行更新处理。从而在数据库扩容时,实现相应迁移数据的数据写入请求的处理。在数据库写多读少的实际应用场景下,最大限度的保证了数据库扩容过程中,数据库的高可用性。
基于上述所述的数据库扩容方法,本说明书一个或多个实施例还提供一种数据库扩容装置。所述的装置可以包括使用了本说明书实施例所述方法的系统、软件(应用)、模块、组件、服务器等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。具体的,图3表示说明书提供的一种数据库扩容装置实施例的模块结构示意图,如图3所示,应用于扩容控制设备,所述装置包括:
数据接收模块102,可以用于接收数据库扩容请求;所述数据库扩容请求包括新增子数据库的设备标识信息。
迁移数据确定模块104,可以用于确定扩容前的数据库中的待迁移数据,以使所述待迁移数据迁移至所述设备标识信息所对应的新增子数据库中。
请求记录模块106,可以用于在确定数据迁移开始后,接收并记录所述待迁移数据所对应的数据写入请求。
更新处理模块108,可以用于在确定数据迁移结束后,利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。
另一些实施例中,所述装置还可以包括:
哈希分布配置模块,可以用于根据所述数据库扩容请求中的设备标识信息以及扩容前的数据库哈希分布,计算得到扩容后的数据库哈希分布;所述数据库哈希分布根据一致性哈希算法确定。
哈希区间确定模块,可以用于根据所述扩容后的数据库哈希分布确定所述新增子数据库的哈希区间。
相应的,所述迁移数据确定模块还可以用于将扩容前的数据库中所述哈希区间所对应的数据作为待迁移数据。
另一些实施例中,所述请求记录模块106还可以用于接收并记录所述哈希区间内任意哈希值所对应的数据写入请求。
另一些实施例中,所述装置还可以包括:请求拒绝模块,可以用于在确定数据迁移开始后、数据迁移结束前,拒绝所述待迁移数据所对应的数据读取请求。
另一些实施例中,所述请求记录模块106可以包括:
数据获取单元,可以用于获取所述数据写入请求的请求时间以及数据标识。所述数据标识表示所述数据写入请求所请求的数据的标识信息。
标识信息生成单元,可以用于根据所述请求时间以及数据标识生成所述数据写入请求的请求标识信息;其中,所述请求标识信息包括数据标识、时间戳以及版本号;所述版本号表示所述数据标识所对应的数据写入请求在数据迁移过程中的请求次数。
记录单元,可以用于利用所述请求标识信息记录所述数据写入请求。
另一些实施例中,所述更新处理模块108可以包括:
分组单元,可以用于基于预设分组规则将记录的所述数据写入请求进行分组,获得多个数据写入请求集;其中,所述数据写入请求集包含一个或者多个数据写入请求。
更新处理单元,可以利用所述数据写入请求集对所述新增子数据库中的数据进行更新处理。
另一些实施例中,所述装置还可以包括:
清理模块,可以用于基于预设时间间隔清理所述扩容控制设备在执行扩容过程中所产生的中间数据。
如图4所示,基于上述实施例,本说明书实施例还提供一种场景示例,所述扩容控制设备可以包括控制节点(t01、t02)、扩容节点d01、数据访问节点d02以及清理节点c01。其中,
控制节点可以用于控制扩容任务的启动、其他各节点的管控、进度的查询等。其中控制节点t01为主,t02为备,主备节点数据同步,保证控制节点的高可用。
控制节点可以收到用户的扩容请求,生成扩容任务,根据新增机器信息,计算新的数据库哈希分布。并发送新增机器的哈希区间以及数据迁移请求给数据访问节点以及扩容节点。
扩容节点可以根据控制节点发来的数据迁移请求,将所述哈希区间所对应的数据从源发送到目的地。并记录数据迁移的状态。
数据访问节点在接收到数据迁移开始后,接收并记录所述哈希区间所对应的数据写入请求。并暂停所述哈希区间所对应的数据读取请求。
扩容节点在任务结束后,通知控制节点,控制节点发送请求给数据访问节点。数据访问节点可以利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。
在更新处理期间,数据访问节点可以暂停对所述哈希区间所对应的数据写入请求以及数据读取请求,也可以继续接收并记录对所述哈希区间所对应的数据写入请求,暂停数据读取请求,具体可以数据更新处理的期间长短来决定采用何种方式。通常回放时间较短,采用上述两种方式对当前数据库的可用性影响均不太大。
在数据更新完成后,数据访问节点可以向控制节点反馈状态。之后,控制节点可以修改路由规则,恢复数据库正常处理。
控制节点还可以向清理节点发送清理指令,以删除冗余的中间数据。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书一个或多个实施例提供的数据库扩容装置,通过预先配置扩容控制设备,并在扩容控制设备中配置扩容调度流程,统一调度扩容任务。在接收扩容请求后,确定该扩容请求所对应的待迁移数据,并在数据迁移过程中,对待迁移数据的处理请求进行统一管理,接收以及记录相应待迁移数据的数据写入请求。在确定数据迁移完成后,利用记录的数据写入请求通过回放的方式,对新增子数据库中的待迁移数据进行更新处理。从而在数据库扩容时,实现相应迁移数据的数据写入请求的处理。在数据库写多读少的实际应用场景下,最大限度的保证了数据库扩容过程中,数据库的高可用性。
本说明书还提供一种数据库扩容系统,所述系统可以为单独的数据库扩容系统,也可以应用在多种计算机数据处理系统中。所述的系统可以为单独的服务器,也可以包括使用了本说明书的一个或多个所述方法或一个或多个实施例装置的服务器集群、系统(包括分布式系统)、软件(应用)、实际操作装置、逻辑门电路装置、量子计算机等并结合必要的实施硬件的终端装置。一些实施例中,所述系统可以包括扩容控制设备以及数据库。其中,所述数据库包括扩容前的数据库以及新增子数据库。所述扩容控制设备包括至少一个处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现上述任意一个或者多个实施例所述方法的步骤。
所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
需要说明的,上述所述的系统根据方法或者装置实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
上述实施例所述的数据库扩容设备,通过预先配置扩容控制设备,并在扩容控制设备中配置扩容调度流程,统一调度扩容任务。在接收扩容请求后,确定该扩容请求所对应的待迁移数据,并在数据迁移过程中,对待迁移数据的处理请求进行统一管理,接收以及记录相应待迁移数据的数据写入请求。在确定数据迁移完成后,利用记录的数据写入请求通过回放的方式,对新增子数据库中的待迁移数据进行更新处理。从而在数据库扩容时,实现相应迁移数据的数据写入请求的处理。在数据库写多读少的实际应用场景下,最大限度的保证了数据库扩容过程中,数据库的高可用性。
需要说明的是,本说明书实施例并不局限于必须是符合标准数据模型/模板或本说明书实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书的可选实施方案范围之内。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述并不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (10)
1.一种数据库扩容方法,其特征在于,应用于扩容控制设备,所述方法包括:
接收数据库扩容请求;所述数据库扩容请求包括新增子数据库的设备标识信息;
确定扩容前的数据库中的待迁移数据,以使所述待迁移数据迁移至所述设备标识信息所对应的新增子数据库中;
在确定数据迁移开始后,接收并记录所述待迁移数据所对应的数据写入请求;
在确定数据迁移结束后,利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述数据库扩容请求中的设备标识信息以及扩容前的数据库哈希分布,计算得到扩容后的数据库哈希分布;所述数据库哈希分布根据一致性哈希算法确定;
根据所述扩容后的数据库哈希分布确定所述新增子数据库的哈希区间;
相应的,所述确定扩容前的数据库中的待迁移数据包括将扩容前的数据库中所述哈希区间所对应的数据作为待迁移数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收并记录所述哈希区间内任意哈希值所对应的数据写入请求。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定数据迁移开始后、数据迁移结束前,拒绝所述待迁移数据所对应的数据读取请求。
5.根据权利要求1所述的方法,其特征在于,所述记录所述待迁移数据所对应的数据写入请求,包括:
获取所述数据写入请求的请求时间以及数据标识;所述数据标识表示所述数据写入请求所请求的数据的标识信息;
根据所述请求时间以及数据标识生成所述数据写入请求的请求标识信息;其中,所述请求标识信息包括数据标识、时间戳以及版本号;所述版本号表示所述数据标识所对应的数据写入请求在数据迁移过程中的请求次数;
利用所述请求标识信息记录所述数据写入请求。
6.根据权利要求1所述的方法,其特征在于,所述利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理,包括:
基于预设分组规则将记录的所述数据写入请求进行分组,获得多个数据写入请求集;其中,所述数据写入请求集包含一个或者多个数据写入请求;
利用所述数据写入请求集对所述新增子数据库中的数据进行更新处理。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于预设时间间隔清理所述扩容控制设备在执行数据库扩容过程中所产生的中间数据。
8.一种数据库扩容装置,其特征在于,应用于扩容控制设备,所述装置包括:
数据接收模块,用于接收数据库扩容请求;所述数据库扩容请求包括新增子数据库的设备标识信息;
迁移数据确定模块,用于确定扩容前的数据库中的待迁移数据,以使所述待迁移数据迁移至所述设备标识信息所对应的新增子数据库中;
请求记录模块,用于在确定数据迁移开始后,接收并记录所述待迁移数据所对应的数据写入请求;
更新处理模块,用于在确定数据迁移结束后,利用记录的所述数据写入请求对所述新增子数据库中的数据进行更新处理。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
哈希分布配置模块,用于根据所述数据库扩容请求中的设备标识信息以及扩容前的数据库哈希分布,计算得到扩容后的数据库哈希分布;所述数据库哈希分布根据一致性哈希算法确定;
哈希区间确定模块,用于根据所述扩容后的数据库哈希分布确定所述新增子数据库的哈希区间;
相应的,所述迁移数据确定模块还用于将扩容前的数据库中所述哈希区间所对应的数据作为待迁移数据。
10.一种数据库扩容系统,其特征在于,所述系统包括扩容控制设备以及数据库;其中,所述数据库包括扩容前的数据库以及新增子数据库;
所述扩容控制设备包括至少一个处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括所述权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010757943.4A CN111930716A (zh) | 2020-07-31 | 2020-07-31 | 一种数据库扩容方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010757943.4A CN111930716A (zh) | 2020-07-31 | 2020-07-31 | 一种数据库扩容方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111930716A true CN111930716A (zh) | 2020-11-13 |
Family
ID=73315012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010757943.4A Pending CN111930716A (zh) | 2020-07-31 | 2020-07-31 | 一种数据库扩容方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930716A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541039A (zh) * | 2020-12-07 | 2021-03-23 | 武汉联影医疗科技有限公司 | 数据库处理方法、装置、计算机设备和存储介质 |
CN112699133A (zh) * | 2021-03-23 | 2021-04-23 | 浙江太美医疗科技股份有限公司 | 数据库的操作方法、装置及计算机可读介质 |
CN113239011A (zh) * | 2021-05-11 | 2021-08-10 | 京东数字科技控股股份有限公司 | 数据库的扩容方法、装置及系统 |
CN113392067A (zh) * | 2021-06-11 | 2021-09-14 | 北京金山云网络技术有限公司 | 一种针对分布式数据库的数据处理方法、装置及系统 |
CN113742358A (zh) * | 2021-09-16 | 2021-12-03 | 北京东方金信科技股份有限公司 | 分布式数据库中无状态计算层快速扩容或缩容的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136308A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 应用系统数据库更新的方法和系统 |
CN105956166A (zh) * | 2016-05-19 | 2016-09-21 | 北京京东尚科信息技术有限公司 | 数据库读写方法和读写装置 |
CN108810041A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种分布式缓存系统的数据写入及扩容方法、装置 |
CN110083312A (zh) * | 2019-04-28 | 2019-08-02 | 联想(北京)有限公司 | 磁盘扩容方法、装置及计算机设备 |
CN110413413A (zh) * | 2019-07-26 | 2019-11-05 | 北京蜜莱坞网络科技有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN111159296A (zh) * | 2019-12-30 | 2020-05-15 | 深圳市网心科技有限公司 | 一种存储扩容方法、装置、设备及可读存储介质 |
CN111400273A (zh) * | 2019-11-19 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 数据库扩容方法、装置、电子设备及机器可读存储介质 |
-
2020
- 2020-07-31 CN CN202010757943.4A patent/CN111930716A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136308A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 应用系统数据库更新的方法和系统 |
CN105956166A (zh) * | 2016-05-19 | 2016-09-21 | 北京京东尚科信息技术有限公司 | 数据库读写方法和读写装置 |
CN108810041A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种分布式缓存系统的数据写入及扩容方法、装置 |
CN110083312A (zh) * | 2019-04-28 | 2019-08-02 | 联想(北京)有限公司 | 磁盘扩容方法、装置及计算机设备 |
CN110413413A (zh) * | 2019-07-26 | 2019-11-05 | 北京蜜莱坞网络科技有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN111400273A (zh) * | 2019-11-19 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 数据库扩容方法、装置、电子设备及机器可读存储介质 |
CN111159296A (zh) * | 2019-12-30 | 2020-05-15 | 深圳市网心科技有限公司 | 一种存储扩容方法、装置、设备及可读存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112541039A (zh) * | 2020-12-07 | 2021-03-23 | 武汉联影医疗科技有限公司 | 数据库处理方法、装置、计算机设备和存储介质 |
CN112699133A (zh) * | 2021-03-23 | 2021-04-23 | 浙江太美医疗科技股份有限公司 | 数据库的操作方法、装置及计算机可读介质 |
CN113239011A (zh) * | 2021-05-11 | 2021-08-10 | 京东数字科技控股股份有限公司 | 数据库的扩容方法、装置及系统 |
CN113392067A (zh) * | 2021-06-11 | 2021-09-14 | 北京金山云网络技术有限公司 | 一种针对分布式数据库的数据处理方法、装置及系统 |
CN113742358A (zh) * | 2021-09-16 | 2021-12-03 | 北京东方金信科技股份有限公司 | 分布式数据库中无状态计算层快速扩容或缩容的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314701B2 (en) | Resharding method and system for a distributed storage system | |
CN111930716A (zh) | 一种数据库扩容方法、装置及系统 | |
US11327799B2 (en) | Dynamic allocation of worker nodes for distributed replication | |
US20200348852A1 (en) | Distributed object replication architecture | |
US9740706B2 (en) | Management of intermediate data spills during the shuffle phase of a map-reduce job | |
CN106687911B (zh) | 不损害数据完整性的在线数据移动 | |
CN103761190B (zh) | 数据处理方法及装置 | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN105468473A (zh) | 数据迁移方法及数据迁移装置 | |
JP2015504218A (ja) | モジュール式ブロックおよび関連付けられたログファイルを伴う分散型データベース | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
CN104346373A (zh) | 分区日志队列同步管理方法及设备 | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
CN111291062B (zh) | 数据同步写入方法、装置、计算机设备及存储介质 | |
CN113760847A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
Lwin et al. | Non-redundant dynamic fragment allocation with horizontal partition in Distributed Database System | |
CN112579550B (zh) | 一种分布式文件系统的元数据信息同步方法及系统 | |
CN109788013B (zh) | 分布式系统中作业资源分配方法、装置及设备 | |
CN111414422B (zh) | 一种数据分布方法、装置、设备和存储介质 | |
CN108132759A (zh) | 一种文件系统中管理数据的方法和装置 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
JP4893214B2 (ja) | 記憶制御装置、記憶制御方法および記憶制御プログラム | |
EP3264254A1 (en) | System and method for a simulation of a block storage system on an object storage system | |
CN108984343B (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 |