温馨提示×

CentOS PostgreSQL如何配置主从

小樊
46
2026-08-31 03:47:34
栏目: 云计算

下面以 CentOS 7/8 + PostgreSQL 12/13/14 为例,介绍 PostgreSQL 主从(流复制 Streaming Replication) 的典型配置步骤。
当前主流且推荐的方式是 物理流复制(Physical Streaming Replication)


一、环境说明

角色 主机名 IP 说明
主库 master 192.168.1.10 读写
从库 slave 192.168.1.11 只读

PostgreSQL 数据目录示例:
/var/lib/pgsql/14/data


二、主库(Master)配置

1. 安装 PostgreSQL

# CentOS 8 示例
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf install -y postgresql14-server postgresql14-contrib

初始化数据库:

/usr/pgsql-14/bin/postgresql-14-setup initdb
systemctl enable postgresql-14
systemctl start postgresql-14

2. 配置 postgresql.conf

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

关键参数:

listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 64MB
hot_standby = on

3. 配置 pg_hba.conf

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

添加复制权限:

# 允许从库通过复制协议连接
host  replication  repl  192.168.1.11/32  md5

4. 创建复制用户

su - postgres
psql
CREATE USER repl REPLICATION LOGIN PASSWORD 'repl_password';

5. 重启主库

systemctl restart postgresql-14

三、从库(Slave)配置

1. 安装 PostgreSQL(不初始化)

dnf install -y postgresql14-server postgresql14-contrib

2. 使用 pg_basebackup 同步主库数据

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

参数说明:

  • -R:自动生成 standby.signal
  • -Xs:使用流复制方式
  • -P:显示进度

执行后会提示输入密码(repl 用户密码)。


3. 检查从库配置

确认以下文件存在:

ls /var/lib/pgsql/14/data/standby.signal

确认 postgresql.confpostgresql.auto.conf 包含:

primary_conninfo = 'host=192.168.1.10 port=5432 user=repl password=repl_password'

4. 启动从库

systemctl enable postgresql-14
systemctl start postgresql-14

四、验证主从状态

1. 主库查看复制状态

psql
SELECT pid, usename, application_name, client_addr, state
FROM pg_stat_replication;

正常会看到 streaming 状态。


2. 从库查看角色

SELECT pg_is_in_recovery();

返回 t 表示从库。


五、常见注意事项

1. 防火墙

firewall-cmd --add-service=postgresql --permanent
firewall-cmd --reload

2. SELinux(若开启)

setenforce 0
# 或配置 pgdata 上下文

3. 从库只读

  • 从库默认只读
  • 不能写入数据

六、主从切换(可选)

PostgreSQL 本身 不自动 failover,需要借助:

  • repmgr
  • Patroni
  • Pgpool-II

七、总结

✅ 主从配置核心步骤:

  1. 主库开启 wal_level = replica
  2. 创建复制用户
  3. 配置 pg_hba.conf
  4. 从库使用 pg_basebackup
  5. 启动从库

如果你需要 CentOS 7 + PostgreSQL 版本Docker 主从异步/同步复制配置,或 故障切换方案,可以继续问我。

0