SRE & AI 实践录

PostgreSQL 高可用架构设计与实践

· 更新于 2026-08-01 ⏱️ 阅读约 2 分钟 (541 字) PostgreSQL 高可用 数据库

设计 PostgreSQL 高可用架构,涵盖流复制、故障转移、负载均衡和备份恢复策略

在生产环境中,数据库的高可用是系统稳定性的基石。PostgreSQL 提供了原生流复制能力,结合 Patroni、pgpool-II 等工具,可以构建企业级的高可用数据库集群。

流复制配置

PostgreSQL 的流复制(Streaming Replication)通过 WAL 日志的实时传输实现主备同步。以下是基本配置步骤:

sql
-- 在主库上创建复制用户
CREATE ROLE replicator WITH LOGIN REPLICATION PASSWORD 'secure_password';

-- 主库 postgresql.conf 配置
-- wal_level = replica
-- max_wal_senders = 5
-- wal_keep_size = 1024   -- MB

-- 备库配置通过 pg_basebackup 初始化
-- pg_basebackup -h primary_host -D /var/lib/postgresql/data \\
--   -U replicator -P -v -R

-- 备库 postgresql.conf 配置
-- primary_conninfo = 'host=primary_host port=5432 user=replicator password=secure_password'
-- hot_standby = on

-- 查看复制状态
SELECT client_addr, state, sync_state, write_lag
FROM pg_stat_replication;

Patroni 高可用管理

Patroni 使用分布式共识存储(etcd 或 Consul)来管理 PostgreSQL 集群。当主库故障时,Patroni 自动执行领导者选举,在 30 秒内完成故障转移,确保服务持续可用。它还提供了 REST API 用于集群管理和监控。

连接池与备份

pgpool-II 提供连接池、读写分离和负载均衡功能,将读请求分发到只读副本,写请求路由到主库。pgBackRest 支持增量备份和并行恢复,实现 RPO 接近零的备份策略。结合以上工具,PostgreSQL 集群可以实现 99.99% 以上的可用性。

本文作者:技术领航员 | 许可协议:CC BY-NC-SA 4.0

本文链接:https://sreai.net/zh/posts/postgresql-ha/(转载请注明出处)