PostgreSQL数据库的服务状态确定系统和方法技术方案

技术编号:33438746 阅读:11 留言:0更新日期:2022-05-19 00:26
本发明专利技术公开了PostgreSQL数据库的服务状态确定系统和方法,由于该系统中的第一设备向第二设备的目标IP地址发送ping数据包,第二设备接收第一设备发送的ping数据包,并向第一设备发送第一响应信息,若接收到目标IP地址返回的第一响应信息,则确定第二设备的网络正常,向目标IP地址发送预先定义可执行的SQL语句,第二设备接收第一设备发送的SQL语句,若无法执行SQL语句则将第二响应信息发送给第一设备,第一设备若接收到目标IP地址返回的无法执行的第二响应信息,则确定PostgreSQL数据库处于假死状态,从而解决了现有技术中无法识别PostgreSQL数据库是否处于假死状态的问题。PostgreSQL数据库是否处于假死状态的问题。PostgreSQL数据库是否处于假死状态的问题。

【技术实现步骤摘要】
PostgreSQL数据库的服务状态确定系统和方法


[0001]本专利技术涉及数据库
,尤其涉及PostgreSQL数据库的服务状态确定系统和方法。

技术介绍

[0002]PostgreSQL数据库是开源的关系型数据库,满足关系型数据库的ACID要求,同时功能全面、强大,可满足多种生产环境的需求,支持二次开发,市场占有率高。但是在系统高可用方面,官方并没有提供现成的解决方案,市场上高可用的方案,大多数由第三方提供。
[0003]生产环境中常见的高可用系统有以下几种:
[0004]基于主备用服务器共享存储设备的双机热备技术,该方案使用共享存储设备作为数据统一的存储后端,共享存储通常使用磁盘阵列或存储区域网SAN,把共享存储设备通过双机软件同时挂载到主备服务器,但是任意时刻只有一个服务器可以得到对共享存储设备的读写权,业务数据实际只保存一份。在平时工作状态,主服务器处于工作状态(即Active状态),备服务器处于监控准备状态(即Standby状态),两台服务器提供一个VIP给外部应用访问。在主服务器由于某种原因出现故障时,通过软件或手动方式将备服务器激活,同时让备服务器获得对共享存储的读写权限,保证系统在短时间内恢复正常。从而达到系统高可用的目标。
[0005]基于日志的主备数据库复制技术,该方案是比较经典的主从方案,主数据库和备数据库各自独立存储一份业务数据在本地。在主库和备库之间采用传输日志的方式实现数据同步。当主库有数据变更时,在主库的数据提交后,会把相对应的变更日志发送给备库,备库根据接收变更日志恢复自身的数据,从而达到主备数据一致。在主库出现故障时,切换到备库继续提供服务。
[0006]基于操作系统级别的数据块同步技术。这个方案的典型场景就是分布式块设备复制(DRBD),可以理解为操作系统级别的RAID1。它是一种基于软件的、基于网络的块复制存储解决方案,主要用于在服务器之间的磁盘、分区、逻辑卷等进行数据镜像。当用户将数据写入本地磁盘时,系统会将变更的数据块发送到网络中另一台主机的磁盘上,这样本地主机(主节点)与远程主机(备节点)的数据就可以保证实时同步,当本地主机出现问题,远程主机上还保留着一份相同的数据,可以继续使用,保证了数据的安全。
[0007]现有技术中的一种构建PostgreSQL数据库高可用的方法中,引进了开源工具组件(repmgr),集群的全部管理任务都依赖于repmgr组件。repmgr组件可检测网络断开、外部存储掉线、系统掉电等问题,但是当PostgreSQL数据库处于假死状态时,repmgr组件不能检测出PostgreSQL数据库是否处于假死状态,其中假死状态是指数据库进程存在但无法执行SQL的情况。
[0008]因此如何识别PostgreSQL数据库是否处于假死状态就成为亟待解决的问题。

技术实现思路

[0009]本专利技术提供了一种PostgreSQL数据库的服务状态确定系统、方法、装置、设备和介质,用以解决现有技术中无法识别PostgreSQL数据库是否处于假死状态的问题。
[0010]本专利技术提供了一种PostgreSQL数据库的服务状态确定系统,所述系统包括:第一设备和第二设备,其中所述第一设备和所述第二设备均部署有PostgreSQL数据库;
[0011]所述第一设备,用于获取预先保存的所述第二设备的目标IP地址,向所述目标IP地址发送ping数据包,若接收到所述目标IP地址返回的第一响应信息,则向所述目标IP地址发送预先定义可执行的结构化查询语言SQL语句,若接收到所述目标IP地址返回的无法执行的第二响应信息,则确定所述第二设备中部署的PostgreSQL数据库处于假死状态;
[0012]所述第二设备,用于接收所述第一设备发送的所述ping数据包,并向所述第一设备发送所述第一响应信息,接收所述第一设备发送的所述SQL语句,若无法执行所述SQL语句则将所述第二响应信息发送给所述第一设备。
[0013]进一步地,所述第一设备,还用于若在第一设定时长内未接收到所述目标IP地址返回的所述第一响应信息,则确定所述第二设备网络异常导致所述第二设备中部署的PostgreSQL数据库处于异常状态。
[0014]进一步地,所述第二设备,还用于若所述SQL语句执行成功,则向所述第一设备发送执行成功的第三响应信息;
[0015]所述第一设备,还用于若接收到所述目标IP地址返回的所述第三响应信息,则确定所述第二设备中部署的PostgreSQL数据库处于正常服务状态。
[0016]进一步地,所述第一设备,还用于获取自身当前的角色,若自身当前的角色为主节点角色,若在第二设定时长内所述第二设备中部署的PostgreSQL数据库连续处于非正常服务状态的次数大于第一预设次数阈值,则控制所述第二设备中部署的PostgreSQL数据库进行异常恢复,其中所述非正常服务状态包括所述假死状态和所述异常状态。
[0017]进一步地,所述第一设备,具体用于向所述目标IP地址发送增量恢复指令;若接收到所述目标IP地址返回的增量恢复成功的第一反馈信息,则确定所述第二设备异常恢复成功;若接收到所述目标IP地址返回的增量恢复失败的第二反馈信息,则向所述目标IP地址发送全量恢复指令;若接收到所述目标IP地址返回的全量恢复成功的第三反馈信息,则确定所述第二设备异常恢复成功;若接收到全量恢复失败的第四反馈信息,则确定所述第二设备异常恢复失败;
[0018]所述第二设备,还用于接收所述增量恢复指令并进行增量恢复,若增量恢复成功则将所述第一反馈信息发送给所述第一设备,若增量恢复失败则将所述第二反馈信息发送给所述第一设备;接收所述全量恢复指令并进行全量恢复,若全量恢复成功则将所述第三反馈信息发送给所述第一设备,若全量恢复失败则将所述第四反馈信息发送给所述第一设备。
[0019]进一步地,所述第一设备,还用于获取自身当前的角色,若自身当前的角色为从节点角色,若在第三设定时长内所述第二设备中部署的PostgreSQL数据库连续处于非正常服务状态的次数大于第二预设次数阈值,则将所述自身当前的角色切换为主节点角色,其中所述非正常服务状态包括所述假死状态和所述异常状态。
[0020]进一步地,所述第一设备,还用于若在所述第三设定时长内所述第二设备中部署
的PostgreSQL数据库连续处于所述异常状态的次数大于所述第二预设次数阈值,则向所述目标IP地址发送所述ping数据包,若在所述第一设定时长内接收到所述目标IP地址返回的所述第一响应信息,确定所述第二设备网络恢复并进行双主恢复。
[0021]进一步地,所述第一设备和所述第二设备中的任一设备,用于将自身的PostgreSQL数据库中的第一数据量、第一启动时间和第一IP地址发送给另一设备,并接收另一设备发送的PostgreSQL数据库中的第二数据量、第二启动时间和第二IP地址,若所述第一数据量大于所述第二数据量,则确定自身对应的角色为主节点角色,另一设备对应的角色为从节点角本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种PostgreSQL数据库的服务状态确定系统,其特征在于,所述系统包括:第一设备和第二设备,其中所述第一设备和所述第二设备均部署有PostgreSQL数据库;所述第一设备,用于获取预先保存的所述第二设备的目标IP地址,向所述目标IP地址发送ping数据包,若接收到所述目标IP地址返回的第一响应信息,则向所述目标IP地址发送预先定义可执行的结构化查询语言SQL语句,若接收到所述目标IP地址返回的无法执行的第二响应信息,则确定所述第二设备中部署的PostgreSQL数据库处于假死状态;所述第二设备,用于接收所述第一设备发送的所述ping数据包,并向所述第一设备发送所述第一响应信息,接收所述第一设备发送的所述SQL语句,若无法执行所述SQL语句则将所述第二响应信息发送给所述第一设备。2.根据权利要求1所述的系统,其特征在于,所述第一设备,还用于若在第一设定时长内未接收到所述目标IP地址返回的所述第一响应信息,则确定所述第二设备网络异常导致所述第二设备中部署的PostgreSQL数据库处于异常状态。3.根据权利要求1所述的系统,其特征在于,所述第二设备,还用于若所述SQL语句执行成功,则向所述第一设备发送执行成功的第三响应信息;所述第一设备,还用于若接收到所述目标IP地址返回的所述第三响应信息,则确定所述第二设备中部署的PostgreSQL数据库处于正常服务状态。4.根据权利要求2所述的系统,其特征在于,所述第一设备,还用于获取自身当前的角色,若自身当前的角色为主节点角色,若在第二设定时长内所述第二设备中部署的PostgreSQL数据库连续处于非正常服务状态的次数大于第一预设次数阈值,则控制所述第二设备中部署的PostgreSQL数据库进行异常恢复,其中所述非正常服务状态包括所述假死状态和所述异常状态。5.根据权利要求4所述的系统,其特征在于,所述第一设备,具体用于向所述目标IP地址发送增量恢复指令;若接收到所述目标IP地址返回的增量恢复成功的第一反馈信息,则确定所述第二设备异常恢复成功;若接收到所述目标IP地址返回的增量恢复失败的第二反馈信息,则向所述目标IP地址发送全量恢复指令;若接收到所述目标IP地址返回的全量恢复成功的第三反馈信息,则确定所述第二设备异常恢复成功;若接收到全量恢复失败的第四反馈信息,则确定所述第二设备异常恢复失败;所述第二设备,还用于接收所述增量恢复指令并进行增量恢复,若增量恢复成功则将所述第一反馈信息发送给所述第一设备,若增量恢复失败则将所述第二反馈信息发送给所述第一设备;接收所述全量恢复指令并进行全量恢复,若全量恢复成功则将所述第三反馈信息发送给所述第一设备,若全量恢复失败则将所述第四反馈信息发送给所述第一设备。6.根据权利要求2所述的系统,其特征在于,所述第一设备,还用于获取自身当前的角色,若自身当前的角色为从节点角色,若在第三设定时长内所述第二设备中部署的PostgreSQL数据库连续处于非正常服务状态的次数大于第二预设次数阈值,则将所述自身当前的角色切换为主节点角色,其中所述非正常服务状态包括所述假死状态和所述异常状态。7.根据权利要求6所述的系统,其特征在于,所述第一设备,还用于若在所述第三设定时长内所述第二设备中部署的PostgreSQL数据库连续处于所述异常状态的次数大于所述第二预设次数阈值,则向所述目标IP地址发送所述ping数据包,若在所述第一设定时长内
接收到所述目标IP地址返回的所述第一响应信息,确定所述第二设备网络恢复并进行双主恢复。8.根据权利要求7所述的系统,其特征在于,所述第一设备和所述第二设备中的任一设备,用于将自身的PostgreSQL数据库中的第一数据量、第一启动时间和第一IP地址发送给另一设备,并接收另一设备发送的PostgreSQL数据库中的第二数据量、第二启动时间和第二IP地址,若所述第一数据量大于所述第二数据量,则确定自身对应的角色为主节点角色,另一设备对应的角色为从节点角色;若所述第一数据量等于所述第二数据量、且所述第一启动时间早于所述第二启动时间,则确定自身对应的角色为主节点角色,另一设备对应的角色为从节点角色;若所述第一数据量等于所述第二数据量、所述第一启动时间等于所述第二启动时间、且所述第一IP地址小于所述第二IP地址,则确定自身对应的角色为主节点角色,另一设备对应的角色为从节点角色。9.一种PostgreSQL数据库的服务状态确定方法,其特征在于,所述方法包括:获取预先保存的所述第二设备的目标IP地址;向所述目标IP地址发送ping数据包,若接收到所...

【专利技术属性】
技术研发人员:江惠中陈王鑫
申请(专利权)人:浙江大华技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1