核心结论:Patroni 适合大规模、高可靠性要求的场景,Repmgr 适合中小规模、追求简单易用的场景。
一、核心架构对比
| 维度 | Repmgr | Patroni |
|---|---|---|
| 架构设计 | 传统主备模型,通过 repmgrd 守护进程监控 | 基于分布式共识协议(Raft/Paxos),依赖 DCS(如etcd) |
| 元数据存储 | 存储在 PostgreSQL 的 repmgr 库中 | 由 DCS 统一管理,强一致性保障 |
| 脑裂防护 | 需配置 Witness 见证节点 | 通过 DCS 选举机制天然规避脑裂 |
| 最小节点数 | 2 节点即可部署 | 至少 3 节点(PostgreSQL + DCS) |
二、关键特性差异
Repmgr 优势:
-
安装简单,仅需 PostgreSQL + repmgr 包
-
无额外端口需求,通信通过 SSH 或流复制端口
-
轻量化,运维成本低
-
适合传统主备模式,类似 Oracle DG
Patroni 优势:
-
端到端自动化,支持自动故障转移和节点恢复
-
基于分布式协议,网络分区时决策更可靠
-
原生支持 Kubernetes 等云原生环境
-
提供 REST API,便于二次开发和监控集成
三、适用场景建议
选择 Repmgr 当:
-
集群规模小(2-5 节点)
-
运维团队熟悉传统主备模式
-
追求轻量化,避免第三方组件依赖
-
非关键业务场景
选择 Patroni 当:
-
集群规模 ≥3 节点,需高可靠选主机制
-
基础设施网络稳定
-
需云原生集成(如 Kubernetes)
-
核心业务系统,对自动化要求高
四、实际部署建议
Repmgr 部署要点:
-
配置 Witness 节点以提升脑裂防护能力
-
配合 pg_rewind 处理数据同步
-
建议通过 Keepalived 或 HAProxy 管理 VIP
Patroni 部署要点:
-
需独立部署 DCS 集群(如 3 节点 etcd)
-
配置 Watchdog 机制防止双主风险
-
严格监控 Patroni 进程状态
-
配合 VIP 或负载均衡器实现应用无感知切换
五、生产环境最佳实践
无论选择哪种方案,都应遵循以下原则:
-
充分测试:在准生产环境模拟各种故障场景
-
全面监控:覆盖数据库指标和 HA 组件本身
-
文档化流程:清晰记录集群架构和恢复步骤
-
定期演练:故障转移演练应常态化
-
备份策略:高可用不等于数据备份,必须建立独立备份机制
最终建议:中小规模非关键业务优先选择 Repmgr,大规模核心系统或云原生环境选择 Patroni。