温馨提示×

centos如何集群部署postgresql

小樊
35
2026-09-09 10:25:50
栏目: 云计算

在 CentOS 上集群部署 PostgreSQL,需要先明确你说的“集群”是指哪一种:

  1. 主从复制(一主多从,读写分离) —— 最常用
  2. 高可用集群(自动故障转移,如 Patroni + etcd)
  3. 负载均衡 / 连接池(Pgpool-II / HAProxy)
  4. 分布式 PostgreSQL(Citus)

下面我先给你 最常用、生产可用的方案:CentOS + PostgreSQL 流复制(主从),再补充高可用方案。


一、环境准备(示例)

节点 IP 角色
node1 192.168.1.10 主库(Primary)
node2 192.168.1.11 从库(Standby)

系统:CentOS 7 / 8
PostgreSQL:15(示例)


二、所有节点:安装 PostgreSQL

# CentOS 7/8
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf install -y postgresql15-server postgresql15

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15

三、主库配置(node1)

1. 修改 postgresql.conf

listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB

2. 配置 pg_hba.conf

host replication repluser 192.168.1.0/24 md5

3. 创建复制用户

sudo -u postgres psql
CREATE ROLE repluser WITH REPLICATION PASSWORD 'pwd123' LOGIN;

4. 启动主库

sudo systemctl start postgresql-15

四、从库配置(node2)

1. 停止并清空数据目录

sudo systemctl stop postgresql-15
rm -rf /var/lib/pgsql/15/data/*

2. 基础备份

sudo -u postgres pg_basebackup \
  -h 192.168.1.10 \
  -U repluser \
  -D /var/lib/pgsql/15/data \
  -P -R

3. 启动从库

sudo systemctl start postgresql-15

✅ 此时已建成 主从集群


五、验证复制状态

主库:

SELECT * FROM pg_stat_replication;

从库:

SELECT pg_is_in_recovery();
-- 返回 t 表示从库

六、高可用集群(推荐生产方案)

如果你要 自动故障转移,推荐:

✅ Patroni + etcd + PostgreSQL

  • 自动选主
  • 故障秒级切换
  • 云原生友好

架构:

etcd (3节点)
Patroni (每PG节点一个)
PostgreSQL

七、读写分离 / 负载均衡

可选组件:

  • Pgpool-II(查询路由)
  • HAProxy + Keepalived

八、分布式 PostgreSQL(可选)

如果需要:

  • 跨节点分片
  • 大数据量

使用 Citus

dnf install citus_15

九、总结建议

场景 推荐方案
简单容灾 流复制
高可用 Patroni
读写分离 Pgpool-II
分布式 Citus

如果你愿意,可以告诉我:

  • CentOS 版本
  • PostgreSQL 版本
  • 是否要 自动故障切换
  • 几台机器

我可以直接给你 一步步可执行的部署脚本

0