CN116775595A - 一种分布式数据库的在线扩容方法、装置和计算机设备 - Google Patents
一种分布式数据库的在线扩容方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN116775595A CN116775595A CN202210236391.1A CN202210236391A CN116775595A CN 116775595 A CN116775595 A CN 116775595A CN 202210236391 A CN202210236391 A CN 202210236391A CN 116775595 A CN116775595 A CN 116775595A
- Authority
- CN
- China
- Prior art keywords
- capacity expansion
- expansion
- database
- capacity
- distribution
- 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
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000011084 recovery Methods 0.000 claims abstract description 20
- 239000000725 suspension Substances 0.000 claims abstract description 7
- 230000003068 static effect Effects 0.000 claims description 26
- 238000004886 process control Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 101000822425 Arthrobacter sp. (strain KUJ 8602) Guanidinobutyrase Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 241001080526 Vertica Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种分布式数据库的在线扩容方法、装置和计算机设备。该方法包括:按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容;接收用户输入的暂停扩容指令;根据暂停扩容指令,暂停对数据库的扩容;接收用户输入的恢复扩容指令;根据恢复扩容指令,恢复对数据库的扩容。本发明实施例提供的技术方案中,增加了在线扩容功能,使得扩容操作和数据库操作可以并发执行,增加了扩容任务定制化功能,可以由用户定制化设置,增加了扩容过程控制功能,由原来的单次启动扩容任务改为可以随时暂停扩容任务,然后再随时恢复扩容任务,以实现用户对分布式数据库的在线扩容的定制化和可控性。
Description
【技术领域】
本发明涉及计算机技术领域,尤其涉及一种分布式数据库的在线扩容方法、装置和计算机设备。
【背景技术】
目前主流的分布式数据库包括Vertica、Greenplum、GBase等,都具备集群扩容功能,在相关技术下,扩容过程中使用分布式数据库系统的上层业务系统会被扩容中断业务服务,无法在扩容期间提供正常的业务服务,因为扩容时需要对分布式数据库系统中的表加锁,导致上层业务系统的更新数据库操作无法正常执行。因此,通常分布式数据库扩容均需要申请一定的业务停机窗口来进行。但是,随着分布式数据库系统中的数据量不断增大,所需要的扩容时间会越来越长,造成业务停机窗口越来越大,例如,某个使用Greenplum数据库的银行,在对其数据库扩容时,业务停机超过了3天,对上层业务的开展产生了严重的制约;另外一方面,使用分布式数据库系统的上层业务系统因为提升效率、提升服务质量等因素影响,逐渐发展成为需要24小时内不间断提供服务,进而导致上层业务系统可提供的业务停机窗口越来越小。相关技术中的分布式数据库扩容技术方案逐渐不再满足业务系统的需求。
【发明内容】
有鉴于此,本发明实施例提供了一种分布式数据库的在线扩容方法、装置和计算机设备,用以实现用户对分布式数据库的在线扩容的定制化和可控性。
一方面,本发明实施例提供了一种分布式数据库的在线扩容方法,包括:
按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容;
接收用户输入的暂停扩容指令;
根据所述暂停扩容指令,暂停对数据库的扩容;
接收用户输入的恢复扩容指令;
根据所述恢复扩容指令,恢复对数据库的扩容。
可选地,所述数据库包括一个或多个节点集群,每个所述节点集群包括每个所述节点集群对应的分布表,所述按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容,包括:
按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容,生成多个新节点集群;
为每个所述新节点集群建立新分布表;
所述分布表和/或新分布表中存储有分布规则,按照所述分布规则对每个扩容日程对应的数据库进行重分布数据;
删除所述新分布表并重新命名所述新分布表,以完成对所述数据库的扩容。
可选地,所述分布规则包括静态分布规则,所述按照所述分布规则对每个扩容日程对应的数据库进行重分布数据,包括:
按照所述静态分布规则将每个扩容日程对应的数据库中的静态数据写入所述新分布表,以进行重分布静态数据。
可选地,所述分布规则包括动态分布规则,所述按照所述分布规则对每个扩容日程对应的数据库进行重分布数据,还包括:
按照所述动态分布规则将每个扩容日程对应的数据库中的动态数据写入所述分布表和/或所述新分布表,以进行重分布动态数据。
可选地,所述动态分布规则包括第一分布规则和第二分布规则,所述按照所述动态分布规则将每个扩容日程对应的数据库中的动态数据写入所述分布表和/或所述新分布表,以进行重分布数据,包括:
按照所述第一分布规则将每个扩容日程对应的数据库中的动态数据写入所述分布表;
按照所述第二分布规则将每个扩容日程对应的数据库中的动态数据写入所述新分布表,以进行重分布动态数据。
可选地,所述数据库包括表Table。
可选地,所述分布表和所述新分布表均为激活状态。
另一方面,本发明实施例提供了一种分布式数据库的在线扩容装置,包括:
扩容模块,用于按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容;
接收模块,用于接收用户输入的暂停扩容指令;
暂停模块,用于根据所述暂停扩容指令,暂停对数据库的扩容;
所述接收模块,还用于接收用户输入的恢复扩容指令;
恢复模块,用于根据所述恢复扩容指令,恢复对数据库的扩容。
另一方面,本发明实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述分布式数据库的在线扩容方法。
另一方面,本发明实施例提供了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,其特征在于,所述程序指令被处理器加载并执行时实现上述分布式数据库的在线扩容方法的步骤。
本发明实施例提供的分布式数据库的在线扩容方法的技术方案中,按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容;接收用户输入的暂停扩容指令;根据暂停扩容指令,暂停对数据库的扩容;接收用户输入的恢复扩容指令;根据恢复扩容指令,恢复对数据库的扩容。本发明实施例提供的技术方案中,增加了在线扩容功能,使得扩容操作和数据库操作可以并发执行,增加了扩容任务定制化功能,可以由用户定制化设置,增加了扩容过程控制功能,由原来的单次启动扩容任务改为可以随时暂停扩容任务,然后再随时恢复扩容任务,以实现用户对分布式数据库的在线扩容的定制化和可控性。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为相关技术提供的分布式数据库未扩容时的示意图;
图2为相关技术提供的分布式数据库扩容时的示意图;
图3为相关技术提供的分布式数据库扩容完成时的示意图;
图4为本发明实施例提供的一种分布式数据库的在线扩容方法的流程图;
图5为图4中按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容的流程图;
图6为本发明实施例提供的分布式数据库扩容前的示意图;
图7为本发明实施例提供的分布式数据库建立新分布表的示意图;
图8为本发明实施例提供的分布式数据库扩容时静态数据的流向的示意图;
图9为本发明实施例提供的分布式数据库扩容时动态数据的流向的示意图;
图10为本发明实施例提供的分布式数据库扩容完成时的示意图;
图11为本发明实施例提供的一种分布式数据库的在线扩容装置的结构示意图;
图12为图11中扩容模块的结构示意图;
图13为本发明实施例提供的一种计算机设备的示意图。
【具体实施方式】
为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,甲和/或乙,可以表示:单独存在甲,同时存在甲和乙,单独存在乙这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
相关技术中,分布式数据库扩容的技术方案为:阶段一、备份现有数据库,删除旧的或未使用的表分区,检查集群环境,检查是否有足够的存储空间等。阶段二、向当前集群中增加扩容节点,包括增加节点操作,部署服务组件,修改集群的拓扑结构,更新配置文件并分发到群集中的其余节点等。阶段三、对数据库进行扩容。在扩容过程中,最耗时的是阶段三的这个阶段,特别是当数据量很大时,耗时会很长,因为重分布执行的时长与集群当前的数据量成正比,在这个过程中需要重新在各个节点间平衡数据,即数据按照集群指定的规则在各个节点间移动。图1为相关技术提供的分布式数据库未扩容时的示意图,如图1所示,以将3节点集群的数据库扩容为4节点集群的数据库为例,分布式数据库未扩容时的示意图包括原有的3节点集群Node1、Node2和Node3,新增的节点为Node4(New),其中,Node4中没有数据。图2为相关技术提供的分布式数据库扩容时的示意图,如图2所示,Node1将数据库中总数据的1/4传送到Node4,Node2将数据库中总数据的1/4传送到Node4,Node3将数据库中总数据的1/4传送到Node4。图3为相关技术提供的分布式数据库扩容完成时的示意图,如图3所示,Node1、Node2、Node3和Node4都具有扩容前数据库中总数据的3/4数据,实现扩容后的数据平衡。
从相关技术中的分布式数据库现状来看,集群扩容时会导致使用分布式数据库系统的上层业务系统在扩容时段内无法正常开展业务,尤其是集群规模越大,需要重新分布的数据量越大时,造成的业务中断时间越长,使得上层业务系统长时间不能对外提供服务。
并且,这样的扩容场景是必然存在的。因为,随着业务不断发展,特别是4G/5G的高速网络时代,流量数据爆发式增长,原本规划3年的分布式数据库系统,系统上线1年多,主机资源已经比较吃紧,特别是磁盘空间已经无法满足业务要求,系统扩容迫在眉睫。当客户忌讳分布式数据库扩容给业务系统带来的中断业务服务的影响时,会导致客户选择不断推迟分布式数据库扩容的时间点,而这种讳疾忌医造成的结果是,分布式数据库所承载的数据量会随着业务的开展日益增长,受限于现有的分布式数据库扩容技术,在执行分布式数据库扩容操作时中断上层业务系统的时段越长。相关技术中的技术方案不能实现用户对分布式数据库的在线扩容的定制化和可控性。
为解决相关技术中的技术问题,本发明实施例提供了一种分布式数据库的在线扩容方法,图4为本发明实施例提供的一种分布式数据库的在线扩容方法的流程图,如图4所示,该方法包括:
步骤102、按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容。
表1为相关技术中扩容日程的示例,如下表1所示:
表1
如上表1所示,相关技术中,仅对一个数据库Instance_sample进行扩容,启动时间为用户点击开始扩容“确认”按钮的时间2021-4-25 11:06:00,结束时间和执行时长为预估值。系统真正完成扩容操作的时间点需要在扩容完成后在扩容日志中查看。
表2为本发明实施例中扩容日程的示例,如下表2所示:
表2
如上表2所示,对多个数据库Database_1、Database_2和Database_3,多个表Table_1、Table_2和Table_3进行扩容,启动时间为用户点击开始扩容“确认”按钮的时间2021-4-25 11:06:00,此时,第一个对表Table_1进行扩容的任务开始执行,其中,结束时间和执行时长可以为预设置值。在第一个任务结束后,第二个任务开始执行,以此类推。
本发明实施例中,各步骤由计算机设备执行。
本发明实施例中,数据库包括表Table,能够对表Table按照步骤102-步骤110的方法进行扩容。
本发明实施例中,数据库包括一个或多个节点集群,每个节点集群包括每个节点集群对应的分布表。
图5为图4中按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容的流程图,如图5所示,步骤102包括:
步骤1022、按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容,生成多个新节点集群。
图6为本发明实施例提供的分布式数据库扩容前的示意图,如图6所示,扩容前的分布式数据库为3节点集群的数据库,包括Node1、Node2和Node3,其中,Node1包括分布表T1_n1,Node2包括分布表T1_n2,Node3包括分布表T1_n3,T1_n1、T1_n2和T1_n3为T1分布表,T1分布表为激活状态(Active)。
T1分布表作为分布式数据库系统中的分布表,在每个节点上具有一个主分片,分别是T1_n1、T1_n2和T1_n3,能够根据T1分布表的分布规则存储节点数据。
步骤1024、为每个新节点集群建立新分布表。
本步骤中,分布表和新分布表均为激活状态。
图7为本发明实施例提供的分布式数据库建立新分布表的示意图,如图7所示,以将3节点集群的数据库扩容为4节点集群的数据库为例,分布式数据库未扩容时的示意图包括原有的3节点集群Node1、Node2和Node3,新增的节点为Node4(New)。其中,Node1包括分布表T1_n1,Node2包括分布表T1_n2,Node2包括分布表T1_n3,T1_n1、T1_n2和T1_n3为T1分布表,T1分布表为激活状态(Active)。为每个新节点集群建立新分布表,即为Node1新建新分布表T1n_n1,为Node2新建新分布表T1n_n2,为Node3新建新分布表T1n_n3,为Node4新建新分布表T1n_n4。T1分布表和T1n新分布表均为激活状态(Active)。
本发明实施例中,新创建的T1n新分布表用于存储T1分布表在扩容后分布规则的数据,在每个节点上具有一个主分片,分别是T1n_n1、T1n_n2、T1n_n3和T1n_n4。其中,T1n新分布表用于扩容进程向其中写入重分布后的数据。T1分布表用于分布式数据库的业务系统正常使用。
步骤1026、分布表和/或新分布表中存储有分布规则,按照分布规则对每个扩容日程对应的数据库进行重分布数据。
本发明实施例中,扩容过程中,分布式数据库系统重新分布数据到新建的分布表中,这其中需要重新分布的数据包括两种类型,静态数据和动态数据,所谓静态数据就是扩容之前表中已有的存量基础数据;动态数据是指表在扩容过程中由业务系统新产生的增量数据,即变更(update)、新增(insert)或删除(delete)的数据。这样,重分布数据包括同时进行的两个过程,重分布静态数据和重分布动态数据。
本发明实施例中,分布规则包括静态分布规则或动态分布规则。
具体地,按照静态分布规则将每个扩容日程对应的数据库中的静态数据写入所述新分布表,以进行重分布静态数据;或者,按照动态分布规则将每个扩容日程对应的数据库中的动态数据写入分布表和/或所述新分布表,以进行重分布动态数据。
本发明实施例中,动态分布规则包括第一分布规则和第二分布规则,具体地,按照第一分布规则将每个扩容日程对应的数据库中的动态数据写入分布表;按照第二分布规则将每个扩容日程对应的数据库中的动态数据写入新分布表,以进行重分布动态数据。
图8为本发明实施例提供的分布式数据库扩容时静态数据的流向的示意图,如图8所示,按照静态分布规则将Node1的T1_n1中的静态数据写入新分布表T1n_n1、T1n_n2、T1n_n3和T1n_n4,将Node2的T1_n2中的静态数据写入新分布表T1n_n1、T1n_n2、T1n_n3和T1n_n4,将Node3的T1_n3中的静态数据写入新分布表T1n_n1、T1n_n2、T1n_n3和T1n_n4,以进行重分布静态数据。
图9为本发明实施例提供的分布式数据库扩容时动态数据的流向的示意图,如图9所示,动态数据包括增量数据,增量数据为分布表T1执行扩容操作过程中由业务系统更新、增加和删除而新产生的数据。按照第一分布规则将增量数据写入分布表T1_n1、T1_n2、T1_n3和T1_n4,按照第二分布规则将增量数据写入新分布表T1n_n1、T1n_n2、T1n_n3和T1n_n4,以进行重分布动态数据。
本发明实施例中,重分布动态数据时,增量数据按T1分布表的分布规则写入T1分布表,同时,增量数据按T1n新分布表的分布规则写入T1n新分布表。
本发明实施例中,增量数据的写入采用分布式事务处理机制能够保证数据的一致性。
步骤1028、删除新分布表并重新命名新分布表,以完成对数据库的扩容。
图10为本发明实施例提供的分布式数据库扩容完成时的示意图,如图10所示,删除分布表T1_n1、T1_n2、T1_n3和T1_n4,并将新分布表T1n_n1、T1n_n2、T1n_n3和T1n_n4分别重命名为分布表T1_n1、T1_n2、T1_n3和T1_n4,以完成对数据库的扩容。
步骤104、接收用户输入的暂停扩容指令。
作为一种可选方案,用户通过点击计算机设备上显示的暂停按钮,输入暂停扩容指令,计算机设备接收用户输入的暂停扩容指令。
步骤106、根据暂停扩容指令,暂停对数据库的扩容。
本步骤中,根据暂停扩容指令,暂停对数据库的扩容,此时数据库的扩容停止。
步骤108、接收用户输入的恢复扩容指令。
作为一种可选方案,用户通过点击计算机设备上显示的恢复按钮,输入恢复扩容指令,计算机设备接收用户输入的恢复扩容指令。
步骤110、根据恢复扩容指令,恢复对数据库的扩容。
本步骤中,根据恢复扩容指令,恢复对数据库的扩容,此时数据库继续进行扩容,直至达到预设的扩容时间。
本发明实施例中,下面以GBase 8a分布式Cluster的3节点集群为例,在集群具备两个用户数据库DB100(有两张表,S1表100万条记录和S2表1万条记录)和DB300(有三张表,DS1表5000万条记录和DS2表50万条记录,DS3表1万条记录)的前提下扩容到4节点集群,由用户定制化扩容任务,有在线业务运行的同时完成在线扩容,具体实现方法:
步骤S1、制定扩容计划。参考扩容计划的配置模板编制扩容任务和时间计划,完成扩容计划配置文件MyExpansion.json,内容如下:
//扩容任务及编排
{
"tasks":[{
"gradation":1,//任务级别,‘1’是表级,‘2’是库级
"database_name":"DB300",
"table_name":"DS1",
"start_time":"2021-4-25 8:06:00",
"stop_time":"2021-4-25 13:06:00",
"period_time":"300"//单位‘分钟’
},{
"gradation":1,//任务级别,‘1’是表级,‘2’是库级
"database_name":"DB300",
"table_name":"DS2",
"start_time":"2021-4-25 14:06:00",
"stop_time":"2021-4-25 14:36:00",
"period_time":"30"//单位‘分钟’
},{
"gradation":1,//任务级别,‘1’是表级,‘2’是库级
"database_name":"DB300",
"table_name":"DS3",
"start_time":"2021-4-25 16:06:00",
"stop_time":"2021-4-25 16:36:00",
"period_time":"30"//单位‘分钟’
},{
"gradation":2,//任务级别,‘1’是表级,‘2’是库级
"database_name":"DB100",
"start_time":"2021-4-26 12:06:00",
"stop_time":"2021-4-26 18:36:00",
"period_time":"210"//单位‘分钟’
}]
}
步骤S2、准备新节点,完成相应组件的部署,向集群中增加新节点:gcadminaddnode 192.168.10.104。
步骤S3、将新节点加入集群以后,创建新的分布信息:gcadmin distributiion分布文件名.xml p2 d1 pattern1,重新规划hash分布,完成集群的拓扑更新。
步骤S4、启动扩容的数据重分布操作:gcadmin start expansion。此时,集群读取步骤S1的扩容配置文件,获取配置任务和任务编排,按任务编排的调度时间执行扩容的数据重分布操作。首先,执行任务一,扩容DS1表,创建DS1表相同表结构的DS1n表,使得DS1表和DS1n表均为激活状态,同时可读可写,启动数据重分布进程,读取DS1表数据,按新的分布规则写入DS1n表中,在这个过程中业务系统对DS1表的增量数据写入DS1表的同时也写入DS1n表中,保持两个表的数据一致性;完成任务一以后,进行执行后续的任务。
步骤S5、暂停扩容的数据重分布操作:gcadmin pause expansion。此时,集群正在执行任务二,接收到pause请求后,写日志文件,暂定任务二以及后续的表扩容操作。
步骤S6、恢复扩容的数据重分布操作:gcadmin resume expansion。此时,集群读取扩容日志文件,继续执行任务二,进行数据重分布操作。
步骤S7、查看扩容的数据重分布操作执行进度:gcadmin show expansion。集群显示当前执行进度如下:
[gbase@localhost]$gcadmin show expansion;
|Expansion INFORMATION|
步骤S8、扩容完成。当查看扩容的数据重分布操作执行进度:gcadmin showexpansion。集群显示“No more task”,当前没有正在执行的扩容任务时,表明本次集群扩容操作已完成,扩容的具体执行过程信息可打开扩容日志文件expansion20210425.log进行查看。
本发明实施例提供的技术方案中,按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容;接收用户输入的暂停扩容指令;根据暂停扩容指令,暂停对数据库的扩容;接收用户输入的恢复扩容指令;根据恢复扩容指令,恢复对数据库的扩容。本发明实施例提供的技术方案中,增加了在线扩容功能,使得扩容操作和数据库操作可以并发执行,增加了扩容任务定制化功能,可以由用户定制化设置,增加了扩容过程控制功能,由原来的单次启动扩容任务改为可以随时暂停扩容任务,然后再随时恢复扩容任务,以实现用户对分布式数据库的在线扩容的定制化和可控性。
本发明实施例提供的技术方案中,以运营商实际场景需求为出发点,对现有分布式数据库扩容方法做了多方面的改进,主要包含以下三点,一是增加扩容任务定制化功能,二是增加了扩容过程控制功能,三是新增加了在线扩容功能。通过本专利对分布式数据库扩容的改进可以很好的解决如下两个场景的问题:
一、分布式数据库系统扩容时,扩容的同时不中断分布式数据库系统的服务,上层业务系统的业务可以在分布式数据库扩容期间正常对外提供服务。
二、分布式数据库系统扩容过程中,如果因扩容操作影响到集群的性能,用户可以随时暂停扩容操作,使得分布式数据库的资源不被扩容操作占用,进而避免扩容操作影响业务系统正常对外提供服务。当业务空闲时,再恢复扩容操作,使得分布式数据库扩容得以继续执行。整个扩容过程由用户可控。
此外,本发明实施例提供的技术方案还可以满足较多其他扩容场景,例如:业务系统每天仅在半夜时间有四个小时的窗口期业务量比较少,可以用于执行扩容。用户可以制定扩容方案,定制化扩容任务,在每天窗口期启动扩容操作,窗口期结束时暂停扩容操作,有窗口期时再恢复扩容操作,可以一直反复操作,直到分布式数据库扩容全部完成。
本发明实施例提供的技术方案中,集群扩容时,支持用户定制化扩容任务,将原来由分布式数据库系统确定的以实例为粒度的一个整体扩容操作任务改为用户定义的小于实例粒度的不同粒度的多个扩容任务,将原来由用户启动扩容操作和分布式数据库系统完成扩容操作后这个不可控的一个扩容时段改为用户定义的多个扩容日程时段,即扩容的粒度和扩容任务的执行时段均可由用户定制化配置,分布式数据库系统通过改进调度和控制管理扩容过程的扩容进程,依据用户定制化的扩容任务和扩容日程执行扩容操作,并且,在执行过程中支持用户暂停、恢复扩容操作。在用户暂停执行扩容时,扩容进程通过日志记录当前执行情况,形成“断点”;在用户恢复执行扩容时,依据日志记录的“断点”为基础继续执行扩容操作。支持用户任何时刻、任意多次暂停扩容操作,同时,也支持用户取消扩容操作和监控扩容操作。
本发明实施例提供的技术方案中,分布式数据库扩容任务高度定制化,任务粒度包括库级任务和表级任务,可由用户根据业务系统的特点自行定制,任务执行时间可由用户定制化编排。
本发明实施例提供的技术方案中,分布式数据库扩容过程可由用户控制,用户可以根据业务系统的需要随时启动、暂停,甚至是取消扩容操作。
本发明实施例提供了一种分布式数据库的在线扩容装置。图11为本发明实施例提供的一种分布式数据库的在线扩容装置的结构示意图,如图11所示,该装置包括:扩容模块11、接收模块12、暂停模块13和恢复模块14。
扩容模块11用于按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容。
接收模块12用于接收用户输入的暂停扩容指令。
暂停模块13用于根据所述暂停扩容指令,暂停对数据库的扩容。
接收模块12还用于接收用户输入的恢复扩容指令。
恢复模块14用于根据所述恢复扩容指令,恢复对数据库的扩容。
本发明实施例中,所述数据库包括一个或多个节点集群,每个所述节点集群包括每个所述节点集群对应的分布表,图12为图11中扩容模块的结构示意图,如图12所示,扩容模块11包括:生成子模块111、建立子模块112、重分布数据子模块113和删除重命名子模块114。
生成子模块111用于按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容,生成多个新节点集群;
建立子模块112用于为每个所述新节点集群建立新分布表;
重分布数据子模块113用于分布表和/或新分布表中存储有分布规则,按照所述分布规则对每个扩容日程对应的数据库进行重分布数据;
删除重命名子模块114用于删除所述新分布表并重新命名所述新分布表,以完成对所述数据库的扩容。
本发明实施例中,分布规则包括静态分布规则,重分布数据子模块113具体用于按照所述静态分布规则将每个扩容日程对应的数据库中的静态数据写入所述新分布表,以进行重分布静态数据。
本发明实施例中,分布规则包括动态分布规则,重分布数据子模块113具体用于按照所述动态分布规则将每个扩容日程对应的数据库中的动态数据写入所述分布表和/或所述新分布表,以进行重分布动态数据。
本发明实施例中,所述动态分布规则包括第一分布规则和第二分布规则,重分布数据子模块113具体用于按照所述第一分布规则将每个扩容日程对应的数据库中的动态数据写入所述分布表;按照所述第二分布规则将每个扩容日程对应的数据库中的动态数据写入所述新分布表,以进行重分布动态数据。
本发明实施例中,所述数据库包括表Table。
本发明实施例中,所述分布表和所述新分布表均为激活状态。
本发明实施例提供的技术方案中,按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容;接收用户输入的暂停扩容指令;根据暂停扩容指令,暂停对数据库的扩容;接收用户输入的恢复扩容指令;根据恢复扩容指令,恢复对数据库的扩容。本发明实施例提供的技术方案中,增加了在线扩容功能,使得扩容操作和数据库操作可以并发执行,增加了扩容任务定制化功能,可以由用户定制化设置,增加了扩容过程控制功能,由原来的单次启动扩容任务改为可以随时暂停扩容任务,然后再随时恢复扩容任务,以实现用户对分布式数据库的在线扩容的定制化和可控性。
本实施例提供的数据处理装置可用于实现上述图4和图5中的分布式数据库的在线扩容方法,具体描述可参见上述分布式数据库的在线扩容方法的实施例,此处不再重复描述。
本发明实施例提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述分布式数据库的在线扩容方法的实施例的各步骤,具体描述可参见上述分布式数据库的在线扩容方法的实施例。
本发明实施例提供了一种计算机设备,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实现上述分布式数据库的在线扩容方法的实施例的各步骤,具体描述可参见上述分布式数据库的在线扩容方法的实施例。
图13为本发明实施例提供的一种计算机设备的示意图。如图13所示,该实施例的计算机设备20包括:处理器21、存储器22以及存储在存储器22中并可在处理器21上运行的计算机程序23,该计算机程序23被处理器21执行时实现实施例中的应用于分布式数据库的在线扩容方法,为避免重复,此处不一一赘述。或者,该计算机程序被处理器21执行时实现实施例中应用于分布式数据库的在线扩容装置中各模型/单元的功能,为避免重复,此处不一一赘述。
计算机设备20包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,图13仅仅是计算机设备20的示例,并不构成对计算机设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器21可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器22可以是计算机设备20的内部存储单元,例如计算机设备20的硬盘或内存。存储器22也可以是计算机设备20的外部存储设备,例如计算机设备20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器22还可以既包括计算机设备20的内部存储单元也包括外部存储设备。存储器22用于存储计算机程序以及计算机设备所需的其他程序和数据。存储器22还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种分布式数据库的在线扩容方法,其特征在于,包括:
按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容;
接收用户输入的暂停扩容指令;
根据所述暂停扩容指令,暂停对数据库的扩容;
接收用户输入的恢复扩容指令;
根据所述恢复扩容指令,恢复对数据库的扩容。
2.根据权利要求1所述的方法,其特征在于,所述数据库包括一个或多个节点集群,每个所述节点集群包括每个所述节点集群对应的分布表,所述按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容,包括:
按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容,生成多个新节点集群;
为每个所述新节点集群建立新分布表;
所述分布表和/或新分布表中存储有分布规则,按照所述分布规则对每个扩容日程对应的数据库进行重分布数据;
删除所述新分布表并重新命名所述新分布表,以完成对所述数据库的扩容。
3.根据权利要求2所述的方法,其特征在于,所述分布规则包括静态分布规则,所述按照所述分布规则对每个扩容日程对应的数据库进行重分布数据,包括:
按照所述静态分布规则将每个扩容日程对应的数据库中的静态数据写入所述新分布表,以进行重分布静态数据。
4.根据权利要求2所述的方法,其特征在于,所述分布规则包括动态分布规则,所述按照所述分布规则对每个扩容日程对应的数据库进行重分布数据,还包括:
按照所述动态分布规则将每个扩容日程对应的数据库中的动态数据写入所述分布表和/或所述新分布表,以进行重分布动态数据。
5.根据权利要求4所述的方法,其特征在于,所述动态分布规则包括第一分布规则和第二分布规则,所述按照所述动态分布规则将每个扩容日程对应的数据库中的动态数据写入所述分布表和/或所述新分布表,以进行重分布数据,包括:
按照所述第一分布规则将每个扩容日程对应的数据库中的动态数据写入所述分布表;
按照所述第二分布规则将每个扩容日程对应的数据库中的动态数据写入所述新分布表,以进行重分布动态数据。
6.根据权利要求1所述的方法,其特征在于,所述数据库包括表Table。
7.根据权利要求2所述的方法,其特征在于,所述分布表和所述新分布表均为激活状态。
8.一种分布式数据库的在线扩容装置,其特征在于,包括:
扩容模块,用于按照设置的一个或多个扩容日程对每个扩容日程对应的数据库进行扩容;
接收模块,用于接收用户输入的暂停扩容指令;
暂停模块,用于根据所述暂停扩容指令,暂停对数据库的扩容;
所述接收模块,还用于接收用户输入的恢复扩容指令;
恢复模块,用于根据所述恢复扩容指令,恢复对数据库的扩容。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至7中任意一项所述的分布式数据库的在线扩容方法。
10.一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,其特征在于,所述程序指令被处理器加载并执行时实现权利要求1至7任意一项所述的分布式数据库的在线扩容方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210236391.1A CN116775595A (zh) | 2022-03-11 | 2022-03-11 | 一种分布式数据库的在线扩容方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210236391.1A CN116775595A (zh) | 2022-03-11 | 2022-03-11 | 一种分布式数据库的在线扩容方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775595A true CN116775595A (zh) | 2023-09-19 |
Family
ID=87995077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210236391.1A Pending CN116775595A (zh) | 2022-03-11 | 2022-03-11 | 一种分布式数据库的在线扩容方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775595A (zh) |
-
2022
- 2022-03-11 CN CN202210236391.1A patent/CN116775595A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11263084B2 (en) | Saving program execution state | |
AU2007289177B2 (en) | Dynamically configuring, allocating and deploying computing systems | |
US7849223B2 (en) | Virtually synchronous Paxos | |
EP3769224B1 (en) | Configurable recovery states | |
CN110209735A (zh) | 数据库备份方法、数据库备份装置、计算设备和存储介质 | |
US10338910B2 (en) | Multi-tenant upgrading | |
CN107273440A (zh) | 计算机应用、数据存储方法、微服务和微数据库 | |
CN106775946A (zh) | 一种虚拟机快速创建方法 | |
EP2603867B1 (en) | Sharing data on mobile devices | |
CN112306993A (zh) | 基于Redis的数据读取方法、装置、设备及可读存储介质 | |
CN112783868A (zh) | 分布式数据库表结构灰度升级方法、装置及系统 | |
CN112860697A (zh) | 分布式数据库表结构变更方法、装置及系统 | |
CN111078119A (zh) | 一种数据重建方法、系统、装置及计算机可读存储介质 | |
CN108933813A (zh) | 在顺序保留数据流消耗期间防止读取器饥饿 | |
CN116775595A (zh) | 一种分布式数据库的在线扩容方法、装置和计算机设备 | |
US10564894B2 (en) | Free space pass-through | |
Truyen et al. | Flexible migration in blue-green deployments within a fixed cost | |
CN113271323A (zh) | 集群扩容方法、装置和存储介质 | |
CN113868679B (zh) | 一种集群的加密方法及装置 | |
US11675678B1 (en) | Managing storage domains, service tiers, and failed service tiers | |
US20240028484A1 (en) | Automatic discovery of application resources for application backup in a container orchestration platform | |
US11663096B1 (en) | Managing storage domains, service tiers and failed storage domain | |
US20240054000A1 (en) | Container scheduling and deployment method and apparatus, and domain controller system | |
KR20240025213A (ko) | 다중과 단일 테넌트 SaaS 서비스 관리 | |
CN112463384A (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 |