CN112084072B - 一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端 - Google Patents

一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端 Download PDF

Info

Publication number
CN112084072B
CN112084072B CN202010953158.6A CN202010953158A CN112084072B CN 112084072 B CN112084072 B CN 112084072B CN 202010953158 A CN202010953158 A CN 202010953158A CN 112084072 B CN112084072 B CN 112084072B
Authority
CN
China
Prior art keywords
node
cluster
checked
postgresql
state
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.)
Active
Application number
CN202010953158.6A
Other languages
English (en)
Other versions
CN112084072A (zh
Inventor
许克尧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing Unisinsight Technology Co Ltd
Original Assignee
Chongqing Unisinsight Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chongqing Unisinsight Technology Co Ltd filed Critical Chongqing Unisinsight Technology Co Ltd
Priority to CN202010953158.6A priority Critical patent/CN112084072B/zh
Publication of CN112084072A publication Critical patent/CN112084072A/zh
Application granted granted Critical
Publication of CN112084072B publication Critical patent/CN112084072B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端,方法包括:获取节点与集群的逻辑关系,若为PostgreSQL集群外节点,则在仅数据库中更新互联网协议地址信息和最后更新时间信息;若为PostgreSQL集群内节点,则定时向数据库插入或者更新待检查节点的互联网协议地址信息和更新时间,若待检查节点为主节点,则获取待检查节点的服务状态,当判定所述待检查节点处于异常状态时,通过DB‑Common中选择的第一个活跃可用的节点作为新的集群内节点,更新数据库,并删除异常节点;本发明在PostgreSQL集群数量减少时主动从存储集群内查找可用节点,替换离线的节点,在存储集群有可用节点的情况下,维持集群数量不变,可以保证高可用功能,提高了容灾能力和更好的集群自我修复能力。

Description

一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端
技术领域
本发明涉及计算机领域,尤其涉及一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端。
背景技术
在计算机存储技术领域,存储集群的稳定性一直是大家较为关注的地方,在当下的集群应用中,业务层多有涉及到PostgreSQL数据库服务。PostgreSQL为整个集群多节点提供数据服务,简单的使用方式有单节点部署,即在存储集群中选择一个节点作为PostgreSQL服务安装节点。复杂一些的使用方式有多节点部署成PostgreSQL集群,即在存储集群中选择一定数量的节点部署PostgreSQL,加上高可用技术,实现PostgreSQL的高可用。
目前,就多节点存储集群单节点部署PostgreSQL而言,单节点的数据库服务即成为整个集群的缺陷所在,一旦该节点离线,将导致整个集群无数据库服务可用,即集群不可用。目前应用较为广泛的做法是PostgreSQL部署时以多节点集群的方法安装部署,使用其自身的流复制功能实现底层数据库中数据的实时备份,上层高可用功能可选择性较多,例如使用pgpool实现上层的高可用,或者keepalived实现上层的高可用,其目的都是维持一个虚拟ip存在PostgreSQL集群中,当虚拟ip所在节点异常时,可以将虚拟ip转移到PostgreSQL集群中的其它节点,继续提供服务,避免因单节点故障导致的数据库服务不可用。
但是这种多节点数据库集群实际应用中规模不会过大,否则会大量占用系统、网络等资源,所以其容灾能力在部署时被局限,无法解决在一个或多个PostgreSQL集群出现不可恢复的异常情况下,如断电、硬件损坏等,保持数据库集群容灾能力不变,造成数据库集群数量稳定的问题。
发明内容
鉴于以上所述现有技术的缺点,本发明提供一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端,以解决上述技术问题。
本发明提供的提高PostgreSQL集群容灾能力的方法,包括:
获取节点与集群的逻辑关系,若待检查节点为PostgreSQL集群外的节点,则在仅数据库中更新所述待检查节点的互联网协议地址信息和最后更新时间信息;若待检查节点为存储集群部署时生成的PostgreSQL集群内的节点,则定时向数据库插入或者更新所述待检查节点的互联网协议地址信息和更新时间,并继续
判断所述待检查节点的PostgreSQL服务状态和节点状态,所述服务状态包括正常状态和异常状态,所述节点状态包括主节点状态和从节点状态,若所述待检查节点为主节点,则根据所述更新时间信息获取待检查节点的服务状态,并继续
当判定所述待检查节点处于异常状态时,通过DB-Common(记录PostgreSQL集群外可用节点信息的数据表格)中选择的第一个活跃可用的节点作为新的集群内节点;
更新数据库,并删除异常节点。
可选的,根据配置文件是否符合第一条件和第二条件判断待检查节点是否为存储集群部署时生成的PostgreSQL集群内的节点,所述配置文件包括互联网协议配置文件和用于检测服务器状态的交换机制(keepalived)配置文件;
所述第一条件包括所述待检查节点与互联网协议配置文件中的互联网协议信息和对应的角色信息相匹配;
所述第二条件包括所述待检查节点与交换机制配置文件的数据库实施例匹配。
可选的,当所述待检查节点不能同时满足所述第一条件和第二条件时,判定所述待检查节点为PostgreSQL集群外节点,则定时更新DB-Common中的信息,并维持服务状态。
可选的,当所述待检查节点同时满足所述第一条件和第二条件时,判定所述待检查节点为PostgreSQL集群内节点,则定时连接PostgreSQL集群的虚拟互联网协议地址,向数据库中的DB-Manage(记录PostgreSQL集群内节点信息的数据表格)插入或者更新所述待检查节点的互联网协议地址信息和更新时间。
可选的,若所述待检查节点为从节点,则根据只向数据库中的DB-Manage插入或者更新本节点的互联网协议地址信息和更新时间,维持并维持服务状态。
可选的,若所述待检查节点为主节点,则检查集群内部每个节点的服务状态,包括:检查数据库中的DB-Manage互联网协议地址对应的最后更新时间与当前时间差,或超过预设的时间阈值,则判定所述待检查节点异常状态。
可选的,判定所述待检查节点异常状态后,通过PostgreSQL集群的主节点连接至所述待检查节点,并从所述DB-Common中选择的第一个活跃可用的节点互联网协议地址以入参形式传递给至进程来执行异常添加,在配置文件中替换为新增节点的互联网协议地址,并同步至存储集群中的每个节点。
可选的,所述更新数据库包括更新数据库中的DB-Manage和DB-Common的数据,将异常节点信息从DB-Manage中删除;
所述删除异常节点包括判断异常节点是否网络可达,若网络可达则执行异常删除流程,如删除成功,则检查用于记录待删除节点的数据表格DB-OFFNOD;如删除失败,则将所述待删除节点的互联网协议信息记录在所述数据表格DB-OFFNOD,并在下一次循环中检查该节点表格并再次尝试删除,如果此次删除成功则从表格DB-OFFNODE中清理已被删除节点的互联网协议信息。
本发明还提供一种提高PostgreSQL集群容灾能力的系统,包括
定时更新模块,用于获取节点与集群的逻辑关系,若待检查节点为PostgreSQL集群外的节点,则在仅数据库中更新所述待检查节点的互联网协议地址信息和最后更新时间信息;若待检查节点为存储集群部署时生成的PostgreSQL集群内的节点,则定时向数据库插入或者更新所述待检查节点的互联网协议地址信息和更新时间;
健康检查模块,用于判断所述待检查节点的PostgreSQL服务状态和节点状态,所述服务状态包括正常状态和异常状态,所述节点状态包括主节点状态和从节点状态,若所述待检查节点为主节点,则根据所述更新时间信息获取待检查节点的服务状态;
异常添加模块,用于执行异常添加流程,当判定所述待检查节点处于异常状态时,通过DB-Common(记录PostgreSQL集群外可用节点信息的数据表格)中选择的第一个活跃可用的节点作为新的集群内节点;
异常删除模块,用于更新数据库,并删除异常节点。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述中任一项所述方法。
本发明还提供一种电子终端,包括:处理器及存储器;
所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行如上述中任一项所述方法。
本发明的有益效果:本发明中的提高PostgreSQL集群容灾能力的方法、系统、介质及终端,在PostgreSQL集群数量减少时主动从存储集群内查找可用节点,替换离线的节点,在存储集群有可用节点的情况下,维持PostgreSQL集群数量不变,可以保证高可用功能,极大的提高了容灾能力,提供了更好的集群自我修复能力。
附图说明
图1是本发明实施例中提高PostgreSQL集群容灾能力的方法的原理示意图。
图2是本发明实施例中提高PostgreSQL集群容灾能力的方法的具体流程示意图。
图3是本发明实施例中提高PostgreSQL集群容灾能力的系统的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
如图1所示,本实施例中的提高PostgreSQL集群容灾能力的方法,包括:
S1.获取节点与集群的逻辑关系,若待检查节点为PostgreSQL集群外的节点,则在仅数据库中更新待检查节点的互联网协议地址信息和最后更新时间信息;若待检查节点为存储集群部署时生成的PostgreSQL集群内的节点,则定时向数据库插入或者更新待检查节点的互联网协议地址信息和更新时间;
S2.判断待检查节点的PostgreSQL服务状态和节点状态,服务状态包括正常状态和异常状态,节点状态包括主节点状态和从节点状态,若待检查节点为主节点,则根据所述更新时间信息获取待检查节点的服务状态;
S3.当判定待检查节点处于异常状态时,通过DB-Common(记录PostgreSQL集群外可用节点信息的数据表格)中选择的第一个活跃可用的节点作为新的集群内节点;
S4.更新数据库,并删除异常节点。
如图2所示,在本实施例中,PostgreSQL集群高可用技术实现中,目前可供选择的技术方案较多,可选的,本实施例中选取较为成熟且实现简单的用于检测服务器状态的交换机制keepalived来实现集群高可用功能,Keepalived及业务层逻辑代码可以在PostgreSQL集群中主节点服务发生异常时触发主备切换,使数据库服务持续可用。
具体的,首先,检查存储集群部署时生成的PostgreSQL集群ip配置文件”/etc/dn_hosts”中是否存在本节点ip,该配置文件会记录ip信息和对应的角色,可以判断是否是集群内的节点,再次检查配置keepalived的配置文件”/etc/keepalived/keepalived.conf”中配置的数据库实例是否存在。根据配置文件是否符合第一条件和第二条件判断待检查节点是否为存储集群部署时生成的PostgreSQL集群内的节点,配置文件包括互联网协议配置文件和用于检测服务器状态的交换机制(keepalived)配置文件;第一条件包括所述待检查节点与互联网协议配置文件中的互联网协议信息和对应的角色信息相匹配;第二条件包括所述待检查节点与交换机制配置文件的数据库实施例匹配。当都符合时,则判定待检查节点属于PostgreSQL集群内,然后定时连接PostgreSQL集群的虚拟ip,可选的,定时时间可以为30秒,向数据库表空间keepalived中的表格DB-Manage(记录PostgreSQL集群内节点信息的数据表格)插入或者更新本节点的ip信息和此时的更新时间,表空间keepalived在集群部署时创建,此处的更新时间以下称为最后更新时间;以上两个条件不能同时满足时认为待检查节点属于PostgreSQL集群外,则向数据库表空间keepalived中的表格DB-Common更新本节点的ip信息和最后更新时间,PostgreSQL集群外的节点只需要定时更新DB-Common中的信息,维持本节点的活跃状态,以备有节点离线时可以被做为新节点补充到PostgreSQL集群。
在本实施例中,仅在PostgreSQL集群内的节点上进行健康检查,主要检查待检查节点的PostgreSQL服务是否正常及待检查节点是否是集群的主节点,如果待检查节点是从节点则只向表格DB-Manage插入或者更新本节点的ip信息和最后更新时间,维持待检查节点的活跃状态;如果待检查节点是PostgreSQL集群的主节点,则需负责检查集群内部每个节点的健康情况。遍历上述配置文件dn_hosts的每一行,如果该行的ip在PostgreSQL集群内,则检查表格DB-Manage中此ip对应的最后更新时间与当前时间差,如果时间差超过30分钟,则认为该节点离线,属于异常状态,此时的PostgreSQL集群正常节点的数量减少,接下来从DB-Common中选择第一个活跃可用的节点作为新的集群内节点。
在本实施例中,异常添加通过异常添加模块实现,异常添加模块在存储集群安装时预置在存储集群的每个节点中,触发时由PostgreSQL集群的主节点发起,可选的,可以通过ssh协议远程到该节点,ssh集群内的免密工作在存储集群部署时完成,并将从DB-Common中选择的第一个活跃可用的节点ip以入参形式传递给该进程来执行异常添加流程;该流程中将PostgreSQL添加的keepalived实例,并启动PostgreSQL;添加新的节点成功以后,需要修改PostgreSQL集群的配置文件,用新增的节点ip替换配置文件dn_hosts中的异常节点ip,可选的,通过linux下的scp指令同步分发至存储集群中的每个节点。在新节点添加完成后,触发异常删除流程。
在本实施例中,异常删除流程可以通过异常删除模块来实现,异常删除模块在存储集群安装时预置在存储集群的每个节点中;在异常添加流程完成后触发,主要包括两部分功能,第一是更新DB-Manage和DB-Common表格中的数据,需要从表格DB-Manage中删除已离线的节点的信息,从表格DB-Common中删除已成功添加PostgreSQL集群中的节点信息,包括ip和最后更新时间;第二是异常离线节点的删除,在离线节点网络可达的情况下,通过linux下的ping指令检测其是否可达,网络可达则通过ssh协议远程到该节点,执行异常删除流程,异常删除流程会清理keepalived的配置文件中配置的PostgreSQL实例,停止可能存在的数据库服务;如果删除节点成功,则检查记录待删除节点的数据表格DB-OFFNODE,DB-OFFNODE在存储集群安装时创建,用来记录删除失败的节点ip信息,同样存在于表空间keepalived中;如果删除节点失败,则将该节点ip信息加入DB-OFFNODE记录,在下一次循环中检查该节点表格并尝试使用异常删除模块流程删除该节点;如果删除成功则从表格DB-OFFNODE中清理已被删除节点的ip信息。
在本实施例中,定时时间可以采用系统等待30秒执行一次,由于PostgreSQL集群本身有高可用保证服务可用,对节点离线后补充节点并没有很强的时效性要求,30秒执行一次检查,不会占用系统增加较多资源。
相应的,本实施例还提供一种提高PostgreSQL集群容灾能力的系统,如图3所示,包括:
定时更新模块,用于获取节点与集群的逻辑关系,若待检查节点为PostgreSQL集群外的节点,则在仅数据库中更新所述待检查节点的互联网协议地址信息和最后更新时间信息;若待检查节点为存储集群部署时生成的PostgreSQL集群内的节点,则定时向数据库插入或者更新所述待检查节点的互联网协议地址信息和更新时间;
健康检查模块,用于判断所述待检查节点的PostgreSQL服务状态和节点状态,所述服务状态包括正常状态和异常状态,所述节点状态包括主节点状态和从节点状态,若所述待检查节点为主节点,则根据所述更新时间信息获取待检查节点的服务状态;
异常添加模块,用于执行异常添加流程,当判定所述待检查节点处于异常状态时,通过DB-Common中选择的第一个活跃可用的节点作为新的集群内节点;
异常删除模块,用于更新数据库,并删除异常节点。
提高PostgreSQL集群容灾能力的系统通过上述方法进行在PostgreSQL集群数量减少时主动从存储集群内查找可用节点,替换离线的节点,在存储集群有可用节点的情况下,维持PostgreSQL集群数量不变,可以保证高可用功能和容灾能力稳定,提高更好的集群自我修复能力。
下面以一个具体实施例进行介绍:
部署16个数据节点的存储集群,选择其中的5节点部署PostgreSQL集群。每个存储节点部署本发明中的维持节点数量稳定的系统装置,并运行主进程,主进程包括定时更新模块和健康检查模块,每个节点预置异常添加和异常删除模块的可执行程序,配置存储集群节点间支持ssh免密,在安装时创建所需要用到的表格DB-Manage和DB-Common以及DB-OFFNODE。
PostgreSQL集群底层主从节点数据同步可通过配置PostgreSQL配置文件postgresql.conf,使用数据库的主从异步流复制功能来实现。上层高可用方案使用keepalived维护虚拟ip来实现。
在本实施例中,上述存储集群、PostgreSQL集群和维持节点数量稳定的系统装置,在私有存储部署时同步完成。并通过私有的守护进程启动并守护本发明中的主进程,完成定时更新DB-Manage和DB-Common中ip对应的最后更新时间的任务,并在本节点是PostgreSQL集群主节点时检查集群每个节点的数据库健康情况。
在本实施例中,如果发现有PostgreSQL集群节点异常,则从DB-Common中选择一个最后更新时间在正常范围内的可用节点,远程到该节点执行预置的异常添加模块可执行程序。成功后在离线节点可达的情况下,远程到离线节点执行预置的异常删除模块的可执行程序。
在本实施例中,如果之前从PostgreSQL集群中离线的节点在集群已补充新的节点后恢复,区分两种情况,如果在离线时网络可达,此节点已经从集群中删除,包括DB-Manage中的记录同时删除,再次恢复则作为集群外普通节点,定时将自己ip及最后更新时间更新到DB-Common中;如果离线时网络不可达,此时节点恢复,则根据DB-Manage中的记录,再次触发异常删除流程,删除该节点属于PostgreSQL集群的配置,使其成为PostgreSQL集群外普通节点,定时将自己ip及最后更新时间更新到DB-Common中。
以上包括实施过程及完成一次集群离线节点后的自我修复流程。
在本实施例中,在不使用本实施例中的系统的情况下,16个数据存储节点,在保证数据库服务可用的情况下,5个PostgreSQL集群节点中最大可允许4个节点离线,而使用本实施例中的系统的情况下,只考虑数据库服务可用不考虑其它条件时,最大允许15个节点离线。也就是说,在一个N个节点的存储集群中,PostgreSQL集群数量为a个,N大于a,现有技术方案中,最多可以支持PostgreSQL集群离线节点为(a-1)个,而本实施例可以支持集群最大离线数量为(N-1)个,在存储集群规模较大的场景中,极大地提高了PostgreSQL集群的容灾能力。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本实施例中的任一项方法。
本实施例还提供一种电子终端,包括:处理器及存储器;
所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行本实施例中任一项方法。
本实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例提供的电子终端,包括处理器、存储器、收发器和通信接口,存储器和通信接口与处理器和收发器连接并完成相互间的通信,存储器用于存储计算机程序,通信接口用于进行通信,处理器和收发器用于运行计算机程序,使电子终端执行如上方法的各个步骤。
在本实施例中,存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在上述实施例中,除非另外规定,否则通过使用“第一”、“第二”等序号对共同的对象进行描述,只表示其指代相同对象的不同实例,而非是采用表示被描述的对象必须采用给定的顺序,无论是时间地、空间地、排序地或任何其他方式。在上述实施例中,说明书对“本实施例”的提及表示结合实施例说明的特定特征、结构或特性包括在至少一些实施例中,但不必是全部实施例。“本实施例”的多次出现不一定全部都指代相同的实施例。在上述实施例中,尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变形对本领域普通技术人员来说将是显而易见的。例如,其他存储结构(例如,动态RAM(DRAM))可以使用所讨论的实施例。本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种提高PostgreSQL集群容灾能力的方法,其特征在于,包括:
获取节点与集群的逻辑关系,若待检查节点为PostgreSQL集群外的节点,则在仅数据库中更新所述待检查节点的互联网协议地址信息和最后更新时间信息;若待检查节点为存储集群部署时生成的PostgreSQL集群内的节点,则定时向数据库插入或者更新所述待检查节点的互联网协议地址信息和更新时间,并继续,
判断所述待检查节点的PostgreSQL服务状态和节点状态,所述服务状态包括正常状态和异常状态,所述节点状态包括主节点状态和从节点状态,若所述待检查节点为主节点,则根据更新时间信息获取待检查节点的服务状态,并继续,
当判定所述待检查节点处于异常状态时,通过第一数据表格中选择的第一个活跃可用的节点作为新的集群内节点,所述第一数据表格用于记录PostgreSQL集群外可用节点信息;
判定所述待检查节点处于异常状态后,通过PostgreSQL集群的主节点连接至所述待检查节点,并从所述第一数据表格中选择的第一个活跃可用的节点互联网协议地址,以入参形式传递至进程来执行异常添加,然后在配置文件中替换为新增节点的互联网协议地址,并同步至存储集群中的每个节点;
更新数据库,并删除异常节点。
2.根据权利要求1所述的提高PostgreSQL集群容灾能力的方法,其特征在于,根据配置文件是否符合第一条件和第二条件判断待检查节点是否为存储集群部署时生成的PostgreSQL集群内的节点,所述配置文件包括互联网协议配置文件和用于检测服务器状态的交换机制配置文件;
所述第一条件包括所述待检查节点与互联网协议配置文件中的互联网协议信息和对应的角色信息相匹配;
所述第二条件包括所述待检查节点与交换机制配置文件的数据库实施例匹配。
3.根据权利要求2所述的提高PostgreSQL集群容灾能力的方法,其特征在于,当所述待检查节点不能同时满足所述第一条件和第二条件时,判定所述待检查节点为PostgreSQL集群外节点,则定时更新第一数据表格中的信息,并维持服务状态。
4.根据权利要求2所述的提高PostgreSQL集群容灾能力的方法,其特征在于,当所述待检查节点同时满足所述第一条件和第二条件时,判定所述待检查节点为PostgreSQL集群内节点,则定时连接PostgreSQL集群的虚拟互联网协议地址,向数据库中的第二数据表格插入或者更新所述待检查节点的互联网协议地址信息和更新时间,所述第二数据表格用于记录PostgreSQL集群内节点信息。
5.根据权利要求4所述的提高PostgreSQL集群容灾能力的方法,其特征在于,若所述待检查节点为从节点,则向数据库中的第二数据表格插入或者更新本节点的互联网协议地址信息和更新时间,维持并维持服务状态。
6.根据权利要求4所述的提高PostgreSQL集群容灾能力的方法,其特征在于,若所述待检查节点为主节点,则检查集群内部每个节点的服务状态,包括:检查数据库中的第二数据表格记录的互联网协议地址对应的最后更新时间与当前时间之间的时间差,若所述时间差超过预设的时间阈值,则判定所述待检查节点处于异常状态。
7.根据权利要求1所述的提高PostgreSQL集群容灾能力的方法,其特征在于,
所述更新数据库包括更新数据库中的第一数据表格和第二数据表格的数据,将异常节点信息从第二数据表格中删除;
所述删除异常节点包括判断异常节点是否网络可达,若网络可达则执行异常删除流程,如删除成功,则检查用于记录待删除节点的第三数据表格;如删除失败,则将所述待删除节点的互联网协议信息记录在所述第三数据表格,并在下一次循环中检查节点表格并再次尝试删除,如果此次删除成功则从第三数据表格中清理已被删除节点的互联网协议信息。
8.一种提高PostgreSQL集群容灾能力的系统,其特征在于,包括
定时更新模块,用于获取节点与集群的逻辑关系,若待检查节点为PostgreSQL集群外的节点,则在仅数据库中更新所述待检查节点的互联网协议地址信息和最后更新时间信息;若待检查节点为存储集群部署时生成的PostgreSQL集群内的节点,则定时向数据库插入或者更新所述待检查节点的互联网协议地址信息和更新时间;
健康检查模块,用于判断所述待检查节点的PostgreSQL服务状态和节点状态,所述服务状态包括正常状态和异常状态,所述节点状态包括主节点状态和从节点状态,若所述待检查节点为主节点,则根据更新时间信息获取待检查节点的服务状态;
异常添加模块,用于执行异常添加流程,当判定所述待检查节点处于异常状态时,通过第一数据表格中选择的第一个活跃可用的节点作为新的集群内节点;判定所述待检查节点处于异常状态后,通过PostgreSQL集群的主节点连接至所述待检查节点,并从所述第一数据表格中选择的第一个活跃可用的节点互联网协议地址,以入参形式传递至进程来执行异常添加,然后在配置文件中替换为新增节点的互联网协议地址,并同步至存储集群中的每个节点
异常删除模块,用于更新数据库,并删除异常节点。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法。
10.一种电子终端,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使终端执行如权利要求1至7中任一项所述方法。
CN202010953158.6A 2020-09-11 2020-09-11 一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端 Active CN112084072B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010953158.6A CN112084072B (zh) 2020-09-11 2020-09-11 一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010953158.6A CN112084072B (zh) 2020-09-11 2020-09-11 一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端

Publications (2)

Publication Number Publication Date
CN112084072A CN112084072A (zh) 2020-12-15
CN112084072B true CN112084072B (zh) 2021-05-28

Family

ID=73737729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010953158.6A Active CN112084072B (zh) 2020-09-11 2020-09-11 一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端

Country Status (1)

Country Link
CN (1) CN112084072B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667353A (zh) * 2020-12-28 2021-04-16 紫光云技术有限公司 一种解决postgresql高可用节点宕机恢复的方法
CN113535474B (zh) * 2021-06-30 2022-11-11 重庆紫光华山智安科技有限公司 异构云存储集群故障自动修复的方法、系统、介质及终端
CN113377702B (zh) * 2021-07-06 2024-03-22 安超云软件有限公司 两节点集群启动的方法及装置、电子设备和存储介质
CN113626238B (zh) * 2021-07-23 2024-02-20 济南浪潮数据技术有限公司 ctdb服务健康状态监控方法、系统、装置及存储介质
CN114357049B (zh) * 2022-01-07 2024-01-19 苏州浪潮智能科技有限公司 一种存储集群互联方法、装置、计算机设备和存储介质
CN115473802B (zh) * 2022-09-13 2024-02-23 重庆紫光华山智安科技有限公司 节点管理方法、系统、设备及存储介质
CN116155695A (zh) * 2023-04-19 2023-05-23 杭州美创科技股份有限公司 集群多节点管理方法、装置、计算机设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392748B2 (en) * 2009-10-06 2013-03-05 Microsoft Corporation Reliable media streaming
CN102164116B (zh) * 2010-03-30 2013-11-13 青岛海信传媒网络技术有限公司 均衡负载的方法、系统及相应设备
CN104503965B (zh) * 2014-10-16 2017-08-29 杭州斯凯网络科技有限公司 PostgreSQL高弹性的高可用及负载均衡实现方法
CN105224637A (zh) * 2015-09-24 2016-01-06 珠海许继芝电网自动化有限公司 一种基于PostgreSQL数据库的主备/集群应用的综合性方法
CN108964948A (zh) * 2017-05-19 2018-12-07 北京金山云网络技术有限公司 主从服务系统、主节点故障恢复方法及装置
CN107948017A (zh) * 2017-09-30 2018-04-20 用友金融信息技术股份有限公司 高可用集群系统

Also Published As

Publication number Publication date
CN112084072A (zh) 2020-12-15

Similar Documents

Publication Publication Date Title
CN112084072B (zh) 一种提高PostgreSQL集群容灾能力的方法、系统、介质及终端
CN104935654B (zh) 一种服务器集群系统中的缓存方法、写入点客户端和读客户端
CN107870829B (zh) 一种分布式数据恢复方法、服务器、相关设备及系统
CN103138912B (zh) 数据同步方法及系统
CN105814544B (zh) 用于支持分布式数据网格中的持久化分区恢复的系统和方法
US10846185B2 (en) Method for processing acquire lock request and server
CN111200532A (zh) 数据库集群节点主从切换的方法、装置、设备和介质
CN109976941B (zh) 一种数据恢复方法和装置
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
CN107623703B (zh) 全局事务标识gtid的同步方法、装置及系统
WO2019020081A1 (zh) 分布式系统及其故障恢复方法、装置、产品和存储介质
US11892982B2 (en) Facilitating immediate performance of volume resynchronization with the use of passive cache entries
CN109062727B (zh) 一种数据同步系统及方法
CN105069152A (zh) 数据处理方法及装置
CN110351313B (zh) 数据缓存方法、装置、设备及存储介质
CN113330426B (zh) 一种备份数据的方法、装置和系统
CN107943615B (zh) 基于分布式集群的数据处理方法与系统
CN116389233A (zh) 容器云管理平台主备切换系统、方法、装置和计算机设备
CN111488247A (zh) 一种管控节点多次容错的高可用方法及设备
CN111752892A (zh) 分布式文件系统及其实现方法、管理系统、设备及介质
CN113596195B (zh) 公共ip地址管理方法、装置、主节点及存储介质
CN111208949B (zh) 一种确定分布式存储系统中的数据回滚时段的方法
CN109254880A (zh) 一种处理数据库宕机的方法及装置
CN112131201A (zh) 一种网络附加存储高可用性的方法、系统、设备及介质
CN114363356B (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
GR01 Patent grant
GR01 Patent grant