温馨提示×

debian postgresql怎么集群部署

小樊
56
2026-09-20 18:13:24
栏目: 云计算

在 Debian 上部署 PostgreSQL 集群,常见方案有 主从流复制(Streaming Replication)、Patroni + etcd + HAProxy(高可用)、Pgpool-II 等。下面我按从简单到生产级给你讲。


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

适用场景

  • 读写分离
  • 容灾备份
  • 不要求自动故障转移

环境假设

  • 主节点:192.168.1.10
  • 从节点:192.168.1.11
  • PostgreSQL 16(Debian 12)

1. 主节点配置

apt update
apt install -y postgresql

编辑配置文件:

nano /etc/postgresql/16/main/postgresql.conf
listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
nano /etc/postgresql/16/main/pg_hba.conf
host replication replicator 192.168.1.11/32 md5

创建复制用户:

su - postgres
psql
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD 'password';

重启:

systemctl restart postgresql

2. 从节点配置

停止 PostgreSQL:

systemctl stop postgresql

清空数据目录:

rm -rf /var/lib/postgresql/16/main

基础备份:

pg_basebackup -h 192.168.1.10 -U replicator -D /var/lib/postgresql/16/main -P -R

设置权限:

chown -R postgres:postgres /var/lib/postgresql/16/main

启动:

systemctl start postgresql

✅ 从节点现在是只读副本


二、生产级:Patroni + etcd(推荐)

架构

etcd (集群)
  ↓
Patroni (每个 PG 节点)
  ↓
HAProxy (VIP / 负载)

1. 安装 etcd(3 节点)

apt install -y etcd-server etcd-client

配置 /etc/default/etcd(略,核心是 cluster 配置)


2. 安装 Patroni

apt install -y python3-pip
pip3 install patroni[psycopg2]

创建配置 /etc/patroni.yml(示例):

scope: pg-cluster
name: pg1

etcd:
  hosts:
    - 192.168.1.10:2379
    - 192.168.1.11:2379
    - 192.168.1.12:2379

postgresql:
  listen: 0.0.0.0:5432
  data_dir: /var/lib/postgresql/16/main
  authentication:
    superuser:
      username: postgres
      password: secret

启动 Patroni:

patroni /etc/patroni.yml

3. HAProxy(统一入口)

apt install -y haproxy

配置:

  • 写请求 → 主节点
  • 读请求 → 副本

三、其他方案对比

方案 自动切换 复杂度 推荐度
流复制 ❌ 低 ⭐⭐
Pgpool-II ✅ 中 ⭐⭐⭐
Patroni ✅✅ 高 ⭐⭐⭐⭐⭐

四、你可以告诉我

  • Debian 版本?
  • PostgreSQL 版本?
  • 是否要自动故障转移?
  • 云环境还是物理机?

我可以给你完整可复制的部署脚本。

0 踩