温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

postgresql怎么配置主从

发布时间:2026-10-18 07:27:08 来源:亿速云 阅读:91 作者:小樊 栏目:数据库

下面以 PostgreSQL 主从(流复制,Streaming Replication) 为例,说明最常见的 一主一从 配置方式(Linux 环境,PostgreSQL 12+ 通用)。


一、环境假设

  • 主库(Primary):192.168.1.10
  • 从库(Standby):192.168.1.11
  • PostgreSQL 数据目录:/var/lib/postgresql/14/main
  • 操作系统用户:postgres

二、主库配置(Primary)

1. 修改 postgresql.conf

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

PostgreSQL 13 之前用 wal_keep_segments

2. 配置 pg_hba.conf

允许从库连接复制:

host    replication     repluser        192.168.1.11/32     md5

3. 创建复制用户

CREATE ROLE repluser WITH REPLICATION PASSWORD '密码' LOGIN;

4. 重启主库

pg_ctl restart -D /var/lib/postgresql/14/main

三、从库配置(Standby)

1. 停止从库 PostgreSQL

pg_ctl stop -D /var/lib/postgresql/14/main

2. 清空数据目录

rm -rf /var/lib/postgresql/14/main/*

3. 使用 pg_basebackup 拉取主库数据

pg_basebackup \
  -h 192.168.1.10 \
  -U repluser \
  -D /var/lib/postgresql/14/main \
  -Fp -Xs -P

4. 配置 standby.signal

touch /var/lib/postgresql/14/main/standby.signal

5. 配置 postgresql.conf(从库)

primary_conninfo = 'host=192.168.1.10 port=5432 user=repluser password=密码'

6. 启动从库

pg_ctl start -D /var/lib/postgresql/14/main

四、验证主从状态

主库执行

SELECT * FROM pg_stat_replication;

能看到从库连接信息即成功。

从库执行

SELECT pg_is_in_recovery();

返回 t 表示处于备库状态。


五、常见模式说明

  • 流复制(默认):实时同步 WAL
  • 同步复制:
    synchronous_standby_names = 'standby1'
    
  • 级联复制:从库再接从库
  • 逻辑复制:表级复制(非整库)

六、常见问题

  • 防火墙未放行 5432
  • pg_hba.conf 未配置 replication
  • 时间不一致
  • 数据目录权限非 postgres

如果你用的是 Docker / Kubernetes / Windows / 特定 PG 版本,可以告诉我,我可以给你对应方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手