一种数据库数据迁移方法、装置、设备及存储介质与流程

文档序号:33402955发布日期:2023-03-08 19:23阅读:40来源:国知局
一种数据库数据迁移方法、装置、设备及存储介质与流程

1.本技术涉及通信技术领域,尤其涉及一种数据库数据迁移方法、装置、设备及存储介质。


背景技术:

2.当前互联网技术领域中,数据库数据迁移是一个较为受欢迎的研究方向。数据库数据迁移是一种横向存储的方案,用以解决数据库数据存储的瓶颈。
3.然而,传统的数据库数据迁移时,无法将数据库数据定向迁移,因为,传统的数据库数据迁移时只会将数据库数据写入到数据库全部的存储节点,不会区分数据库的存储节点是负载正常的虚拟节点还是负载异常的虚拟节点,因此数据库数据迁移到负载异常的虚拟节点时,负载异常的虚拟节点很难负担查询数据库数据的压力,就会带来很大的网络延迟,导致查询时间过长,查询失败,不利于提高数据的查询效率。


技术实现要素:

4.本技术实施例提供一种数据库数据迁移方法、装置、设备及存储介质,以解决上述无法将数据库数据定向迁移,不利于提高数据的查询效率的技术问题。
5.第一方面,本技术实施例提供了一种数据库数据迁移方法,所述数据库数据迁移方法包括:
6.获取待迁移的数据库数据和用户id,计算所述用户id的hash值;
7.获取目标数据库中虚拟节点的负载状态和存储hash值;
8.判断所述负载状态是否为正常状态;
9.当所述负载状态为正常状态时,判断所述存储hash值是否大于所述用户id的hash值;
10.当所述存储hash值大于所述用户id的hash值时,将所述数据库数据写入所述虚拟节点中,以将所述数据库数据定向迁移到所述目标数据库中。
11.第二方面,本技术实施例还提供了一种数据库数据迁移装置,所述数据库数据迁移装置包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行上述的数据库数据迁移方法。
12.第三方面,本技术实施例还提供了一种设备,所述设备包括如上述的数据库数据迁移装置。
13.第四方面,本技术实施例还提供了一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序被处理器执行时使所述处理器实现上述的数据库数据迁移方法。
14.本技术实施例提供了一种数据库数据迁移方法、装置、设备及存储介质,获取待迁移的数据库数据和用户id,计算所述用户id的hash值;获取目标数据库中虚拟节点的负载状态和存储hash值;判断所述负载状态是否为正常状态;当所述负载状态为正常状态时,判断所述存储hash值是否大于所述用户id的hash值;当所述存储hash值大于所述用户id的
hash值时,将所述数据库数据写入所述虚拟节点中,以将所述数据库数据定向迁移到所述目标数据库中。本技术有益效果在于两方面,一方面,整个过程确保了虚拟节点处于正常状态,因此,待迁移的数据库数据会写入负载正常的虚拟节点中,因此,不会出现查询时间过长,查询失败的情况,因此,有利于提高数据的查询效率;另一方面,当所述存储hash值大于所述用户id的hash值时,才将所述数据库数据写入所述虚拟节点中,这样不会将数据库数据写入到数据库全部的存储节点,因此可以减少数据的冗余,能进一步提高数据的查询效率。
附图说明
15.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
16.图1是本技术实施例提供的数据库数据迁移方法的流程示意图;
17.图2是本技术实施例提供的hash环的样例图;
18.图3是本技术实施例提供的负载均衡流程的示意图;
19.图4是本技术实施例提供的修改数据库的流程示意图;
20.图5是本技术实施例提供的负载均衡流程的另一示意图;
21.图6是本技术实施例提供的中间件的示意性框图;
22.图7为本技术实施例提供的一种数据库数据迁移装置的示意性框图。
具体实施方式
23.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
24.需要说明的是,在本技术中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。
25.在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在部分实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
26.另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
27.附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不
是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
28.请参阅图1,图1是本技术实施例提供的数据库数据迁移方法的流程示意图,该方法可以应用于设备,其中,设备可以是手机、相机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、个人计算机(personal computer,pc)、上网本、个人数字助理(personal digital assistant,pda)中任一者,本技术实施例中不作任何限制。如图1所示,本技术实施例提供的数据库数据迁移方法包括步骤s101至步骤s105。
29.s101,获取待迁移的数据库数据和用户id,计算所述用户id的hash值;
30.其中,s101有两种实现的方式,详述如下:
31.第一种方式,获取当前数据库减少的虚拟节点,将减少的虚拟节点中存放的数据库数据识别为待迁移的数据库数据,获取待迁移的数据库数据和用户id,计算所述用户id的hash值。
32.其中,数据库数据和用户id存在对应关系,在预存的数据表中获取待迁移的数据库数据对应的用户id。
33.第二种方式,读取所述数据库数据的保存期限,在所述保存期限到达前发起数据迁移请求;根据所述数据迁移请求,获取待迁移的数据库数据和所述数据库数据的用户id,计算所述用户id的hash值。
34.其中,保存期限可以为用户自设,也可以系统默认,在此不做限制。
35.其中,获取待迁移的数据库数据和用户id,采用预设的hash函数计算所述用户id的hash值。预设的hash函数为用户自设,也可以系统默认,在此不做限制。
36.s102,获取目标数据库中虚拟节点的负载状态和存储hash值;
37.其中,所述获取目标数据库中虚拟节点的负载状态和存储hash值,具体为:
38.获取所述目标数据库中多个虚拟节点的地址,计算多个所述虚拟节点的存储hash值;
39.将多个所述虚拟节点的存储hash值从小到大或从大到小排序形成一个hash环,在所述hash环中沿顺时针方向或逆时针方向,依次获取所述虚拟节点的负载状态和所述存储hash值。
40.其中,所述获取所述目标数据库中多个虚拟节点的地址,计算多个所述虚拟节点的存储hash值,具体为:
41.获取所述目标数据库中多个虚拟节点的地址,利用一致性hash算法和所述虚拟节点的地址计算所述虚拟节点的存储hash值。
42.s103,判断所述负载状态是否为正常状态;
43.其中,所述判断所述负载状态是否为正常状态,具体为:
44.获取所述负载状态的参数,所述参数包括空间占用率、cpu占用率和内存占用率中的其中一种或其组合;
45.判断所述负载状态的参数是否处于预设范围内;
46.当所述负载状态的参数处于预设范围内时,识别所述负载状态为正常状态,当所述负载状态的参数不处于预设范围内时,识别所述负载状态不为正常状态。
47.s104,当所述负载状态为正常状态时,判断所述存储hash值是否大于所述用户id的hash值;
48.其中,当所述负载状态为正常状态时,说明所述虚拟节点是负载正常的虚拟节点,从而确保了待迁移的数据库数据会写入负载正常的虚拟节点中。
49.s105,当所述存储hash值大于所述用户id的hash值时,将所述数据库数据写入所述虚拟节点中,以将所述数据库数据定向迁移到所述目标数据库中。
50.其中,所述当所述存储hash值大于所述用户id的hash值时,将所述数据库数据写入所述虚拟节点中,以将所述数据库数据定向迁移到所述目标数据库中,具体为:
51.当所述存储hash值大于所述用户id的hash值时,在所述hash环中沿顺时针方向或逆时针方向,将所述数据库数据写入第一个所述存储hash值大于所述用户id的hash值的所述虚拟节点中,以将所述数据库数据定向迁移到所述目标数据库中。
52.本技术实施例的有益效果在于两方面,一方面,整个过程确保了虚拟节点处于正常状态,因此,待迁移的数据库数据会写入负载正常的虚拟节点中,因此,不会出现查询时间过长,查询失败的情况,因此,有利于提高数据的查询效率;另一方面,当所述存储hash值大于所述用户id的hash值时,才将所述数据库数据写入所述虚拟节点中,这样不会将数据库数据写入到数据库全部的存储节点,因此可以减少数据的冗余,能进一步提高数据的查询效率。
53.请参阅图2,图2是本技术实施例提供的hash环的样例图,详述如下:
54.hash环有虚拟节点1、虚拟节点2、虚拟节点3、虚拟节点4、虚拟节点5、虚拟节点n,n为正整数。
55.为便于说明,以hash环有6个虚拟节点为例,详述如下:
56.在hash环中虚拟节点的分布如下:虚拟节点1、虚拟节点2、虚拟节点3、虚拟节点4、虚拟节点5、虚拟节点6。
57.在hash环中沿顺时针方向或沿逆时针方向,获取虚拟节点1、虚拟节点2、虚拟节点3、虚拟节点4、虚拟节点5、虚拟节点6的负载状态和存储hash值都可以。
58.为便于说明,以在hash环沿顺时针方向为例,详述如下:
59.在hash环中沿顺时针方向时,获取虚拟节点1的负载状态和存储hash值;
60.判断虚拟节点1是否为正常状态,当虚拟节点1的负载状态为正常状态时,判断虚拟节点1的存储hash值是否大于用户id的hash值,当虚拟节点1的负载状态为正常状态且存储hash值大于用户id的hash值时,将所述数据库数据写入虚拟节点1中,以将数据库数据定向迁移到目标数据库的虚拟节点1中;
61.当虚拟节点1的负载状态不为正常状态时,获取虚拟节点2的负载状态和存储hash值;判断虚拟节点2是否为正常状态,当虚拟节点2的负载状态为正常状态时,判断虚拟节点2的存储hash值是否大于用户id的hash值,当虚拟节点2的负载状态为正常状态且存储hash值大于用户id的hash值时,将所述数据库数据写入虚拟节点2中,以将数据库数据定向迁移到目标数据库的虚拟节点2中。
62.为便于说明,以在hash环沿逆时针方向为例,详述如下:
63.在hash环中沿逆时针方向时,获取虚拟节点6的负载状态和存储hash值;
64.判断虚拟节点6是否为正常状态,当虚拟节点6的负载状态为正常状态时,判断虚
拟节点6的存储hash值是否大于用户id的hash值,当虚拟节点6的负载状态为正常状态且存储hash值大于用户id的hash值时,将所述数据库数据写入虚拟节点6中,以将数据库数据定向迁移到目标数据库的虚拟节点6中;
65.当虚拟节点6的负载状态不为正常状态时,获取虚拟节点5的负载状态和存储hash值;判断虚拟节点5是否为正常状态,当虚拟节点5的负载状态为正常状态时,判断虚拟节点5的存储hash值是否大于用户id的hash值,当虚拟节点5的负载状态为正常状态且存储hash值大于用户id的hash值时,将所述数据库数据写入虚拟节点5中,以将数据库数据定向迁移到目标数据库的虚拟节点5中。
66.本技术实施例的当存储hash值大于用户id的hash值时,才将数据库数据写入所述虚拟节点中,这样不会将数据库数据写入到数据库全部的存储节点,因此可以减少数据的冗余,能进一步提高数据的查询效率。
67.请参阅图3,图3是本技术实施例提供的负载均衡流程的示意图,在所述获取待迁移的数据库数据和用户id,计算所述用户id的hash值之前或之后,所述方法还包括:
68.s301,获取所述目标数据库新的权重值,判断所述新的权重值是否大于旧的权重值;
69.s302,如果所述新的权重值大于所述旧的权重值,计算所述新的权重值与所述旧的权重值之间的绝对值,将所述绝对值和预设系数之间的乘积值作为节点添加值,根据所述节点添加值给所述目标数据库添加新虚拟节点;
70.s303,如果所述新的权重值小于所述旧的权重值,计算所述新的权重值与所述旧的权重值之间的绝对值,将所述绝对值和预设系数之间的乘积值作为节点删除值,根据所述节点删除值给所述目标数据库删除旧虚拟节点。
71.在本技术实施例中,通过修改目标数据库的权重值,给目标数据库动态添加或减少虚拟节点,灵活调整了目标数据库的数据处理能力,实现了目标数据库和其它数据库之间的负载均衡。
72.请参阅图4,图4是本技术实施例提供的修改数据库的流程示意图,在一些实施例中,在所述获取待迁移的数据库数据和用户id,计算所述用户id的hash值之前或之后,所述方法还包括:
73.s401,在预设的可视化管理界面中获取所述目标数据库的修改操作,识别所述修改操作的内容;
74.s402,当所述修改操作的内容为修改节点名称时,获取新的节点名称,将所述新的节点名称替换掉旧的节点名称,在所述可视化管理界面中显示所述新的节点名称;
75.s403,当所述修改操作的内容为修改端口号时,获取新的端口号,将所述新的端口号替换掉旧的端口号,在所述可视化管理界面中显示所述新的端口号;
76.s404,当所述修改操作的内容为修改权重值时,获取新的权重值,将所述新的权重值替换掉旧的权重值,在所述可视化管理界面中显示所述新的权重值。
77.在本技术实施例中,可视化管理界面简单直观,提高了目标数据库的修改的效率,改善了用户操作体验。
78.请参阅图5,图5是本技术实施例提供的负载均衡流程的另一示意图,详述如下:
79.在可视化管理界面中获取操作类型;
80.识别操作类型;
81.当识别操作类型为修改数据库的权重时,获取所述目标数据库新的权重值;判断所述新的权重值是否大于旧的权重值,是,添加新虚拟节点,否,删除旧虚拟节点。
82.当识别操作类型为添加新数据库时,根据新数据库的mac地址或ip地址、权重、虚拟节点个数计算hash值;将计算的hash值存放在缓存模块。
83.当识别操作类型为删除数据库时,删除已经配置的数据库;删除已经配置的数据库在缓存模块的值。
84.在本技术实施例中,在视化管理界面中获取操作类型,简单直观,便于用户操作,改善了用户操作体验。
85.请参阅图6,图6是本技术实施例提供的中间件的示意性框图,详述如下:
86.中间件主要提供3个模块:负载均衡模块、数据迁移模块、提供给用户操作的可视化管理界面。
87.客户端通过中间件的负载均衡模块修改数据库a、数据库b、数据库c的权重值,给数据库a、数据库b、数据库c动态添加或减少虚拟节点,灵活调整了数据库a、数据库b、数据库c的数据处理能力,实现了数据库a、数据库b、数据库c之间的负载均衡。
88.客户端通过中间件的数据迁移模块,可以将数据库a的数据库数据迁移到
89.数据库b、数据库c,也可以将数据库b的数据库数据迁移到数据库a、数据库c,实现了数据库a、数据库b、数据库c之间的数据库数据迁移。
90.在本技术实施例中,中间件可以缩短应用的开发周期和降低代码侵入,能提高应用的开发质量,减少前期的开发成本和维护费用。
91.请参阅图7,图7为本技术实施例提供的一种数据库数据迁移装置的示意性框图。
92.如图7所示,该数据库数据迁移装置200可以包括处理器211和存储器212,处理器211和存储器212通过总线连接,该总线比如为i2c(inter-integrated circuit)总线。
93.具体地,处理器211可以是微控制单元(micro-controller unit,mcu)、中央处理单元(central processing unit,cpu)或数字信号处理器(digital signal processor,dsp)等。
94.具体地,存储器212可以是flash芯片、只读存储器(rom,read-only memory)磁盘、光盘、u盘或移动硬盘等。存储器212中存储有供处理器211执行的各种计算机程序。
95.其中,所述处理器211用于运行存储在存储器处理器211中的计算机程序,并在执行所述计算机程序时实现如下步骤:
96.获取待迁移的数据库数据和用户id,计算所述用户id的hash值;
97.获取目标数据库中虚拟节点的负载状态和存储hash值;
98.判断所述负载状态是否为正常状态;
99.当所述负载状态为正常状态时,判断所述存储hash值是否大于所述用户id的hash值;
100.当所述存储hash值大于所述用户id的hash值时,将所述数据库数据写入所述虚拟节点中,以将所述数据库数据定向迁移到所述目标数据库中。
101.在一些实施例中,处理器211,用于实现:
102.获取所述目标数据库中多个虚拟节点的地址,计算多个所述虚拟节点的存储hash
值;
103.将多个所述虚拟节点的存储hash值从小到大或从大到小排序形成一个hash环,在所述hash环中沿顺时针方向或逆时针方向,依次获取所述虚拟节点的负载状态和所述存储hash值。
104.在一些实施例中,处理器211,用于实现:
105.获取所述负载状态的参数,所述参数包括空间占用率、cpu占用率和内存占用率中的其中一种或其组合;
106.判断所述负载状态的参数是否处于预设范围内;
107.当所述负载状态的参数处于预设范围内时,识别所述负载状态为正常状态,当所述负载状态的参数不处于预设范围内时,识别所述负载状态不为正常状态。
108.在一些实施例中,处理器211,用于实现:
109.当所述存储hash值大于所述用户id的hash值时,在所述hash环中沿顺时针方向或逆时针方向,将所述数据库数据写入第一个所述存储hash值大于所述用户id的hash值的所述虚拟节点中,以将所述数据库数据定向迁移到所述目标数据库中。
110.在一些实施例中,处理器211,用于实现:
111.获取所述目标数据库新的权重值,判断所述新的权重值是否大于旧的权重值;
112.如果所述新的权重值大于所述旧的权重值,计算所述新的权重值与所述旧的权重值之间的绝对值,将所述绝对值和预设系数之间的乘积值作为节点添加值,根据所述节点添加值给所述目标数据库添加新虚拟节点;
113.如果所述新的权重值小于所述旧的权重值,计算所述新的权重值与所述旧的权重值之间的绝对值,将所述绝对值和预设系数之间的乘积值作为节点删除值,根据所述节点删除值给所述目标数据库删除旧虚拟节点。
114.在一些实施例中,处理器211,用于实现:
115.在预设的可视化管理界面中获取所述目标数据库的修改操作,识别所述修改操作的内容;
116.当所述修改操作的内容为修改节点名称时,获取新的节点名称,将所述新的节点名称替换掉旧的节点名称,在所述可视化管理界面中显示所述新的节点名称;
117.当所述修改操作的内容为修改端口号时,获取新的端口号,将所述新的端口号替换掉旧的端口号,在所述可视化管理界面中显示所述新的端口号;
118.当所述修改操作的内容为修改权重值时,获取新的权重值,将所述新的权重值替换掉旧的权重值,在所述可视化管理界面中显示所述新的权重值。
119.在一些实施例中,处理器211,用于实现:
120.获取所述目标数据库中多个虚拟节点的地址,利用一致性hash算法和所述虚拟节点的地址计算所述虚拟节点的存储hash值。
121.本技术的实施例中还提供一种设备,该设备的类型包括但不限于是手机、相机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、个人计算机(personal computer,pc)、上网本、个人数字助理(personal digital assistant,pda)等,本技术实施例中不作任何限制。
122.其中,该设备包括数据库数据迁移装置,示例性的,该数据库数据迁移装置可以为
上述实施例中所述的数据库数据迁移装置200。设备可以执行本技术实施例所提供的任一种数据库数据迁移方法,因此,可以实现本技术实施例所提供的任一种数据库数据迁移方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
123.本技术的实施例中还提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现上述实施例提供的数据库数据迁移方法的步骤。例如,该计算机程序被处理器加载,可以执行如下步骤:
124.获取待迁移的数据库数据和用户id,计算所述用户id的hash值;
125.获取目标数据库中虚拟节点的负载状态和存储hash值;
126.判断所述负载状态是否为正常状态;
127.当所述负载状态为正常状态时,判断所述存储hash值是否大于所述用户id的hash值;
128.当所述存储hash值大于所述用户id的hash值时,将所述数据库数据写入所述虚拟节点中,以将所述数据库数据定向迁移到所述目标数据库中。
129.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
130.其中,所述存储介质可以是前述实施例的数据库数据迁移装置或设备的内部存储单元,例如数据库数据迁移装置或设备的硬盘或内存。所述存储介质也可以是数据库数据迁移装置或设备的外部存储设备,例如数据库数据迁移装置或设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。
131.由于该存储介质中所存储的计算机程序,可以执行本技术实施例所提供的任一种数据库数据迁移方法,因此,可以实现本技术实施例所提供的任一种数据库数据迁移方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
132.以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1