在 Debian 上配置 PostgreSQL 主从(通常叫 流复制 / Streaming Replication),下面给你一套实战可用、较通用的步骤(以 PostgreSQL 15/16 为例,Debian 11/12 适用)。
192.168.1.10192.168.1.11/var/lib/postgresql/16/main/etc/postgresql/16/main版本号按你实际安装修改(如 14、15、16)
sudo apt update
sudo apt install postgresql postgresql-client
postgresql.confsudo nano /etc/postgresql/16/main/postgresql.conf
关键参数:
listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
hot_standby = on
pg_hba.confsudo nano /etc/postgresql/16/main/pg_hba.conf
末尾添加:
# 允许从库复制
host replication replicator 192.168.1.11/32 md5
sudo -u postgres psql
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD '强密码';
sudo systemctl restart postgresql
sudo apt install postgresql
sudo systemctl stop postgresql
sudo systemctl stop postgresql
sudo rm -rf /var/lib/postgresql/16/main/*
sudo -u postgres pg_basebackup \
-h 192.168.1.10 \
-U replicator \
-D /var/lib/postgresql/16/main \
-Fp -Xs -P
sudo nano /var/lib/postgresql/16/main/standby.signal
内容为空即可(PostgreSQL 12+ 用这个文件标识从库)
postgresql.confsudo nano /etc/postgresql/16/main/postgresql.conf
添加:
primary_conninfo = 'host=192.168.1.10 port=5432 user=replicator password=强密码'
hot_standby = on
sudo systemctl start postgresql
sudo -u postgres psql
SELECT * FROM pg_stat_replication;
看到从库信息即成功。
sudo -u postgres psql -c "SELECT pg_is_in_recovery();"
返回 t 表示从库正常。
listen_addresses 不是 localhostpg_hba.conf 是否 reload如果你告诉我:
我可以给你更针对性的配置。