分布式数据库升级时数据迁移方法及系统与流程

文档序号:33098272发布日期:2023-02-01 00:16阅读:17来源:国知局
分布式数据库升级时数据迁移方法及系统与流程

1.本发明涉及分布式数据库技术领域,具体地说是一种分布式数据库升级时数据迁移方法及系统。


背景技术:

2.分布式数据库系统通常在逻辑上是一个统一的整体,在物理上则是分别存储在不同的物理节点上,其主要设计目标是可扩展,强一致和高可靠。数据库中的数据分别在不同的局部数据库中存储、由不同的数据库管理系统进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通信网络连接在一起。shared nothing架构是一种常见的分布式数据库架构。这种架构中的每一个节点都是独立、自给的,而且整个系统中没有单点竞争。每个节点都有自己私有的cpu、内存、硬盘等,不存在共享资源,各处理单元之间通过协议通信,并行处理和扩展能力更好。各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。
3.为了达到分布式数据库的特性,每个节点都需要知晓整个集群内的运行信息,包括集群整体配置信息、节点配置信息、节点健康情况、存储使用情况、描述存储数据位置的数据信息、节点网络连接情况等,为了从任何节点访问集群中的所有数据,分布式数据库按照整体排序映射来存储键值对。该键空间描述集群中数据的所有信息及其位置,其为连续的键空间块,以便每个键值总是能在单个范围内找到。整体排序的映射包括:1)系统数据,其包括描述集群中数据位置的位置。2)用户数据,其存储集群的用户数据。系统数据通常在一个版本内是不会发生变化的,但是在不同的版本中,由于数据库的业务规则发生变化或者为了在新版本中支持新的特性功能,系统数据会发生变化,如果在版本升级过程中没有通用的数据迁移的方案,那么需要用户在版本升级完成后手动修改来完成数据的迁移,如果新版本升级内容比较多时,用户的修改工作量非常大,升级变得非常困难且容易出错。
4.故如何达到版本升级后节点既能兼容旧数据,又能支持新数据的目的目前亟待解决的技术问题。


技术实现要素:

5.本发明的技术任务是提供一种分布式数据库升级时数据迁移方法及系统,来解决如何达到版本升级后节点既能兼容旧数据,又能支持新数据的目的的问题。
6.本发明的技术任务是按以下方式实现的,一种分布式数据库升级时数据迁移方法,该方法具体如下:
7.(一)、版本升级开始;
8.(二)、校验集群是否满足版本升级条件:
9.①
、若是,则执行步骤(三);
10.②
、若否,则跳转至步骤(一);
11.(三)、迁移协调器获取租约;
12.(四)、节点顺序执行数据迁移列表,并记录执行记录;
13.(五)、判断是否有迁移失败记录:
14.①
、若是,则跳转至步骤(四);
15.②
、若否,则执行步骤(六);
16.(六)、集群版本升级结束。
17.作为优选,所述集群的升级条件为集群节点当前版本和待升级版本是否连续,即集群节点的当前版本应为即将升级版本的前一版本,不支持跨两个及两个以上的版本进行数据迁移;
18.若跨两个及两个以上的版本进行数据迁移,则会出现数据缺少的情况。
19.更优地,确认待升级集群状态是否正常具体如下:
20.检查所有节点状态是否正常:
21.若有节点的状态为下线或存疑,则修复集群,即重启对应节点使对应节点恢复或者使用手动下线命令使对应节点退出集群,以免影响正常升级;
22.检查所有数据副本状态是否正常:
23.若有副本状态为不可用副本状态、正在分裂的副本状态或者正在合并的副本状态,则更新副本状态;
24.检查所有节点当前运行的版本是否相同:
25.若有节点的版本过低,则单独将对应节点的版本升级到和其他节点版本相同;
26.检查节点所在机器的硬件资源是否有设定阈值范围内的余量:
27.若有节点所在机器的硬件资源的余量不足,则增加硬件资源;其中,机器的硬件资源包括cpu、内存以及存储资源。
28.更优地,节点升级版本时,处理数据迁移由一个迁移列表完成,由节点在升级启动时顺序读取执行;
29.迁移列表由一系列的元素组成,所有元素的结构完全相同,保证迁移动作能够一次执行完成;
30.迁移列表是一个按添加时间排序的有序列表。
31.更优地,每个元素由迁移名称和工作函数组成;
32.其中,迁移名称表示该迁移动作处理的业务名称;
33.工作函数用于实现该业务所要完成的具体工作,该业务所要完成的具体工作包括新增一张系统表或者在任一张系统表中新增一个字段;每个工作函数均是幂等函数,即每次执行工作函数的结果均相同,故当工作函数偶发执行失败时,则能够通过重试机制完成迁移。
34.更优地,当一个节点启动时,检查所有已知的迁移是否已经运行完成,使用一条存储条目记录已完成的工作量,该存储条目的主键定义为/systemmigration;
35.若还有迁移条目没有运行或者运行失败,则通过迁移协调器运行对应迁移条目。
36.更优地,所述迁移协调器具体如下:
37.获取并维护对应迁移的租约,该租约用于确保集群内同一时间只有一个节点运行迁移进程;
38.若集群中其他节点同时启动并运行迁移程序,则该节点的迁移进程将被阻塞直到
租约被释放或者当前执行的迁移发生失败;
39.对于每个失败的迁移,迁移协调器将完成记录写入存储条目/systemmigration,待之后进行重试。
40.一种分布式数据库升级时数据迁移系统,该系统包括,
41.校验模块,用于校验集群是否满足版本升级条件;
42.获取模块,用于通过迁移协调器获取租约;
43.执行模块,用于通过节点顺序执行数据迁移列表,并记录执行记录;
44.判断模块,用于判断是否有迁移失败记录;
45.作为优选,所述校验模块包括,
46.节点状态检查子模块,用于检查所有节点状态是否正常:
47.若有节点的状态为下线或存疑,则修复集群,即重启对应节点使对应节点恢复或者使用手动下线命令使对应节点退出集群,以免影响正常升级;
48.副本状态检查子模块,用于检查所有数据副本状态是否正常:
49.若有副本状态为不可用副本状态、正在分裂的副本状态或者正在合并的副本状态,则更新副本状态;
50.版本检查子模块,用于检查所有节点当前运行的版本是否相同:
51.若有节点的版本过低,则单独将对应节点的版本升级到和其他节点版本相同;
52.硬件资源检查子模块,用于检查节点所在机器的硬件资源是否有设定阈值范围内的余量:
53.若有节点所在机器的硬件资源的余量不足,则增加硬件资源;其中,机器的硬件资源包括cpu、内存以及存储资源。
54.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如上述的分布式数据库升级时数据迁移方法。
55.本发明的分布式数据库升级时数据迁移方法及系统具有以下优点:
56.(一)在shared nothing架构的分布式数据库集群内各个节点的地位完全对等,每个节点都可以作为接入节点暴露给用户。系统通过系统表存储诸如节点信息,数据表信息等系统信息,节点在解析用户输入的命令时使用系统表提供的信息去计算;数据库节点在版本升级时,系统表数据很可能发生变化,本发明可以根据数据变化的规则定制自己的数据迁移方式,达到版本升级后节点既兼容旧数据,又支持新数据的目的;
57.(二)本发明实现了分布式数据库升级版本时自动处理系统数据的迁移,无需用户手工操作,适用于处理以下场景:
58.①
新增系统表;
59.②
系统表新增字段;
60.③
系统表增加用户;
61.④
系统表用户增加权限;
62.(三)本发明使得分布式数据库在版本升级时可以自动处理诸如新增系统表,为系统表新增用户等系统数据迁移工作,并且可以在迁移发生失败时自动重试,无需用户手动干预整个迁移过程,大大提高了版本升级的易用和快捷;
63.(四)本发明过迁移列表自动执行版本升级时的系统数据迁移;
64.(五)本发明通过迁移协调器记录已完成的迁移记录和发生失败的迁移记录,用来监控迁移的状态和重试失败记录。
附图说明
65.下面结合附图对本发明进一步说明。
66.附图1为分布式数据库升级时数据迁移方法的流程框图。
具体实施方式
67.参照说明书附图和具体实施例对本发明的分布式数据库升级时数据迁移方法及系统作以下详细地说明。
68.实施例1:
69.如附图1所示,本实施例提供了一种分布式数据库升级时数据迁移方法,该方法具体如下:
70.s1、版本升级开始;
71.s2、校验集群是否满足版本升级条件:判断集群节点当前版本和待升级版本是否连续:
72.①
、若是,则执行步骤s3;
73.②
、若否,则将低版本集群节点单独升级到与其他集群节点相同的版本,并跳转到步骤s1;
74.s3、确定待升级集群状态是否正常:
75.①
、若是,则执行步骤s4;
76.②
、若否,则修复集群,并跳转到步骤s1;
77.s4、判断硬件资源是否满足版本升级要求:
78.①
、若是,则执行步骤s5;
79.②
、若否,则增加硬件资源,并跳转到步骤s1;
80.s5、迁移协调器获取租约;
81.s6、节点顺序执行数据迁移列表,并记录执行记录;
82.s7、判断是否有失败记录:
83.①
、若是,则跳转至步骤s6;
84.②
、若否,则执行步骤s8;
85.s8、集群版本升级结束。
86.本实施例中的集群的升级条件为集群节点当前版本和待升级版本是否连续,即集群节点的当前版本应为即将升级版本的前一版本,不支持跨两个及两个以上的版本进行数据迁移;
87.若跨两个及两个以上的版本进行数据迁移,则会出现数据缺少的情况。
88.本实施例步骤s2中的确认待升级集群状态是否正常具体如下:
89.检查所有节点状态是否正常:
90.若有节点的状态为下线或存疑,则修复集群,即重启对应节点使对应节点恢复或者使用手动下线命令使对应节点退出集群,以免影响正常升级;
91.检查所有数据副本状态是否正常:
92.若有副本状态为不可用副本状态、正在分裂的副本状态或者正在合并的副本状态,则更新副本状态;
93.检查所有节点当前运行的版本是否相同:
94.若有节点的版本过低,则单独将对应节点的版本升级到和其他节点版本相同;
95.检查节点所在机器的硬件资源是否有设定阈值范围内的余量:
96.若有节点所在机器的硬件资源的余量不足,则增加硬件资源;其中,机器的硬件资源包括cpu、内存以及存储资源。
97.本实施例中,节点升级版本时,处理数据迁移由一个迁移列表完成,由节点在升级启动时顺序读取执行;
98.迁移列表由一系列的元素组成,所有元素的结构完全相同,保证迁移动作能够一次执行完成;
99.迁移列表是一个按添加时间排序的有序列表。
100.本实施例中,每个元素由迁移名称和工作函数组成;
101.其中,迁移名称表示该迁移动作处理的业务名称;
102.工作函数用于实现该业务所要完成的具体工作,该业务所要完成的具体工作包括新增一张系统表或者在任一张系统表中新增一个字段;每个工作函数均是幂等函数,即每次执行工作函数的结果均相同,故当工作函数偶发执行失败时,则能够通过重试机制完成迁移。
103.本实施例中,当一个节点启动时,检查所有已知的迁移是否已经运行完成,使用一条存储条目记录已完成的工作量,该存储条目的主键定义为/systemmigration;
104.若还有迁移条目没有运行或者运行失败,则通过迁移协调器运行对应迁移条目。
105.本实施例步骤s5中的迁移协调器具体如下:
106.获取并维护对应迁移的租约,该租约用于确保集群内同一时间只有一个节点运行迁移进程;
107.若集群中其他节点同时启动并运行迁移程序,则该节点的迁移进程将被阻塞直到租约被释放或者当前执行的迁移发生失败;
108.对于每个失败的迁移,迁移协调器将完成记录写入存储条目/systemmigration,待之后进行重试。
109.实施例2:
110.本实施例提供了一种分布式数据库升级时数据迁移系统,该系统包括,
111.校验模块,用于校验集群是否满足版本升级条件;
112.获取模块,用于通过迁移协调器获取租约;
113.执行模块,用于通过节点顺序执行数据迁移列表,并记录执行记录;
114.判断模块,用于判断是否有迁移失败记录;
115.本实施例中的校验模块包括,
116.节点状态检查子模块,用于检查所有节点状态是否正常:
117.若有节点的状态为下线或存疑,则修复集群,即重启对应节点使对应节点恢复或者使用手动下线命令使对应节点退出集群,以免影响正常升级;
118.副本状态检查子模块,用于检查所有数据副本状态是否正常:
119.若有副本状态为不可用副本状态、正在分裂的副本状态或者正在合并的副本状态,则更新副本状态;
120.版本检查子模块,用于检查所有节点当前运行的版本是否相同:
121.若有节点的版本过低,则单独将对应节点的版本升级到和其他节点版本相同;
122.本实施例中,当前节点版本必须是即将升级版本的前一个版本,不支持跨多个版本进行数据迁移,否则可能会出现数据缺失。
123.硬件资源检查子模块,用于检查节点所在机器的硬件资源是否有设定阈值范围内的余量:
124.若有节点所在机器的硬件资源的余量不足,则增加硬件资源;其中,机器的硬件资源包括cpu、内存以及存储资源。
125.本实施例中,节点升级版本时,处理数据迁移由一个迁移列表完成,由节点在升级启动时顺序读取执行。
126.列表由一系列的元素组成,所有元素的结构完全相同,这样可以保证迁移动作可以一次执行完成。
127.每个元素由迁移名称和工作函数组成,迁移名称表示该迁移动作处理的业务名称,工作函数实现该业务所要完成的具体工作,例如是新增一张系统表,或者在某张表中新增一个字段。每个工作函数都必须是幂等的,即每次执行他的结果应该是相同的,这样当函数偶发执行失败时可以通过重试机制去完成迁移。迁移列表是一个有序列表,通常按添加时间排序。
128.本实施例中,当一个节点启动时,它会检查所有已知的迁移是否已经运行完成,可以使用一条存储条目来记录已完成的工作量,该条目的主键可以定义为/systemmigration。如果还有迁移条目没有运行或者运行失败,可以通过迁移协调器运行它们。
129.本实施例中的迁移协调器首先获取并维护此次迁移的租约,该租约用来确保集群内同一时间只有一个节点运行迁移进程,如果其他节点同时启动并运行迁移程序,那么该节点的迁移进程将被阻塞直到租约被释放,或者当前执行的迁移发生失败。然后对于每个失败的迁移,迁移协调器将完成记录写入存储条目/systemmigration,待之后进行重试。
130.实施例3:
131.本实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的分布式数据库升级时数据迁移方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
132.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
133.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-rym、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
134.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
135.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
136.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1