温馨提示×

centos如何设置postgresql主从

小樊
42
2026-10-20 22:42:01
栏目: 云计算

下面以 CentOS 7/8 为例,说明如何配置 PostgreSQL 主从(流复制,Streaming Replication)。以 PostgreSQL 13 为例(其他版本类似)。


一、环境说明

  • 主库(Primary):192.168.1.10
  • 从库(Standby):192.168.1.11
  • PostgreSQL 版本:13
  • 数据目录:/var/lib/pgsql/13/data

二、主库配置(Primary)

1. 安装 PostgreSQL

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install -y postgresql13-server postgresql13
/usr/pgsql-13/bin/postgresql-13-setup initdb
systemctl enable postgresql-13
systemctl start postgresql-13

2. 修改 postgresql.conf

vi /var/lib/pgsql/13/data/postgresql.conf

关键配置:

listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
hot_standby = on

3. 配置 pg_hba.conf

vi /var/lib/pgsql/13/data/pg_hba.conf

添加从库访问权限:

host    replication     repluser        192.168.1.11/32    md5

4. 创建复制用户

su - postgres
psql
CREATE ROLE repluser WITH REPLICATION PASSWORD 'Password123' LOGIN;

5. 重启主库

systemctl restart postgresql-13

三、从库配置(Standby)

1. 安装 PostgreSQL(不初始化数据库)

yum install -y postgresql13-server postgresql13

2. 使用 pg_basebackup 从主库拉取数据

systemctl stop postgresql-13
rm -rf /var/lib/pgsql/13/data/*
su - postgres
pg_basebackup -h 192.168.1.10 -U repluser -D /var/lib/pgsql/13/data -P -X stream -R

-R 参数会自动生成 standby.signal 和 primary_conninfo

3. 修改从库配置(可选)

vi /var/lib/pgsql/13/data/postgresql.conf
hot_standby = on

4. 启动从库

systemctl start postgresql-13

四、验证主从状态

主库执行:

SELECT * FROM pg_stat_replication;

看到从库信息即成功。

从库执行:

SELECT pg_is_in_recovery();

返回 t 表示从库。


五、常见问题

1. 防火墙

firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload

2. SELinux

setsebool -P postgresql_can_network_connect on

3. 数据不同步

  • 检查 pg_hba.conf
  • 检查复制用户密码
  • 查看日志:/var/lib/pgsql/13/data/log/

六、说明

  • 这是 异步流复制
  • 从库默认只读
  • 如需同步复制,可配置 synchronous_commit = on

如果你需要 Docker / CentOS Stream / PG15 / 同步复制 / 自动故障切换(Patroni) 的方案,也可以告诉我。

0 踩