有2种方式实现postgresql高可用
1.pgpool+Keepalived 实现postgresql 高可用集群
2.PostgreSQL_HA_with_primary_standby_2vip(参考链接:https://github.com/digoal/PostgreSQL_HA_with_primary_standby_2vip)
PostgreSQL高可用目前主要应用是基于流复制(同步/异步)是实例级别的数据同步方案
它是基于WAL流传输的物理复制,可以复制磁盘二进制数据本身中的更改;大型索引构建会创建大量WAL条目,可能会成为流复制的瓶颈。
另一种是逻辑复制,也是基于WAL流传输的复制方式,多了对WAL日志的解析,然后会基于发布订阅的方式进行表级别的数据同步;可以实现在线PG版本升级;但流复制相对更健壮,支持范围更广、更易于使用。
以上两种是PG提供的原生高可用功能,都是非共享存储的方式,流复制通常会配合第三方集群管理或监控组件来实现节点的自动监控、健康检测和自动主备切换、恢复,譬如轻量级的Repmgr、etcd+partroni等,值得提及的是Repmgr 国内有产品厂商进行了优化完善,并已经开源。参考链接:https://pgfans.cn/a?id=430
PG其它高可用方案包括:文件系统(块设备)复制DRBD、基于语句的复制中间件Pgpool-II、基于触发器的主备复制Slony-I、异步多主控机复制Bucardo
PG的分布式再实现负载均衡的同时,也会实现节点(分片)冗余高可用,其中包括GP、PGXL、Citus、Tbase,其整体架构也会融合流复制。
收起1、 PostgreSQL 流复制模式 ,适用于: 写操作为主的业务场景
2、 PostgreSQL 流复制 +Pgpool 模式 ,适用于: 小型数据仓库、数据统计、分析为主的业务需求
3、 Postgres-XL 集群模式 ,适用于: 大数据量的并行分布式存储、计算业务场景
4、 Slony-I 复制模式 , 适用于: PG 数据库不同版本之间数据同步