postgresql 的复制功能是比较全面的,物理流,逻辑复制,复制槽,全INSTANCE ,单表。但最近群里面的经常会问一个问题,到底高可用的方式PG 用哪个,哪个好用,你们用哪个诸如此类的问题。
本着这个问题,想和大家一起来学习一下,当前的PG的主流的高可用方式有哪些,并做一下对比。
高可用的方式大致可以分为两种方式:1 自主方式 2 脚本 第三方软件方式
而提供高可用的公司和方法的主要总结可以有以下四种
1 ClusterLabs
2 2ndQuadrant
3 Zalando
4 SRA OSS
1 ClusterLabs的PG高可用 主要是通过PAF (通过perl 语言撰写的脚本) 将PG 中复制节点的状态发送给 Pacemaker 来管理和监控PG中各个节点的状态,在主节点DOWN机,并无法恢复的情况下,进行standby节点的升级。
2 2ndQuadrant公司的高可用软件是开源的软件名为repmgr,他是一个独立的软件,并且需要安装在PG的所有节点中,软件的功能强大除了进行FAILOVER的操作功能以外,还可以进行手动的主从节点的FAILOVER,以及PG的级联设置,(类似于MYSQL的 主-从-从)都是可以简单命令化的方式进行。
3 Zalando 's Patroni 是通过Python 编写的一套程序,他可以通过zookeeper, etcd 等分布式软件来对postgresql 数据库来进行自动化的FAILOVER 以及故障恢复后的,节点在恢复建立自动化等操作。
4 SRA OSS 的 PGPOOL是一款PG的缓冲池和连接池软件 ,估计PGPOOL 在业内的的名气是很大的,不少初学者的第一个PG 的高可用的搭建的测试都是来自于pgpool, 其实本身pgpool 主要的功能是PGde 连接缓冲池的功能,而这套软件也是需要安装到PG中的,他也可以进行PG的物理复制的故障节点的切换等工作。
这四种FAILOVER 的方式各有各的特点,从划分上 背后有专业的公司背景的有 PGPOOL, REPMGR, APF , 而从是否需要安装第三方或基于第三方软件的基础而通过脚本的方式进行PG 的高可用的方式的,是 Patroni 和 APF
本身就有切换和判断节点失败功能的是 PGPOOL 和 repmgr 两种软件。
这四款方式中 APF 来自于美国开源集群软件组织, REPMGR 来自于(英国 美国)一家专门服务于POSTGRESQL 的公司,类似于percona 这样的公司,Patroni 来自于德国,一家时尚类购物网站的开源产品,PGPOOL 产品来自于日本一家长达10年专注于POSTGRESQL 服务的公司。
其中这几种软件均可以达到自动切换损坏的主节点,并且提升从库作为主库的功能,但这些软件也都不具备类似 MONGODB 在主节点损坏后,自动选主后的对应用的透明切换和不需要应用进行更换访问节点工作,意思是这四种方式后,你的找到与MYSQL 中间件类似 PROXYSQL 的软件,或者类似 MHA 后的VIP 虚拟IP 以及切换的脚本或相关方式。
注:以下文字仅仅是个人感官和尝试后的总结,没有任何倾向性,没有评价性,仅仅是个人尝试和相关的感官的记录。
从文档的完整性来说patroni 的广泛度比较高,如果你有问题,G 一下基本上都可以找到相关的问题答案或者建议, PGPOOL 作为一家专业的服务POSTGRESQL 的公司文档方面是很齐全的,但不知是为什么出了问题 G 中得到的答案不是很多,或很有效,并且有些是日文,代入感比较弱。repmgr 作为一家大型的GLOBAL的服务于POSTGRESQL 的公司的产品,文档比较全,并且这是唯一一个仅仅通过官方文档就能安装并开始使用的软件。APF 未使用,不能给出相关的感官。
以上软件中,APF 没有进行使用过,PGPOOL 在搭建中遇到很多困难最后虽然安装成功,但配置指示信息的缺失,和各种怪异的错误,让软件在PG上的工作不是很顺利,并且故障切换后的节点修复也是比较困难,个人不会再使用此软件作为FAILOVER的首选, Patroni 目前还在测试中,并且由于各种依赖包和 python安装中的问题,在安装的初期遇到一些小问题。Repmgr 在软件的安装初期和使用中,基本上没有遇到难搞的问题,并且软件在使用和主从切换中,命令简单,有效,比较容易上手,纯个人感觉。
接下来准备开始写一些 REPMGR 方面的关于 POSTGRESQL 高可用,级联方面的文字。