一种PostgreSQL高可用性的实现方法与流程

文档序号:22627629发布日期:2020-10-23 19:36阅读:来源:国知局

技术特征:

1.一种postgresql高可用性的实现方法,其特征在于,该方法基于客户端、哨兵单元、代理单元、postgresql集群和存储单元五个部分;

所述客户端通过代理单元读取存储单元上的信息,从而访问数据库集群;

哨兵单元实时监控主库和从库存活状态,如果主库宕机,实现主库故障自动切换,并且在切换过程中,补偿差异数据,从而保证在主库故障时不丢失数据;

所述数据库集群为层级数据库主从复制集群,主库处理读写请求,从库作为备库,或接收读请求。

2.根据权利要求1所述的一种postgresql高可用性的实现方法,其特征在于,所述哨兵单元包含以下模块:

哨兵节点初始化模块,用于实现哨兵节点的初始化;

初始化哨兵集群模块,用于实现哨兵集群模块的初始化;

哨兵节点状态检测模块,用于对哨兵节点的状态进行检测;

选择领导哨兵模块,用于选择领导哨兵;

管理主库节点模块,用于管理主库节点;

管理从库节点模块,用于管理从库节点;

选举新主库模块,用于选举新主库;

获取差异数据模块,用于获取差异数据;

补偿差异数据模块,用于补偿差异数据;

重建从库服务模块,用于冲减从库服务。

3.根据权利要求2所述的一种postgresql高可用性的实现方法,其特征在于,基于权利要求1所述的系统,所述哨兵节点初始化模块的步骤如下:

启动每个哨兵节点时,需要传入以下参数:哨兵端口,主库ip和端口,用户名密码以及主库标识符;

启动后,该哨兵节点和主库建立通信,获取到主库和从库节点信息,保存在存储单元里;其中,存储单元保存了主库ip,端口,主库标识符,状态和增量日志文件名;从库的ip,端口,从库标识符,状态,增量日志文件名和同步偏移量。

4.根据权利要求2所述的一种postgresql高可用性的实现方法,其特征在于,所述初始化哨兵集群模块的步骤如下:

哨兵节点初始化模块运行结束后,执行如下操作:根据传入的存储单元标识符信息,读取主库和从库信息后与主库从库进行通讯,在指定时间内收到回复,表示状态为存活,否则为故障。

5.根据权利要求2所述的一种postgresql高可用性的实现方法,其特征在于,所述哨兵节点状态检测模块的步骤如下:

根据哨兵列表,每个哨兵节点周期性检测其他哨兵节点状态,并更新哨兵列表,检测方式是执行ping命令,在限定时间内返回成功结果,表示存活,否则表示故障;

选择领导哨兵模块的步骤如下:

功能:首先调用哨兵节点状态检测模块,检测和主库同机部署的哨兵的存活状态,如果状态为存活,那么该哨兵的角色就是领导哨兵;否则,从哨兵列表里选择第一个存活哨兵节点,作为领导哨兵,如果没有获取到领导哨兵,返回错误;否则返回领导哨兵节点的ip和端口。

6.根据权利要求2所述的一种postgresql高可用性的实现方法,其特征在于,所述管理主库节点模块的步骤如下:

首先调用选择领导哨兵模块,得到领导哨兵,然后,领导哨兵周期性执行该模块,比对主库节点和主库列表,如果不一致,则更新主库信息;如果主库状态为存活,返回成功,否则调用选举新主库模块,选择新主库;

管理从库节点模块的步骤如下:

领导哨兵周期性执行该模块,该模块功能如下:该模块首先调用管理主库节点模块,获取主库ip和端口信息,然后根据层级数据库自身的接口,获取到所有从库的ip和端口,状态和同步偏移量信息,并比对从库列表,如果不一致,则更新从库列表信息;从库列表里未匹配到的从库节点,将其从列表里删除。

7.根据权利要求2所述的一种postgresql高可用性的实现方法,其特征在于,所述选举新主库模块的步骤如下:

领导哨兵调用管理从库节点模块,在从库列表中选择同步偏移量最大的从库,如果多个从库的同步偏移量都等于最大同步偏移量,选择从库列表的第一个符合条件的从库作为新主库,然后调用补偿差异数据模块,否则返回错误;

获取差异数据模块的步骤如下:

领导哨兵根据存储单元主库列表中增量日志文件名,获取其最新的偏移量,比对新主库的最大同步偏移量,如果一样,表示不需要补偿增量日志,返回空值;否则,解析最大同步偏移量和故障主库最新偏移量之间的增量日志,称之为差异增量日志,返回差异增量日志信息。

8.根据权利要求2所述的一种postgresql高可用性的实现方法,其特征在于,所述补偿差异数据模块的步骤如下:

调用获取差异数据模块,如果存在差异数据,那么,调用层级数据库自身接口,同步这部分数据到新主库;否则跳过此模块,调用重建从库服务模块;

重建从库服务模块的步骤如下:

领导哨兵调用补偿差异数据模块后,根据层级数据库自身接口,所有从库重新指向新主库,重新同步新主库的数据;故障主库自动切换过程完成。

9.根据权利要求2所述的一种postgresql高可用性的实现方法,其特征在于,所述代理单元与主库建立连接函数,用于扫描存储单元主库列表,选择主库标识符对应的主库ip和端口,如果状态为故障,返回错误给客户端;否则,与主库建立连接,如果身份验证通过,建立主库连接并返回给客户端;否则,返回错误给客户端。


技术总结
本发明公开了一种PostgreSQL高可用性的实现方法,所述方法应用于一种PostgreSQL高可用性的实现系统,该系统包含客户端、代理单元、哨兵单元、PostgreSQL集群和存储单元。代理单元、哨兵单元和PostgreSQL集群都将自己的单元信息注册到存储单元中,代理单元是客户端的访问点,代理单元通过读取存储单元上的信息,始终连接到管理单元的主库上;哨兵单元通过读取存储单元上的信息实时监控主库和从库的存活状态,如果主库宕机实现主库故障自动切换,并且在切换过程中补偿差异数据,从而保证在主库故障时不丢失数据。数据库集群为层级数据库主从复制集群。本发明可实现主库故障自动切换,保证不丢失数据。

技术研发人员:王凯利;赵山;王阳
受保护的技术使用者:浪潮云信息技术股份公司
技术研发日:2020.07.01
技术公布日:2020.10.23
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1