pg高可用概述
概述
- 作为开源关系型数据库,pg广受开发者的喜爱,而涉及pg高可用的软件也很多,比如 keepalived、HAProxy、PgBouncer、PAF(PostgreSQL Automatic Failover)、Pgpool-II、Citus,而使用最多的是 Repmgr 和 Patroni
- 通常,Repmgr 用于热机主备,Patrnoi 用于故障自动切换
- 针对网络不稳定导致丢包或者主机频繁切换的场景,建议选择 patroni,因为repmgr切换之后需要重置一些配置才可以再次failover
对比项 | Patrnoi | Repmgr |
---|---|---|
两节点支持 | 不建议,起步三节点 | 支持 |
需要安装分布式 | 需要 | 不需要,日志及节点信息存储在本地PG的repmgr库中 |
手动切换 | 可以 | 强 |
自动切换 | 可以 | 启用repmgrd |
多次failover | 可以 | 不可以 |
配置文件修改 | 一般 | 灵活 |
Repmgr
Repmgr 是一个用于管理和监控基于流复制的pg集群的工具。其本质上是一个运行在pg库上的进程。它在每个pg库上都需要运行一个repmgrd进程来管理和监控库的状态、复制关系以及执行故障检测和切换等操作。
Patrnoi
Patroni 是一个开源的pg集群管理工具,它提供了自动化的高可用性和故障切换解决方案。它基于zooKeeper、etcd或consul等分布式协调服务,通过监控主库的状态并自动执行故障切换操作,确保pg集群的高可用性和连续性。可通过pg + etcd + patroni + haproxy + keepalived来实现pg的高可用集群。