下面给你一个**在 CentOS 7/8 上搭建 PostgreSQL 主从(流复制,Streaming Replication)**的实用步骤示例。假设:
192.168.1.10192.168.1.1114(其他版本类似)# CentOS 7/8
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %centos)/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
systemctl enable --now postgresql-14
vi /var/lib/pgsql/14/data/postgresql.conf
关键参数:
listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
hot_standby = on
vi /var/lib/pgsql/14/data/pg_hba.conf
末尾添加:
host replication repluser 192.168.1.11/32 md5
su - postgres
psql
CREATE ROLE repluser WITH REPLICATION LOGIN PASSWORD 'replpass';
重启主库:
systemctl restart postgresql-14
sudo dnf install -y postgresql14-server
systemctl stop postgresql-14
rm -rf /var/lib/pgsql/14/data/*
su - postgres
pg_basebackup -h 192.168.1.10 -U repluser -D /var/lib/pgsql/14/data -P -X stream -R
-R 会自动生成 standby.signal 和 replication 配置。
systemctl start postgresql-14
SELECT * FROM pg_stat_replication;
能看到从库信息即成功。
SELECT pg_is_in_recovery();
返回 t 表示处于从库模式。
firewall-cmd --add-service=postgresql --permanent
firewall-cmd --reload
chronyc sources
主从 PostgreSQL 大版本必须一致
synchronous_commit = on)如果你需要 CentOS 具体版本 或 Docker / 一主多从 / 同步复制 方案,我可以继续补。