在Debian系统上搭建PostgreSQL集群,可以使用Patroni来管理高可用性和故障转移。Patroni是一个用于管理PostgreSQL集群的工具,支持多种集群模式,包括主备模式和多主模式。以下是一个基本的步骤指南,帮助你在Debian上搭建一个PostgreSQL集群。
首先,更新你的包列表并安装必要的依赖:
sudo apt-get update
sudo apt-get install -y python3-pip python3-psycopg2 git
使用pip安装Patroni:
sudo pip3 install patroni
创建一个Patroni配置文件,例如/etc/patroni.yml
,并添加以下内容:
scope: postgres
name: node1
namespace: /db
restapi:
listen: 0.0.0.0
connect_address: 192.168.1.101 # 替换为你的节点IP
etcd:
host: 192.168.1.102 # 替换为你的etcd节点IP
port: 2379
scheme: http
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
wal_level: replica
max_connections: 100
hot_standby: on
storage:
type: file
path: /var/lib/postgresql/data
pgdata: /var/lib/postgresql/data
replication:
slot_name: pgsql_replication_slot
listen: 0.0.0.0
connect_address: 192.168.1.101 # 替换为你的节点IP
publish_address: 192.168.1.101 # 替换为你的节点IP
auth_method: peer
postgresql:
listen: 0.0.0.0
connect_address: 192.168.1.101 # 替换为你的节点IP
data_dir: /var/lib/postgresql/data
pg_hba:
- host replication replicator 192.168.1.0/24 md5
- host all all 0.0.0.0/0 md5
在每个节点上初始化PostgreSQL数据库:
sudo systemctl stop postgresql
sudo su - postgres
initdb -D /var/lib/postgresql/data
pg_ctlcluster 12 main start --no-prompt
exit
在每个节点上启动Patroni:
sudo patroni /etc/patroni.yml
你可以使用以下命令来验证集群的状态:
sudo patronictl status
你可以使用HAProxy或Keepalived来配置负载均衡,确保客户端可以连接到PostgreSQL集群。
通过以上步骤,你应该能够在Debian系统上成功搭建一个PostgreSQL集群。根据实际需求,你可能需要进一步调整配置和优化性能。