在 CentOS 下做 PostgreSQL 集群,常见方案有 主从复制(流复制)、PGPool-II、Patroni + etcd 等。下面按“从简单到高可用”给你一个清晰路线。
适合:读多写少、容灾
# 安装
yum install -y postgresql-server
# 初始化
postgresql-setup initdb
修改 postgresql.conf:
listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
修改 pg_hba.conf:
host replication repluser 192.168.1.11/32 md5
创建复制用户:
CREATE ROLE repluser LOGIN REPLICATION PASSWORD 'password';
pg_basebackup -h 192.168.1.10 -U repluser -D /var/lib/pgsql/data -P -R
启动从库:
systemctl start postgresql
✅ 此时已是一主一从
适合:提高读性能
应用 → PGPool-II → 主库 + 从库
yum install -y pgpool-II
⚠️ 不自带自动选主,需脚本配合
业界主流方案
etcd(选主)
Patroni(管理PG)
HAProxy(统一入口)
yum install -y etcd patroni
patroni.yml:
scope: pg-cluster
name: pg1
etcd:
hosts: 192.168.1.10:2379
restapi:
listen: 0.0.0.0:8008
postgresql:
listen: 0.0.0.0:5432
data_dir: /var/lib/pgsql/data
| 方案 | 复杂度 | 高可用 | 读写分离 | 推荐度 |
|---|---|---|---|---|
| 流复制 | ⭐ | ❌ | ❌ | ⭐⭐⭐ |
| PGPool | ⭐⭐ | ⚠️ | ✅ | ⭐⭐⭐⭐ |
| Patroni | ⭐⭐⭐ | ✅ | ✅ | ⭐⭐⭐⭐⭐ |
如果你愿意,可以告诉我:
✅ CentOS 版本
✅ PostgreSQL 版本
✅ 节点数量
✅ 是否需要自动故障切换
我可以直接给你 一步一步可执行的命令。