温馨提示×

centos怎么配postgresql主从

小樊
50
2026-09-18 12:48:42
栏目: 云计算

下面以 CentOS 7/8 + PostgreSQL 12/13/14 为例,讲一下 基于流复制(Streaming Replication)的一主一从 配置方法,这是最常见、最推荐的方式。


一、环境假设

角色 IP 主机名
主库 192.168.1.10 master
从库 192.168.1.11 slave

PostgreSQL 安装路径(示例):

  • 数据目录:/var/lib/pgsql/14/data
  • 配置文件:/var/lib/pgsql/14/data/postgresql.conf
  • 主从用户:replica

二、主库配置(Master)

1. 安装 PostgreSQL(主从都做)

dnf install -y postgresql-server postgresql-contrib
# 或 yum

初始化(仅主库首次):

postgresql-setup --initdb
systemctl enable postgresql
systemctl start postgresql

2. 创建复制用户

su - postgres
psql
CREATE ROLE replica WITH REPLICATION PASSWORD 'replica123' LOGIN;

3. 修改 postgresql.conf

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

关键配置:

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

4. 修改 pg_hba.conf

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

添加从库访问权限:

host replication replica 192.168.1.11/32 md5

5. 重启主库

systemctl restart postgresql

三、从库配置(Slave)

1. 安装 PostgreSQL(不要初始化)

dnf install -y postgresql-server

2. 清空数据目录

systemctl stop postgresql
rm -rf /var/lib/pgsql/14/data/*

3. 使用 pg_basebackup 从主库拉数据

su - postgres
pg_basebackup -h 192.168.1.10 -U replica -D /var/lib/pgsql/14/data -P -R

-R 会自动生成 standby.signal


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

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

5. 启动从库

systemctl start postgresql

四、验证主从状态

主库执行

SELECT * FROM pg_stat_replication;

能看到 slave 连接即成功。

从库执行

SELECT pg_is_in_recovery();

返回 t 表示从库。


五、常见问题

✅ 防火墙

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

✅ SELinux

setsebool -P postgresql_can_network_connect on

✅ 时间同步

ntpdate pool.ntp.org

六、可选增强

  • 同步复制(synchronous_commit)
  • 级联复制
  • 使用 repmgr / Patroni 做高可用

如果你告诉我:

  • CentOS 版本
  • PostgreSQL 版本
  • 是否要 同步复制 / 多从 / 容器化

我可以给你更精确的配置。

0 踩