一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种存储集群容灾管理方法、系统、电子设备和存储介质与流程

2022-11-19 12:25:23 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种存储集群容灾管理方法、系统、电子设备和存储介质。


背景技术:

2.随着数据库技术的不断发展,存储集群因其具有高可用性、高可扩展性等优点,应用愈加广泛。存储集群容灾技术,可以在集群发生灾难时候,自动切换到可用的备用服务器上,进而提高服务的可用性。
3.现有的存储集群容灾管理方法,通常仅适用于一主一从的部署模式,对于一主多从的部署模式涉及较少,即适用性较差;同时在发生灾难时候,即主节点发生故障后,会由于集群重新选主节点,导致主、从节点的时间版本不一致,进而可能出现脑裂现象,影响存储集群的正常运行;此外在灾难恢复后,通常需要人为干预处理故障节点重新加入数据库集群,即无自愈性。


技术实现要素:

4.本发明提供了一种存储集群容灾管理方法、系统、电子设备和存储介质,以解决发生灾难时,存储集群自动恢复;灾难恢复后,故障节点自动作为从节点加入集群,进而实现集群的自愈性。
5.第一方面,本发明实施例提供了一种存储集群容灾管理方法,包括:
6.通过健康检查模块获取其他节点的节点健康状态;
7.根据时间版本模块按照节点健康状态更新节点的时间版本信息;
8.通过自修复模块在节点故障时按照时间版本信息进行故障恢复。
9.第二方面,本发明实施例还提供了一种存储集群容灾管理系统,包括:
10.健康检查模块,用于获取其他节点的节点健康状态;
11.时间版本模块,用于按照节点健康状态更新节点的时间版本信息;
12.自修复模块,用于在节点故障时按照时间版本信息进行故障恢复。
13.第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
14.至少一个处理器;以及
15.与所述至少一个处理器通信连接的存储器;其中,
16.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的存储集群容灾管理方法。
17.第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的存储集群容灾管理方法。
18.本发明实施例的技术方案,通过健康检查模块获取其他节点的节点健康状态;根
据时间版本模块按照节点健康状态更新节点的时间版本信息;通过自修复模块在节点故障时按照时间版本信息进行故障恢复。本发明实施例通过时间版本控制机制,防止了脑裂现象出现,并基于故障自修复机制,实现了存储集群的自动容灾管理。
19.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
20.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是根据本发明实施例一提供的一种存储集群容灾管理方法的流程图;
22.图2是根据本发明实施例二提供的一种存储集群容灾管理方法的流程图;
23.图3是根据本发明实施例二提供的根据有效时间版本信息更新时间版本信息的流程示例图;
24.图4是根据本发明实施例三提供的健康检查模块的流程示例图;
25.图5是根据本发明实施例三提供的时间版本模块初始化流程的流程示例图;
26.图6是根据本发明实施例三提供的加载时间版本流程的流程示例图;
27.图7是根据本发明实施例三提供的更新时间版本信息流程的流程示例图;
28.图8是根据本发明实施例三提供的本节点成为当前集群的从节点流程的流程示例图;
29.图9是根据本发明实施例三提供的时间版本模块线程的流程示例图;
30.图10是根据本发明实施例三提供的创建时间版本流程的流程示例图;
31.图11是根据本发明实施例三提供的自修复模块的流程示例图;
32.图12是根据本发明实施例三提供的修复模块的流程示例图;
33.图13是根据本发明实施例三提供的故障恢复模块的流程示例图;
34.图14是根据本发明实施例三提供的节点管理模块的流程示例图;
35.图15是根据本发明实施例四提供的一种存储集群容灾管理系统的结构示意图;
36.图16是实现本发明实施例的存储集群容灾管理方法的电子设备的结构示意图。
具体实施方式
37.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
38.实施例一
39.图1为本发明实施例一提供了一种存储集群容灾管理方法的流程图,本实施例可适用于发生灾难时,存储集群自动恢复;灾难恢复后,故障节点自动作为从节点加入集群的
情况,该方法可以由本发明实施例提供的存储集群容灾管理系统来执行,由软件算法的方式来实现。如图1所示,本实施例一提供的一种存储集群容灾管理方法,具体包括如下步骤:
40.s110、通过健康检查模块获取其他节点的节点健康状态。
41.在本实施例中,健康检查模块可理解为一个用于管理数据库集群各节点之间互相健康检查的软件模块,具体的,根据采集到的本节点到其他节点的健康信息,并通过健康检查模块获取到其他节点的健康状态。进一步的,健康检查模块还可用于本节点的健康信息管理。存储集群可以理解为用多个节点来代替一个节点完成任务,进而提高处理能力;其次,存储集群还可以做到高可用性,即使某个节点发生故障,不能再继续参与计算,那么集群中的其他节点也可以立即接替故障节点正常工作。存储集群的种类可以包括负载均衡集群系统、高性能集群系统和数据库集群系统。节点可以包括主节点和从节点,其中,主节点(master)负责数据的写入操作,也可进行数据的读取操作,存放着实时数据,属于保证事务一致性的节点;从节点(slave)负责数据的读取操作,不能进行写入操作,数据来自主节点或其他从节点。节点健康状态包括以下至少之一:活跃、空闲、降级。其中,节点为活跃状态表示该节点完全健康,节点为空闲状态表示该节点的数据库服务未启动,节点为空闲状态表示该节点出现故障。
42.具体的,通过健康检查模块获取其他节点的节点健康状态。进一步的,通过健康检查模块可以周期地采集各节点之间的网络健康、管理服务健康、数据库健康等监控信息。其中,网络健康可理解为存储集群内部各节点之间、节点与客户端之间网络畅通,示例性的,当客户端发出数据更新请求后,接受请求的节点可以立刻给客户端返回结果,同时被更新的数据会在接下来的某个时间里被复制传输到集群的其他节点上。管理服务可理解为用于管理存储集群的服务,集群内的每个节点都会有一个服务进程,示例性的,服务进程可以包括检查节点的健康状态、数据的存储管理、接收客户端的数据更新请求等。数据库健康可理解为存储集群的数据库处于正常运行状态,示例性的,可以从某些指标例如:中央处理器(central processing unit,cpu)使用率、内存使用情况、网络使用情况等,来判断数据库是否处于健康状态。
43.在本发明实施例中,通过健康检查模块可以获取其他节点的节点健康状态,并可以周期地采集各节点之间的网络健康、管理服务健康、数据库健康等监控信息,即针对故障有多维度的监控能力。
44.s120、根据时间版本模块按照节点健康状态更新节点的时间版本信息。
45.在本实施例中,时间版本模块可理解为一个用于维护数据库集群各节点同频同调的软件模块,具体的,由存储集群内主节点所在的管理服务产生时间版本,并发布到其他节点,进而维护集群整体时间版本一致。时间版本信息包括以下至少之一:锁信息、故障恢复信息、空闲数据节点信息、数据库服务未启动、数据库主节点信息、时间版本、数据库从节点信息。其中,锁可理解为数据库的一种软件机制,用于控制对数据库中的数据的访问。在出现同时读取和更新数据的多用户环境中,锁能够确保每个事务的一致性和持续性不受到威胁,并且维护数据的完整性。示例性的,锁的类型可以包括共享锁、独占锁、更新锁等。故障恢复信息可以包括事务故障信息、系统故障信息、介质故障等。示例性的,事务故障可以包括运算溢出故障,并发事务死锁故障、违反了某些完整性限制而导致的故障等。系统故障可理解为数据库在运行过程中,由于硬件故障、数据库软件及操作系统的漏洞、突然停电等情
况,导致系统停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的一类故障。介质故障可理解为由于磁头碰撞、磁盘损坏、强磁干扰等情况,使得数据库中的数据部分或全部丢失的一类故障。空闲数据节点信息可理解为存储集群内处于空闲状态的节点的信息。
46.在本发明实施例中,通过时间版本模块可以按照节点健康状态更新节点的时间版本信息,进而维护存储集群内所有节点的时间版本一致,可以有效防止脑裂现象发生。
47.s130、通过自修复模块在节点故障时按照时间版本信息进行故障恢复。
48.在本实施例中,自修复模块可理解一个用于对数据库集群出现的故障进行自动修复的软件模块,具体的,为当灾难发生时,按照时间版本信息自动对发生故障的节点进行修复,并在灾难过去后,自动将修复后的故障节点作为从节点重新加入存储集群。示例性的,节点故障可以包括主节点发生故障和从节点发生故障,例如主从同步异常故障等。
49.在本发明实施例中,通过自修复模块可以当灾难发生时,自动对故障节点按照时间版本信息进行修复,并在灾难过去后,自动将修复后的故障节点作为从节点重新加入存储集群。实现了灾难发生时,存储集群自动恢复;灾难发生后,故障节点自动作为从节点加入集群,即具有自愈能力。
50.本实施例的技术方案,通过健康检查模块获取其他节点的节点健康状态;根据时间版本模块按照节点健康状态更新节点的时间版本信息;通过自修复模块在节点故障时按照时间版本信息进行故障恢复。本发明实施例通过时间版本控制机制,防止了脑裂现象出现,并基于故障自修复机制,实现了存储集群的自动容灾管理。
51.实施例二
52.图2为本发明实施例二提供的一种存储集群容灾管理方法的流程图,基于上述实施方式进一步进行优化与扩展,并可以与上述实施方式中各个可选技术方案结合。如图2所示,本实施例二提供的一种存储集群容灾管理方法,具体包括如下步骤:
53.s210、通过健康检查模块采集节点到其他节点的健康信息。
54.在本实施例中,健康信息包括以下至少之一:因特网包探索器检查结果、安全外壳协议检查结果、通信端口检查结果、心跳检测检查结果、存储集群服务运行检查结果。其中,因特网包探索器(packet internet groper,ping)可理解为一种用于测试网络连接量的程序,示例性的,ping检查结果可以用来确定本节点是否能与目标节点成功交换(发送与接收)数据包,再根据返回的信息,判断网络是否通畅等。安全外壳协议(secure shell,ssh)可理解为是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境,示例性的,ssh检查结果可以用来判断本节点到目标节点的ssh是否成功。通信端口检查结果可以用来判断本节点到目标节点管理服务的端口是否通讯正常。心跳可理解为本节点到目标节点管理服务的服务心跳,示例性的,心跳检测检查结果可以用于确定集群节点之间的连通性,以便节点之间能够了解彼此的状态。存储集群服务运行检查结果可理解为用于检查目标节点的数据库服务是否运行。
55.具体的,通过健康检查模块采集本节点到其他节点(包括本节点)的健康信息,以便接下来根据节点的健康信息确定其健康状态。
56.s220、根据健康检查模块在按照健康信息确定其他节点的节点健康状态并保存。
57.具体的,可以获取各节点在每间隔预设时间内的健康信息记录,并通过该记录确
定各节点的健康状态,即空闲状态、活跃状态、降级状态等。示例性的,可以根据健康检查模块按照每间隔2分钟获取到的健康信息,确定其他节点的节点健康状态并进行保存。
58.s230、根据时间版本模块按照节点存储的本地文件初始化时间版本信息。
59.在本实施例中,节点存储的本地文件可以包括节点的角色、节点的服务运行信息、节点的健康状态等。
60.具体的,通过时间版本模块可以按照节点存储的本地文件加载时间版本信息,即完成时间版本信息的初始化过程,以便接下来对集群中的节点进行时间版本信息的更新。
61.s240、通过时间版本模块在节点为集群主节点的情况下,根据有效时间版本信息更新时间版本信息并导出时间版本信息到本地文件。
62.具体的,通过时间版本模块可以在本节点为集群主节点的情况下,根据有效时间版本信息更新内存中的时间版本,并将时间版本信息导出到本地文件中。
63.进一步的,图3为本发明实施例二提供的根据有效时间版本信息更新时间版本信息的流程示例图,具体包括如下步骤:
64.s241、通过时间版本模块检查节点的节点角色是否为集群主节点。
65.具体的,通过时间版本模块可以检查节点的节点角色,并判断该节点是否为集群主节点,以便接下来根据主节点确定时间版本,进而实现以主节点为中心的时间版本控制。
66.s242、根据时间版本模块确定节点为集群主节点,且集群主节点的节点健康状态为健康的情况下,获取有效时间版本信息作为时间版本信息。
67.具体的,通过时间版本模块可以在确定节点为集群主节点,且该节点的节点健康状态为健康的情况下,依据有效的时间版本信息对内存中的时间版本进行更新。
68.s243、通过时间版本模块将时间版本信息发布到其他节点。
69.具体的,通过时间版本模块可以将主节点所对应的时间版本信息,发布到其他节点,以便维护集群整体时间版本一致,防止脑裂现象发生。
70.在本发明实施例中,通过时间版本模块可以在节点为集群主节点的情况下,根据有效时间版本信息更新时间版本信息,实现了主节点为中心的时间版本控制,进而维护存储集群内所有节点的时间版本一致,可以有效防止脑裂现象发生。
71.s250、通过自修复模块从预配置文件读取节点所在区域的存储集群连接信息。
72.在本实施例中,预配置文件可以包括存储集群的名称、集群中的节点信息、节点的主机名等。存储集群连接信息可理解为存储集群的部署模式,示例性的,部署模式可以包括一主一从模式以及一主多从模式。
73.具体的,通过自修复模块可以从预配置文件读取节点所在区域的存储集群连接信息,以便接下来基于该连接信息对故障节点进行修复。
74.s260、基于自修复模块按照存储集群连接信息连接至存储集群,并获取主从同步信息对时间版本信息进行修复。
75.在本实施例中,主从同步信息可以包括主从节点配置信息、中继日志文件信息等。
76.具体的,通过自修复模块可以按照存储集群连接信息连接至存储集群,并利用获取到的主从同步信息,对从内存中读取到的时间版本信息进行修复,即完成异常主从同步的修复过程。
77.s270、通过自修复模块在选举存储集群从节点为准主节点,并询问其他节点接受
准主节点。
78.在本实施例中,准主节点可理解为当存储集群中的主节点已经故障,集群失去了主节点时,管理服务基于“从节点”自动选举出一个节点作为主节点,在此节点在成为“主节点”之前,称之为“准主节点”。
79.具体的,通过自修复模块可以在主节点发生故障时,管理服务从存储集群的健康从节点中选举出一个节点作为准主节点,并询问其他节点是否接受准主节点,以便接下来基于该准主节点执行主节点故障恢复工作。
80.s280、基于自修复模块向准主节点发送故障恢复请求,以控制准主节点提升为存储集群主节点。
81.具体的,通过自修复模块可以向准主节点发送故障恢复请求,并通过时间版本信息、节点故障信息等控制准主节点提升为存储集群主节点。
82.本实施例的技术方案,通过健康检查模块采集节点到其他节点的健康信息;根据健康检查模块在按照健康信息确定其他节点的节点健康状态并保存;根据时间版本模块按照节点存储的本地文件初始化时间版本信息;通过时间版本模块在节点为集群主节点的情况下,根据有效时间版本信息更新时间版本信息并导出时间版本信息到本地文件;通过自修复模块从预配置文件读取节点所在区域的存储集群连接信息;基于自修复模块按照存储集群连接信息连接至存储集群,并获取主从同步信息对时间版本信息进行修复;通过自修复模块在选举存储集群从节点为准主节点,并询问其他节点接受准主节点;基于自修复模块向准主节点发送故障恢复请求,以控制准主节点提升为存储集群主节点。本发明实施例实现了主节点为中心的时间版本控制,防止了脑裂现象出现,并基于故障自修复机制,实现了存储集群的自动容灾管理。
83.实施例三
84.本实施例在上述实施例的基础上,提供了一种存储集群容灾管理方法的一个优选实施方式,能够实现发生灾难时,存储集群自动恢复;灾难恢复后,故障节点自动作为从节点加入集群。如图4所示,本发明实施例三提供的健康检查模块,具体包括如下步骤:
85.s410、采集本节点到所有节点(包括本节点)的健康信息并保存到内存。
86.在本实施例中,存储集群可以为postgresql集群,该集群属于关系型数据库服务,可提供基本的数据生命周期管理,以下使用pg指代postgresql数据库。所述节点可以包括主节点、从节点、global角色节点等。其中,global角色节点只在一主一从(2节点)模式下出现,该节点只安装管理服务,用来协助健康检查,进而判断两个数据库节点中是否有宕机的节点出现。在一主多从(节点数大于等于3)模式下,则无需global角色节点。进一步的,各节点必须部署到不同的物理位置上,示例性的,在一主一从(2节点)模式下,节点1部署在机房1,节点2部署在机房2,global角色节点部署在机房3。
87.健康信息可以包括ping检查结果、ssh检查结果、通信端口检查结果、心跳检测检查结果、存储集群服务运行检查结果。其中,健康信息可全包含上述各维度信息,也可仅包括上述部分维度信息,也可还包括更多维度的信息,本发明实施例对此不进行限制。
88.示例性的,健康信息保存的数据结构可以如下表所示:
89.t4t3t2t1
90.其中,健康信息保存的数据结构是一个限定队列长度的有序队列(如每5秒取监
控,保留3分钟的记录,那么队列长度可以是3*60/5)。t1表示最早时间,t4表示最近时间。列表中的元素是json格式的字典信息。
91.如下是一个健康信息保存的数据结构的示例:
[0092][0093]
其中,代号1表示ping检查结果未通过;代号0表示完全健康;代号2表示ssh检查结果未通过。
[0094]
进一步的,如果本节点的角色是global,可以定制化地只检查ping维度的健康信息。
[0095]
s420、获取最近2分钟的健康信息记录,并根据获取到的健康信息得到各节点状态,然后更新节点状态到节点信息。
[0096]
示例性的,如果获取到的目标节点的健康信息记录均为“空闲”状态,则可以确定该节点的状态为空闲,即该节点的pg服务未启动。同理,确定集群中所有节点的健康状态,并更新节点状态到节点信息。
[0097]
如图5所示,本发明实施例三提供的时间版本模块初始化流程,具体包括如下步骤:
[0098]
s510、判断本节点是否为global角色,若满足条件,则结束时间版本模块初始化过程;反之,则继续向下执行步骤。
[0099]
s520、尝试循环x次确认各节点角色。
[0100]
s530、获取pg服务运行信息,若本节点pg服务未运行,则返回继续执行获取pg服务运行信息的步骤;反之,则继续向下执行步骤。
[0101]
s540、检验本节点的pg角色(主或从),并设置符合预期的标记flag(flag表达本节点作为主,或者作为从是正常)。
[0102]
s550、判断flag是否符合预期,若满足条件,则打破循环,继续向下执行步骤;若不满足,则判断是否达到尝试次数上限,若未达到,则返回继续执行获取pg服务运行信息的步骤,反之,则继续向下执行步骤。
[0103]
s560、再次判断flag是否符合预期,若满足条件,则执行从本地文件加载时间版本流程,并启动线程。
[0104]
s570、若flag不符合预期,则停止本节点的pg服务。
[0105]
s580、判断本节点是否为pg主角色,若满足条件,则执行本节点成为当前集群的从节点流程;反之,启动线程。
[0106]
如图6所示,本发明实施例三提供的加载时间版本的流程,具体包括如下步骤:
[0107]
s610、判断记录时间版本的本地文件是否存在,若满足条件,则继续向下执行步
骤;反之,结束本流程。
[0108]
s620、读取文件内容,并删除此文件。
[0109]
s630、判断本节点pg服务是否运行,若满足条件,则执行更新时间版本信息流程;反之,结束本流程。
[0110]
如图7所示,本发明实施例三提供的更新时间版本信息的流程,具体包括如下步骤:
[0111]
s710、获取时间版本控制锁的信息。
[0112]
s720、判断是否有锁,若满足条件,则结束本流程;反之,则继续向下执行步骤。
[0113]
s730、根据当前处于健康状态的主节点的时间版本,对内存中的时间版本进行更新,并导出时间版本信息到本地文件。
[0114]
示例性的,如下是一个时间版本的数据结构的示例:
[0115][0116]
进一步的,时间版本信息会分别在内存和本地文件中各存储一份,其中本地文件这一份用于本发明实施例中的管理服务启动的初始化载入。
[0117]
如图8所示,本发明实施例三提供的本节点成为当前集群的从节点的流程,具体包括如下步骤:
[0118]
s810、获取所有节点的时间版本信息。
[0119]
s820、筛选得到最近一个时间版本的主节点。
[0120]
s830、判断当前集群主节点是否有且仅有这一个,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0121]
s840、将本节点设置为从节点。
[0122]
s850、读取所有pgpool节点的配置,并将错误的pgpool节点配置纠正。
[0123]
如图9所示,本发明实施例三提供的时间版本模块线程的流程,具体包括如下步骤:
[0124]
s910、判断本节点当前时间版本是否有锁,若满足条件,则清理无效锁,并结束本流程;反之,则继续向下执行步骤。
[0125]
s920、判断本节点pg服务是否运行,若满足条件,则获得本节点pg角色(主或从);反之,则返回执行上个步骤的判断条件。
[0126]
s930、判断本节点是否为pg主角色,若满足条件,则获得内存中记录的时间版本信息;反之,则判断本节点是否为pg从角色,若为pg从节点,则检查本节点pg角色,并根据角色是否异常,确定是否停止本节点的pg服务,以及结束本线程。
[0127]
s940、判断内存中记录的时间版本信息是否为有效的时间版本,若不满足,则执行创建时间版本流程;反之,则检查本节点pg角色。
[0128]
s950、判断pg角色是否正常,若满足条件,则继续向下执行步骤;反之,则判断时间版本记录的pg主角色是否为本节点,若不是本节点,则执行创建时间版本流程,若是本节点,则继续向下执行步骤。
[0129]
s960、采集pg从角色节点信息以及pg空闲节点信息。
[0130]
s970、执行图7中的更新时间版本信息流程。
[0131]
s980、发布时间版本信息到其它的数据库节点,并结束本线程。
[0132]
如图10所示,本发明实施例三提供的创建时间版本的流程,具体包括如下步骤:
[0133]
s1010、获取本节点pg信息。
[0134]
s1020、判断pg服务是否正常运行,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0135]
s1030、判断本节点是否为pg主角色,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0136]
s1040、判断pg主角色是否正常,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0137]
s1050、采集相关信息构成时间版本内容。
[0138]
s1060、执行图7中的更新时间版本信息流程。
[0139]
如图11所示,本发明实施例三提供的自修复模块的流程,具体包括如下步骤:
[0140]
s1110、获取本节点角色。
[0141]
s1120、判断本节点是否为global角色,若满足条件,则结束本流程;反之,则继续向下执行步骤。
[0142]
s1130、执行修复模块。
[0143]
s1140、执行故障恢复模块,并结束本流程
[0144]
如图12所示,本发明实施例三提供的修复模块的流程,具体包括如下步骤:
[0145]
s1210、获取本节点pg信息。
[0146]
s1220、判断本节点是否为pg主角色且正常,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0147]
s1230、从预设配置读取本节点所在区域的pgpool节点。
[0148]
s1240、查询pgpool节点的信息,并对不健康的pgpool节点进行修复。
[0149]
s1250、从内存中读取时间版本信息。
[0150]
s1260、判断时间版本是否有效,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0151]
s1270、判断时间版本记录的pg主角色是否为本节点,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0152]
s1280、获取pg主从同步信息。
[0153]
s1290、判断pg主从同步是否正常,若满足条件,则结束本流程;反之,则修复pg主从同步问题,并结束本流程。
[0154]
如图13所示,本发明实施例三提供的故障恢复模块的流程,具体包括如下步骤:
[0155]
s1310、获取时间版本信息,并判断是否有锁,若满足条件,则结束本流程;反之,则继续向下执行步骤。
[0156]
s1320、根据健康信息获取故障pg节点。
[0157]
s1330、判断是否有故障pg节点,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0158]
s1340、获取可访问的pg节点和global节点,并向上述节点询问故障pg节点是否故障(有可能是本节点故障)。
[0159]
s1350、判断确认故障pg节点是否已经故障,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0160]
s1360、判断故障pg节点是否为时间版本记录的pg主节点,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0161]
s1370、选举出一个pg从节点作为“准主节点”,并询问其他可访问的节点是否接受“准主节点”。
[0162]
s1380、发送请求给“准主节点”,请它执行pg主节点故障恢复操作。
[0163]
s1390、收到请求后,加“线程锁”(避免并发操作)。
[0164]
s13100、判断请求中的时间版本日期和本节点是否匹配,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0165]
s13110、判断本节点时间版本是否有锁,若满足条件,则结束本流程;反之,则检查故障节点以确认故障。
[0166]
s13120、判断确认故障节点是否故障,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0167]
s13130、检查本节点是pg从节点,pg服务正常运行。
[0168]
s13140、判断本节点是否为pg从节点,若满足条件,则继续向下执行步骤;反之,则结束本流程。
[0169]
s13150、获取所有可访问的pg节点(包括本节点)。
[0170]
s13160、对包括本节点在内的可访问的pg节点加锁“时间版本锁”。
[0171]
s13170、将本节点提为pg主节点,并对包括本节点在内的可访问的pg节点解锁“时间版本锁”。
[0172]
s13180、修复可访问到的pgpool节点。
[0173]
s13190、解锁“线程锁”,并结束本流程。
[0174]
进一步的,图14为本发明实施例三提供的节点管理模块的流程示意图,如图6所示,具体包括如下步骤:
[0175]
s1410、载入预设配置和将节点信息保存在内存。
[0176]
示例性的,如下是一主一从(2节点)部署模式下的预设配置样例:
[0177]
pg_watcher:#本发明实施例的数据库集群管理服务的名称
[0178]
globals:'pek1a-pgglobal0,pek1a-pgglobal1'#部署在非pek1a,pek1b其它区域
的global探活节点
[0179]
pg_node_info:#数据库集群的节点信息
[0180]
pek1a-pgserver:#数据库节点的hostname
[0181]
'pgpools':'pek1a-pgpool0,pek1a-pgpool1'#该节点所在区域的pgpool集群各节点的hostname
[0182]
'global_check_ip':'1.2.3.4'#暴露给globals的检查ip,globals将通过此ip代理中转到此节点探活
[0183]
pek1b-pgserver:
[0184]
'pgpools':'pek1b-pgpool0,pek1b-pgpool1'
[0185]
'global_check_ip':'1.2.3.5'
[0186]
如下是一主多从(节点数大于等于3)部署模式下的预设配置样例:
[0187]
pg_watcher:#本发明实施例的数据库集群管理服务的名称
[0188]
cluster_billing:#数据库集群的名字
[0189]
pg_node_info:#数据库集群的节点信息
[0190]
pek3a-pgserver:#数据库节点的hostname
[0191]
pgpools:"pek3a-pgpool0,pek3a-pgpool1"#该节点所在区域的pgpool集群各节点的hostname
[0192]
pek3b-pgserver:
[0193]
pgpools:"pek3b-pgpool0,pek3b-pgpool1"
[0194]
pek3c-pgserver:
[0195]
pgpools:"pek3c-pgpool0,pek3c-pgpool1"
[0196]
s1420、获取pg角色(主或从),并判断本节点是否为主节点,若满足条件,则继续向下执行步骤;反之,则获取节点角色(global或node),并判断本节点是否为global角色,若是global角色,则返回执行载入预设配置和将节点信息保存在内存的步骤,若不是global角色,则返回执行获取pg角色(主或从)的步骤。
[0197]
s1430、采集和更新从节点信息。
[0198]
s1440、读取预设配置更新节点信息,并发布本节点记录的所有节点信息到其他节点去更新,再返回执行载入预设配置和将节点信息保存在内存的步骤。
[0199]
本实施例的技术方案,通过健康检查模块采集节点到其他节点的健康信息;根据健康检查模块在按照健康信息确定其他节点的节点健康状态并保存;根据时间版本模块按照节点存储的本地文件初始化时间版本信息;通过时间版本模块在节点为集群主节点的情况下,根据有效时间版本信息更新时间版本信息并导出时间版本信息到本地文件;通过自修复模块从预配置文件读取节点所在区域的存储集群连接信息;通过自修复模块对pgpool节点异常和主从同步异常进行自动修复;通过自修复模块对主节点异常进行自动故障恢复;此外通过节点管理模块对集群中的节点进行多维度的信息监控。本发明实施例实现了主节点为中心的时间版本控制,防止了脑裂现象出现,并基于故障自修复机制,实现了存储集群的自动容灾管理,此外通过健康检查模块可以获取其他节点的节点健康状态,并可以周期地采集各节点之间的网络健康、管理服务健康、数据库健康等监控信息,即针对故障有多维度的监控能力。
[0200]
实施例四
[0201]
图15为本发明实施例四提供的一种存储集群容灾管理系统的结构示意图。如图15所示,该系统包括:
[0202]
健康检查模块151,用于获取其他节点的节点健康状态。
[0203]
时间版本模块152,用于按照节点健康状态更新节点的时间版本信息。
[0204]
自修复模块153,用于在节点故障时按照时间版本信息进行故障恢复。
[0205]
进一步,所述系统还可以包括节点管理模块154,用于在获取节点健康状态之前,对集群中的节点进行预设信息管理。
[0206]
本实施例的技术方案,通过健康检查模块获取其他节点的节点健康状态;根据时间版本模块按照节点健康状态更新节点的时间版本信息;通过自修复模块在节点故障时按照时间版本信息进行故障恢复。本发明实施例通过时间版本控制机制,防止了脑裂现象出现,并基于故障自修复机制,实现了存储集群的自动容灾管理。
[0207]
进一步的,健康检查模块151,包括:
[0208]
健康信息采集单元,用于通过健康检查模块采集节点到其他节点的健康信息。
[0209]
健康状态确定单元,用于根据健康检查模块在按照健康信息确定其他节点的节点健康状态并保存。
[0210]
进一步的,时间版本模块152,包括:
[0211]
时间版本信息初始化单元,用于根据时间版本模块按照节点存储的本地文件初始化时间版本信息。
[0212]
时间版本信息更新单元,用于通过时间版本模块在节点为集群主节点的情况下,根据有效时间版本信息更新时间版本信息并导出时间版本信息到本地文件。
[0213]
进一步的,自修复模块153,包括:
[0214]
连接信息读取单元,用于通过自修复模块从预配置文件读取节点所在区域的存储集群连接信息。
[0215]
时间版本信息修复单元,用于基于自修复模块按照存储集群连接信息连接至存储集群,并获取主从同步信息对时间版本信息进行修复。
[0216]
准主节点选举单元,用于通过自修复模块在选举存储集群从节点为准主节点,并询问其他节点接受准主节点。
[0217]
准主节点控制单元,用于基于自修复模块向准主节点发送故障恢复请求,以控制准主节点提升为存储集群主节点。
[0218]
本发明实施例所提供的一种存储集群容灾管理系统可执行本发明任意实施例所提供的存储集群容灾管理方法,具备执行方法相应的功能模块和有益效果。
[0219]
实施例五
[0220]
图16示出了可以用来实施本发明的实施例的电子设备160的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
[0221]
如图16所示,电子设备160包括至少一个处理器161,以及与至少一个处理器161通信连接的存储器,如只读存储器(rom)162、随机访问存储器(ram)163等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器161可以根据存储在只读存储器(rom)162中的计算机程序或者从存储单元168加载到随机访问存储器(ram)163中的计算机程序,来执行各种适当的动作和处理。在ram 163中,还可存储电子设备160操作所需的各种程序和数据。处理器161、rom 162以及ram 163通过总线164彼此相连。输入/输出(i/o)接口165也连接至总线164。
[0222]
电子设备160中的多个部件连接至i/o接口165,包括:输入单元166,例如键盘、鼠标等;输出单元167,例如各种类型的显示器、扬声器等;存储单元168,例如磁盘、光盘等;以及通信单元169,例如网卡、调制解调器、无线通信收发机等。通信单元169允许电子设备160通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0223]
处理器161可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器161的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器161执行上文所描述的各个方法和处理,例如存储集群容灾管理方法。
[0224]
在一些实施例中,存储集群容灾管理方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元168。在一些实施例中,计算机程序的部分或者全部可以经由rom 162和/或通信单元169而被载入和/或安装到电子设备160上。当计算机程序加载到ram 163并由处理器161执行时,可以执行上文描述的存储集群容灾管理方法的一个或多个步骤。备选地,在其他实施例中,处理器161可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行存储集群容灾管理方法。
[0225]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0226]
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0227]
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质
可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0228]
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0229]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
[0230]
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
[0231]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
[0232]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献