在 CentOS 上集群部署 PostgreSQL,需要先明确你说的“集群”是指哪一种:
下面我先给你 最常用、生产可用的方案:CentOS + PostgreSQL 流复制(主从),再补充高可用方案。
| 节点 | IP | 角色 |
|---|---|---|
| node1 | 192.168.1.10 | 主库(Primary) |
| node2 | 192.168.1.11 | 从库(Standby) |
系统:CentOS 7 / 8
PostgreSQL:15(示例)
# 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
listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
host replication repluser 192.168.1.0/24 md5
sudo -u postgres psql
CREATE ROLE repluser WITH REPLICATION PASSWORD 'pwd123' LOGIN;
sudo systemctl start postgresql-15
sudo systemctl stop postgresql-15
rm -rf /var/lib/pgsql/15/data/*
sudo -u postgres pg_basebackup \
-h 192.168.1.10 \
-U repluser \
-D /var/lib/pgsql/15/data \
-P -R
sudo systemctl start postgresql-15
✅ 此时已建成 主从集群
主库:
SELECT * FROM pg_stat_replication;
从库:
SELECT pg_is_in_recovery();
-- 返回 t 表示从库
如果你要 自动故障转移,推荐:
架构:
etcd (3节点)
Patroni (每PG节点一个)
PostgreSQL
可选组件:
如果需要:
使用 Citus
dnf install citus_15
| 场景 | 推荐方案 |
|---|---|
| 简单容灾 | 流复制 |
| 高可用 | Patroni |
| 读写分离 | Pgpool-II |
| 分布式 | Citus |
如果你愿意,可以告诉我:
我可以直接给你 一步步可执行的部署脚本。