PostgreSQL 从单机到高可用集群架构演进实践

冰川箭仙

冰川箭仙

2026-05-08

949人浏览

原创

postgresql高可用演进需依业务规模选择方案:一、流复制+keepalived适用于中小规模秒级rto;二、repmgr增强自动化运维;三、patroni+etcd适配云原生;四、pg_auto_failover简化双节点自治;五、polardb实现计算存储分离。

postgresql 从单机到高可用集群架构演进实践 - php中文网

如果您正在运行一个单机 PostgreSQL 实例,但已面临业务增长带来的停机风险、数据丢失隐患或读写瓶颈,则说明架构演进已迫在眉睫。PostgreSQL 的高可用演进并非一蹴而就的替换动作,而是围绕 WAL 日志、复制机制与集群协调能力展开的系统性升级路径。以下是覆盖主流生产场景的多种可行架构实践:

一、基于流复制 + keepalived 的主从高可用方案

该方案利用 PostgreSQL 原生流复制完成数据同步,并通过 keepalived 管理虚拟 IP(VIP)实现故障时的快速服务接管。其优势在于组件成熟、无额外数据库扩展依赖、RPO 接近零,适用于中小规模且对 RTO 要求在秒级的业务。

1、在主节点上启用 wal_level = replica,设置 max_wal_senders ≥ 2,并配置 pg_hba.conf 允许从节点 IP 发起 replication 连接。

2、使用 pg_basebackup 命令从主节点拉取基础备份,在从节点初始化数据目录并启动为热备模式(recovery.conf 或 postgresql.conf 中配置 primary_conninfo)。

3、在主从节点均部署 keepalived,主节点配置 priority 100 并声明 VIP;从节点 priority 设为 90,并启用 nopreempt 防止脑裂;所有应用连接指向该 VIP 地址。

4、验证主从同步状态:在主节点执行 SELECT * FROM pg_stat_replication;,确认 state = 'streaming' 且 sync_state = 'sync'(若启用同步复制)。

二、基于 repmgr 的自动化主从管理方案

repmgr 将流复制封装为可编程的集群生命周期管理工具,提供统一 CLI、自动故障检测、手动/自动 failover 及节点注册发现能力。它不替代复制本身,而是增强其可观测性与可控性,适合需要标准化运维流程的团队。

1、在所有节点安装 repmgr 5.3.1 及其依赖,并确保 PostgreSQL 编译时启用 --with-openssl 和 --with-libxml。

2、初始化集群:在主节点执行 repmgr -f /etc/repmgr.conf primary register,生成 repmgr.nodes 表并记录主节点元数据。

3、克隆从节点:在备用服务器运行 repmgr -h 主节点IP -U repmgr -d repmgr standby clone,自动完成备份、配置写入与服务启动。

4、启用监控服务:启动 repmgrd 守护进程,配置 monitor_interval_secs = 5,使其持续检查节点健康并根据 failure_threshold 触发提升逻辑。

三、基于 Patroni + Etcd 的云原生高可用集群

Patroni 是面向容器与云环境设计的 PostgreSQL 集群控制器,将故障转移决策委托给外部分布式协调服务(如 Etcd、ZooKeeper 或 Consul)。它支持多节点拓扑、级联复制声明、自定义恢复钩子及 REST API 集成,适用于 Kubernetes 或混合云生产环境。

1、部署 Etcd 集群(至少三节点),确保端口 2379/2380 可达,并配置 client-cert-auth = true 提升安全性。

2、为每个 PostgreSQL 节点编写 patroni.yml,指定 scope、namespace、etcd host、postgresql.bin_dir 及 recovery_conf 设置。

3、启动 Patroni 服务:执行 patroni /etc/patroni.yml,Patroni 自动完成初始化、注册、选举与状态同步。

4、验证集群视图:调用 curl http://localhost:8008/cluster,返回 JSON 中应包含当前 leader、members 列表及每个节点的 role、state 和 timeline。

四、基于 pg_auto_failover 的轻量级双节点自治方案

pg_auto_failover 专为简化双节点 HA 而生,内置 Monitor、Primary、Secondary 三角色,采用轻量级状态机驱动,无需外部依赖即可完成自动故障识别与切换。其设计目标是“开箱即用”,适合 DevOps 快速交付或边缘计算场景。

1、在独立服务器或主节点旁部署 Monitor:运行 pg_auto_failover monitor --init --pgdata /var/lib/pg_auto_failover/monitor

2、在主节点执行 pg_auto_failover node create --host 主节点IP --pgdata /var/lib/pgsql/data --monitor "postgres://autoctl_node@monitor-host:5432/pg_auto_failover"

3、在从节点重复 node create 命令,仅修改 --host 参数为本机 IP,并确保 postgresql.conf 中 wal_level = logical 且 max_replication_slots ≥ 2。

4、触发模拟故障:在主节点执行 sudo systemctl stop postgresql-14,Monitor 将在 10 秒内检测失败并自动执行 promote 操作。

五、PolarDB for PostgreSQL 计算存储分离架构部署

PolarDB 是阿里云提供的兼容 PostgreSQL 协议的云原生数据库服务,采用计算与存储分离架构,多个计算节点共享同一份底层存储,天然规避数据同步延迟问题。该方案免去复制配置与故障转移逻辑开发,由云平台统一保障 RPO=0 与 RTO

1、登录阿里云控制台,进入 PolarDB for PostgreSQL 页面,选择地域与可用区,创建集群实例(推荐版本 14 或 15)。

2、在集群配置中启用“读写分离”开关,并设置只读节点数量(支持 1–15 个弹性扩展)。

3、获取集群连接地址:主地址用于写入与强一致性读,只读地址用于最终一致性查询,两者均支持 DNS 轮询与权重配置。

4、验证高可用能力:在控制台主动重启主节点,观察只读节点是否自动接管流量,同时检查 SELECT * FROM pg_stat_activity WHERE backend_type = 'client backend'; 中连接分布变化。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.10

191

5

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

1907

19

postgresql常用命令有哪些
postgresql常用命令有哪些

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、\l、\c、\dt、\d table_name、\du、\i file_name、\e和\q等。更详细的postgresql常用命令,大家可以访问下面的文章。

2023.11.16

493

3

postgresql常用命令介绍
postgresql常用命令介绍

postgresql常用命令有\l、\d、\d5、\di、\ds、\dv、\df、\dn、\db、\dg、\dp、\c、\pset、show search_path、ALTER TABLE、INSERT INTO、UPDATE、DELETE FROM、SELECT等。想了解更多postgresql的相关内容,可以阅读本专题下面的文章。

2023.11.20

1110

6

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

2026.02.12

336

19

PostgreSQL 性能优化与查询执行计划实战
PostgreSQL 性能优化与查询执行计划实战

本专题深入解析PostgreSQL性能优化核心,聚焦查询执行计划的实战应用。通过EXPLAIN命令精准定位瓶颈,结合索引策略、SQL改写与参数调优,系统提升查询效率。从执行计划解读到性能调优全流程,助你掌握数据库性能诊断与优化实战能力。

2026.05.08

66

10

PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践
PostgreSQL 在 Next.js / Go 全栈架构中的工程化实践

本文详解如何利用Next.js(搭配Drizzle ORM)与Go后端构建高性能应用,充分发挥PG在JSONB非结构化存储与pgvector向量检索上的优势。从数据建模到Docker容器化部署,打造支持AI时代的“One Database”工程化解决方案。

2026.05.08

799

10

PostgreSQL高级特性、内核机制与现代数据架构
PostgreSQL高级特性、内核机制与现代数据架构

本专题从MVCC并发控制与WAL日志等内核机制出发,详解JSONB、PostGIS及pgvector等高级特性。探讨如何利用单一引擎支撑关系型、向量及图数据等现代数据架构需求,助您掌握构建高并发、智能化应用的核心技术。

2026.05.08

141

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习