温馨提示×

centos下postgresql怎么集群

小樊
42
2026-09-27 14:08:16
栏目: 云计算

在 CentOS 下做 PostgreSQL 集群,常见方案有 主从复制(流复制)、PGPool-II、Patroni + etcd 等。下面按“从简单到高可用”给你一个清晰路线。


一、最基础:主从流复制(异步/同步)

适合:读多写少、容灾

1️⃣ 环境准备

  • CentOS 7/8
  • PostgreSQL 12/13/14/15
  • 两台机器
    • 主库:192.168.1.10
    • 从库:192.168.1.11

2️⃣ 主库配置

# 安装
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';

3️⃣ 从库配置

pg_basebackup -h 192.168.1.10 -U repluser -D /var/lib/pgsql/data -P -R

启动从库:

systemctl start postgresql

✅ 此时已是一主一从


二、读写分离 + 负载均衡(PGPool-II)

适合:提高读性能

架构

应用 → PGPool-II → 主库 + 从库

安装

yum install -y pgpool-II

核心功能

  • 读写分离
  • 连接池
  • 故障切换(基础)

⚠️ 不自带自动选主,需脚本配合


三、真正高可用(推荐 ⭐)

✅ Patroni + etcd + HAProxy

业界主流方案

架构

etcd(选主)
Patroni(管理PG)
HAProxy(统一入口)

特点

  • 自动主从切换
  • 防止脑裂
  • 支持多节点

组件

  • PostgreSQL
  • etcd
  • Patroni
  • 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 ⭐⭐⭐ ✅ ✅ ⭐⭐⭐⭐⭐

五、你适合哪种?

  • 只是备份容灾 → 流复制
  • 读压力大 → PGPool
  • 生产高可用 → Patroni + etcd

如果你愿意,可以告诉我: ✅ CentOS 版本
✅ PostgreSQL 版本
✅ 节点数量
✅ 是否需要自动故障切换

我可以直接给你 一步一步可执行的命令。

0 踩