一种数据库扩缩容方法、装置及计算机可读存储介质与流程



1.本发明属于数据库领域,具体涉及一种数据库扩缩容方法、装置及计算机可读存储介质。


背景技术:



2.本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.分布式数据库扩缩容问题由来已久,以往的处理方法多为新建数据库集,停止原集业务,进行数据搬迁后,再将业务切至新集。
4.该种方式对应用影响较大,不仅需要中断业务,还要耗费大量的时间和精力进行数据搬迁,业务切换等工作。因此,一种能够对应用操作友好、透明无感的扩缩容方法显得尤为迫切和重要。


技术实现要素:



5.针对上述现有技术中存在的问题,提出了一种数据库扩缩容方法、装置及计算机可读存储介质,利用这种方法、装置及计算机可读存储介质,能够解决上述问题。
6.本发明提供了以下方案。
7.第一方面,提出一种数据库扩缩容方法,数据库包括一个或多个代理以及与代理连接的多个数据节点,方法包括:sql语句中设置数据库表的分库字段,根据分库字段将数据均匀划分到设定数量的数据槽中,并计算数据槽对应的原始分库结果;在数据库集发生扩缩容的情况下,根据更新后的节点数目计算数据槽对应的更新分库结果;根据原始分库结果和更新分库结果,确定数据槽的搬迁路由方向;根据数据槽的搬迁路由方向,从原始节点至更新节点进行数据搬迁。
8.在一种实施方式中,在数据槽进行数据搬迁之前,使用原始分库规则进行节点路由;在数据槽进行数据搬迁的过程中,使用原始分库规则和更新分库规则的共存规则进行节点路由;在数据槽进行数据搬迁结束后,采用更新分库规则进行节点路由。
9.在一种实施方式中,在数据搬迁的过程中,还包括:针对插入(insert)语句,使用更新分库规则进行节点路由。
10.在一种实施方式中,在数据搬迁的过程中,还包括:针对更新(update)语句或者选择(select)语句或者删除(delete)语句,分别使用原始分库规则和更新分库规则算出两种分库结果,在两种分库结果对应的原始节点和更新节点都执行语句,并由代理合并原始节点和更新节点执行语句的应答结果。
11.在一种实施方式中,数据搬迁包括一个或多个搬移任务,每个搬迁任务用于搬迁一个或者多个数据槽,搬移任务包括:连接代理并开启会话,将会话的事务隔离级别设置为读提交(read-committed),并将会话设置为自动提交;开启事务,从原始节点读取待搬迁的数据槽,通过代理将数据槽按照更新分库规则插入更新节点;如插入更新节点的新增数据
槽存在主键重复的情况,则删除更新节点的数据槽,并执行重新插入;如插入更新节点的新增数据槽正常,则删除原始节点的待搬迁的数据槽:事务成功提交或失败回滚。
12.在一种实施方式中,搬迁任务包括:从原始节点读取待搬迁的数据槽时,使用读写锁语法将待搬迁的数据槽锁住。
13.在一种实施方式中,包括:提升数据槽的数量。
14.在一种实施方式中,还包括:代理计算分库字段的哈希值,根据分库字段的哈希值对数据槽的数量进行取模,以得到每个数据槽的编号;以及,根据数据槽的编号对数据节点数量进行取模,得到每个数据槽对应的路由数据节点。
15.第二方面,提供一种数据库扩缩容装置,装置包括:原始分库模块,在sql语句中设置数据库表的分库字段,根据分库字段将数据均匀划分到设定数量的数据槽中,并计算数据槽对应的原始分库结果;更新分库模块,用于在数据库集发生扩缩容的情况下,根据更新后的节点数目计算数据槽对应的更新分库结果;数据搬迁模块,用于根据原始分库结果和更新分库结果,确定数据槽的搬迁路由方向;根据数据槽的搬迁路由方向,从原始节点至更新节点进行数据搬迁。
16.第三方面,提供一种数据库扩缩容装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:如第一方面的方法。
17.第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储有程序,当程序被多核处理器执行时,使得多核处理器执行如第一方面的方法。
18.上述实施方式的优点之一,提供了一种可以原地扩缩容的实施方法,且可以在线实施,无需应用停机,不影响应用交易,并简化了运维实施步骤。
19.本发明的其他优点将配合以下的说明和附图进行更详细的解说。
20.应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
21.通过阅读下文的示例性实施方式的详细描述,本领域普通技术人员将明白本文的优点和益处以及其他优点和益处。附图仅用于示出示例性实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
22.图1为根据本发明一实施方式的数据库扩缩容设备的结构示意图
23.图2为根据本发明一实施方式的数据库扩缩容方法的流程示意图;
24.图3为根据本发明一实施方式的数据库的结构示意图;
25.图4为根据本发明又一实施方式数据库扩缩容装置的结构示意图。
26.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
27.下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实
施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
28.在本技术实施方式的描述中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
29.除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
30.术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术实施方式的描述中,除非另有说明,“多个”的含义是两个或两个以上。
31.本技术中的所有代码都是示例性的,本领域技术人员根据所使用的编程语言,具体的需求和个人习惯等因素会在不脱离本技术的思想的条件下想到各种变型。
32.首先参见图1,其示意性示出了其中可以使用根据本公开的示例性实现方式的环境100的示意图。
33.图1示出了根据本公开的实施方式的计算设备100的示例的示意图。需要说明的是,图1即可为数据库扩缩容方法的硬件运行环境的结构示意图。本发明实施方式基于数据库扩缩容设备可以是pc,便携计算机等终端设备。
34.如图1所示,该数据库扩缩容设备可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
35.本领域技术人员可以理解,图1中示出的数据库扩缩容设备结构并不构成对数据库扩缩容设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
36.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据库扩缩容程序。其中,操作系统是管理和控制数据库扩缩容设备硬件和软件资源的程序,支持数据库扩缩容程序以及其它软件或程序的运行。
37.在图1所示的数据库扩缩容设备中,用户接口1003主要用于接收第一终端、第二终端和监管终端发送的请求、数据等;网络接口1004主要用于连接后台服务器与后台服务器进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据库扩缩容程序,并执行以下操作:
38.在sql语句中设置数据库表的分库字段,根据分库字段将数据均匀划分到设定数量的数据槽(slot)中,并计算数据槽(slot)对应的原始分库结果;在数据库集发生扩缩容的情况下,根据更新后的节点数目计算数据槽(slot)对应的更新分库结果;根据原始分
库结果和更新分库结果,确定数据槽(slot)的搬迁路由方向;根据数据槽(slot)的搬迁路由方向,从原始节点至更新节点进行数据搬迁。
39.由此,无需应用停机,不影响应用交易,就可以实现数据库扩缩容,简化了运维实施步骤。
40.图2示出了根据本公开的实施方式的用于执行数据库扩缩容方法的流程图。该方法例如可以由如图1所示的计算设备100来执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
41.步骤210,在sql语句中设置数据库表的分库字段,根据分库字段将数据均匀划分到设定数量的数据槽(slot)中,并计算数据槽(slot)对应的原始分库结果;该原始分库结果也即按照原始分库规则对数据槽(slot)进行分库的结果。
42.步骤220,在数据库集发生扩缩容的情况下,根据更新后的节点数目计算数据槽(slot)对应的更新分库结果;该更新分库结果也即按照更新分库规则对数据槽(slot)进行分库的结果。
43.步骤230,根据原始分库结果和更新分库结果,确定数据槽(slot)的搬迁路由方向;
44.步骤240,根据数据槽(slot)的搬迁路由方向,从原始节点至更新节点进行数据搬迁。
45.参考图3,数据库包括一个或多个代理以及与代理连接的多个数据节点,以下结合图3和具体示例对本技术实施例机进行详细阐述。例如,1)当需要将数据节点由2节点扩容到4节点时。2)原始分库规则下:1024个slot交替路由到节点1和节点2,如:编号为0的slot路由到节点1,编号为1的slot路由到节点2,编号为2的slot路由到节点1,编号为3的slot路由到节点2,以此类推。3)更新分库规则下:1024个slot交替路由到节点1、节点2、节点3和节点4,如:编号为0的slot路由到节点1,编号为1的slot路由到节点2,编号为2的slot路由到节点3,编号为3的slot路由到节点4,以此类推。4)搬迁路由:可看到编号为0和1的slot路由规则无变化,编号为2和3的slot需要搬迁,slot 2由节点1搬迁到节点3,slot 3由节点2搬迁到节点4。因此,在该场景下,全部1024个slot大约有一半需要搬迁。
46.slot旧分库规则(2分片)新分库规则(4分片)数据搬迁方向0dn 1dn 1无1dn 2dn 2无2dn 1dn 3dn1-》dn33dn 2dn 4dn2-》dn44dn 1dn 1无
……………………
1023dn 2dn 4dn2-》dn4
47.在一种实施方式中,在步骤210中,可以由代理计算分库字段的哈希值,根据分库字段的哈希值对数据槽(slot)的数量进行取模,以得到每个数据槽(slot)的编号;步骤220,在数据库集发生扩缩容的情况下,根据更新后的节点数目计算数据槽(slot)对应的更新分库结果。
48.在一种实施方式中,在步骤210或步骤220中,可以根据数据槽(slot)的编号对数
据节点数量进行取模,得到每个数据槽(slot)应路由到的数据节点。
49.在一种实施方式中,为了维持在数据搬迁之前、之时及之后,数据库的运行正确,可以在数据槽(slot)进行数据搬迁之前,使用原始分库规则进行节点路由;在数据槽(slot)进行数据搬迁的过程中,使用原始分库规则和更新分库规则的共存规则进行节点路由;在数据槽(slot)进行数据搬迁结束后,采用更新分库规则进行节点路由。
50.在一种实施方式中,在搬迁过程中新旧规则会共存,直至搬迁结束,为了保证sql语句在两种分库规则并存时执行结果的正确性,可以对语句路由进行适配修改,具体可以包括:在数据搬迁的过程中,针对插入(insert)语句,使用更新分库规则进行节点路由。即所有新增数据都按照更新分库规则进行写入。
51.在一种实施方式中,还可以包括,在数据搬迁的过程中,针对更新(update)语句或者选择(select)语句或者删除(delete)语句,分别使用原始分库规则和更新分库规则算出两种分库结果,在两种分库结果对应的原始节点和更新节点都执行语句,并由代理合并原始节点和更新节点执行语句的应答结果。
52.例如,如某update语句(update xx set a=1where shard_key=xxx)根据原始分库规则计算出需要去节点1执行,而根据更新分库规则计算出需要去节点3执行,代理会求出二者的并集,制定去节点1、3都执行的执行计划。假设要更新的数据还未进行搬迁,依旧存储在节点1,则节点1的update执行成功,命中一行数据。与此同时,节点3的update执行成功,但未命中数据,代理合并二者的应答结果并返回应用,命中1行数据。
53.由此,可以在搬迁过程中保证sql语句在新老分库规则共存时执行结果正确。
54.在一种实施方式中,数据搬迁包括一个或多个搬移任务,每个搬迁任务用于搬迁一个或者多个数据槽(slot),搬移任务包括:
55.(1)连接代理并开启会话;
56.(2)将会话的事务隔离级别设置为读提交(read-committed);
57.(3)将会话设置为自动提交(set autocommit=1);
58.(4)开启事务;
59.(5)从原始节点读取待搬迁的数据槽(slot);例如,可以采用如下语句:
60./*+drdb:datanode=xxx*/select*from xx where`slot_id`in(xx)lock in share mode;//注释语法可指定数据节点名
61.(6)通过代理将数据槽(slot)按照更新分库规则插入更新节点;例如,可以采用如下语句:insert into xx(col1,col2..)values(xx,xx);
62.(7)可选地,如插入更新节点的新增数据槽(slot)存在主键重复的情况,则删除更新节点的数据槽(slot),并执行重新插入;例如,可以采用如下语句:
63./*+drdb:datanode=xxx*/delete from xx where

64.insert into xx(col1,col2..)values(xx,xx);
65.上述步骤是为了解决新增数据按照更新分库规则插入更新节点后,与未搬迁的旧数据实质上存在主键冲突的情况。通过该步骤能对数据进行补偿修正,把主键冲突的新增数据删除,保留旧数据。
66.(8)可选地,如插入更新节点的新增数据槽(slot)正常,则删除原始节点的待搬迁的数据槽(slot):例如,可以采用如下语句:
67./*+drdb:datanode=xxx*/delete from xx where

68.(9)事务成功提交或失败回滚。
69.在一种实施方式中,为了保证应用的sql语句执行结果不受搬迁影响,可以从原始节点读取待搬迁的数据槽(slot)时,使用读写锁语法将待搬迁的数据槽(slot)锁住。具体地,在上述的搬迁任务中,去原始节点读取数据槽(slot)中的数据时,使用读写锁语法(lock in share mode),将这部分要搬迁的数据锁住,这样其他会话执行更改、删除(update、delete)这条数据时就会停止响应,从而保证数据一致性。
70.在一种实施方式中,为了尽量减少加锁的影响,可将数据槽(slot)的数目提升,这样每次锁住的数据就会更少。
71.通过采用本技术实施例,可以显著提高扩缩容的便捷度,用户只需在云管平台上(如dbaas、公有云平台)选择要增加或减少的节点数,平台即可开始执行扩缩容步骤,期间无需运维或者应用开发人员进行干预。并且在扩缩容期间,应用的正常交易无需中断,且sql语句执行正确性不受影响。此外,扩缩容方式为原地升级,无需额外新建集。并且这种方案支持定时、分段扩缩容,对数据量较大的系统,可分多次进行数据搬迁,指定执行时间,避开交易高峰期。
72.需要说明的是,本实施方式中未作详细说明的步骤可以参考图1所示实施方式中相关步骤中的描述,此处不再赘述。
73.在本说明书的描述中,参考术语“一些可能的实施方式”、“一些实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施方式或示例以及不同实施方式或示例的特征进行结合和组合。
74.关于本技术实施方式的方法流程图,将某些操作描述为以一定顺序执行的不同的步骤。这样的流程图属于说明性的而非限制性的。可以将在本文中所描述的某些步骤分组在一起并且在单个操作中执行、可以将某些步骤分割成多个子步骤、并且可以以不同于在本文中所示出的顺序来执行某些步骤。可以由任何电路结构和/或有形机制(例如,由在计算机设备上运行的软件、硬件(例如,处理器或芯片实现的逻辑功能)等、和/或其任何组合)以任何方式来实现在流程图中所示出的各个步骤。
75.基于相同的技术构思,本发明实施方式还提供一种数据库扩缩容装置,用于执行上述任一实施方式所提供的数据库扩缩容方法。图4为本发明实施方式提供的一种数据库扩缩容装置结构示意图。
76.如图4所示,装置4包括:
77.原始分库模块410,在sql语句中设置数据库表的分库字段,根据分库字段将数据均匀划分到设定数量的数据槽(slot)中,并计算数据槽(slot)对应的原始分库结果;
78.更新分库模块420,用于在数据库集发生扩缩容的情况下,根据更新后的节点数目计算数据槽(slot)对应的更新分库结果;
79.数据搬迁模块430,用于根据原始分库结果和更新分库结果,确定数据槽(slot)的
搬迁路由方向;根据数据槽(slot)的搬迁路由方向,从原始节点至更新节点进行数据搬迁。
80.需要说明的是,本技术实施方式中的装置可以实现前述方法的实施方式的各个过程,并达到相同的效果和功能,这里不再赘述。
81.根据本技术的一些实施方式,提供了数据库扩缩容方法的非易失性计算机存储介质,其上存储有计算机可执行指令,该计算机可执行指令设置为在由处理器运行时执行:上述实施方式的方法。
82.本技术中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,对于装置、设备和计算机可读存储介质实施方式而言,由于其基本相似于方法实施方式,所以其描述进行了简化,相关之处可参见方法实施方式的部分说明即可。
83.本技术实施方式提供的装置、设备和计算机可读存储介质与方法是一一对应的,因此,装置、设备和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和计算机可读存储介质的有益技术效果。
84.本领域内的技术人员应明白,本发明的实施方式可提供为方法、装置(设备或系统)、或计算机可读存储介质。因此,本发明可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机可读存储介质的形式。
85.本发明是参照根据本发明实施方式的方法、装置(设备或系统)、和计算机可读存储介质的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
86.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
87.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
88.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
89.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
90.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
91.虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

技术特征:


1.一种数据库扩缩容方法,其特征在于,所述数据库包括一个或多个代理以及与所述代理连接的多个数据节点,所述方法包括:在sql语句中设置数据库表的分库字段,根据所述分库字段将数据均匀划分到设定数量的数据槽中,并计算所述数据槽对应的原始分库结果;在数据库集发生扩缩容的情况下,根据更新后的节点数目计算所述数据槽对应的更新分库结果;根据所述原始分库结果和所述更新分库结果,确定所述数据槽的搬迁路由方向;根据所述数据槽的所述搬迁路由方向,从原始节点至更新节点进行数据搬迁。2.根据权利要求1所述的方法,其特征在于,在所述数据槽进行数据搬迁之前,使用原始分库规则进行节点路由;在所述数据槽进行数据搬迁的过程中,使用原始分库规则和更新分库规则的共存规则进行节点路由;在所述数据槽进行数据搬迁结束后,采用所述更新分库规则进行节点路由。3.根据权利要求1所述的方法,其特征在于,在所述数据搬迁的过程中,还包括:针对插入(insert)语句,使用所述更新分库规则进行节点路由。4.根据权利要求1所述的方法,其特征在于,在所述数据搬迁的过程中,还包括:针对更新(update)语句或者选择(select)语句或者删除(delete)语句,分别使用所述原始分库规则和所述更新分库规则算出两种分库结果,在两种分库结果对应的原始节点和更新节点都执行语句,并由代理合并所述原始节点和所述更新节点执行语句的应答结果。5.根据权利要求1所述的方法,其特征在于,所述数据搬迁包括一个或多个搬移任务,每个搬迁任务用于搬迁一个或者多个数据槽,所述搬移任务包括:连接代理并开启会话,将所述会话的事务隔离级别设置为读提交(read-committed),并将所述会话设置为自动提交;开启事务,从所述原始节点读取待搬迁的所述数据槽,通过代理将所述数据槽按照更新分库规则插入所述更新节点;如插入所述更新节点的新增数据槽存在主键重复的情况,则删除所述更新节点的所述数据槽,并执行重新插入;如插入所述更新节点的新增数据槽正常,则删除所述原始节点的待搬迁的所述数据槽:所述事务成功提交或失败回滚。6.根据权利要求1所述的方法,其特征在于,所述搬迁任务包括:从所述原始节点读取待搬迁的所述数据槽时,使用读写锁语法将所述待搬迁的数据槽锁住。7.根据权利要求1所述的方法,其特征在于,包括:提升所述数据槽的数量。8.根据权利要求1所述的方法,其特征在于,还包括:所述代理计算所述分库字段的哈希值,根据所述分库字段的哈希值对所述数据槽的数量进行取模,以得到每个所述数据槽的编号;以及,根据所述数据槽的编号对所述数据节点数量进行取模,得到每个所述数据槽对应的路
由数据节点。9.一种数据库扩缩容装置,其特征在于,所述装置包括:原始分库模块,在sql语句中设置数据库表的分库字段,根据所述分库字段将数据均匀划分到设定数量的数据槽中,并计算所述数据槽对应的原始分库结果;更新分库模块,用于在数据库集发生扩缩容的情况下,根据更新后的节点数目计算所述数据槽对应的更新分库结果;数据搬迁模块,用于根据所述原始分库结果和所述更新分库结果,确定所述数据槽的搬迁路由方向;根据所述数据槽的所述搬迁路由方向,从原始节点至更新节点进行数据搬迁。10.一种数据库扩缩容装置,其特征在于,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:如权利要求1-8中任一项所述的方法。11.一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被多核处理器执行时,使得所述多核处理器执行如权利要求1-8中任一项所述的方法。

技术总结


本发明提供了一种数据库扩缩容方法、装置及计算机可读存储介质,该方法包括:在SQL语句中设置数据库表的分库字段,根据分库字段将数据均匀划分到设定数量的数据槽中,并计算数据槽对应的原始分库结果;在数据库集发生扩缩容的情况下,根据更新后的节点数目计算数据槽对应的更新分库结果;根据原始分库结果和更新分库结果,确定数据槽的搬迁路由方向;根据数据槽的搬迁路由方向,从原始节点至更新节点进行数据搬迁。利用上述方法,能够在线实施数据扩缩容,无需应用停机,不影响应用交易,并简化了运维实施步骤。了运维实施步骤。了运维实施步骤。


技术研发人员:

裴晨光 李永峰 赵智慧 董红亮 苗浩

受保护的技术使用者:

中国银联股份有限公司

技术研发日:

2022.08.26

技术公布日:

2022/12/16

本文发布于:2024-09-22 23:37:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/37729.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   数据   所述   方式
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议