我在 Windows 2008 服务器上使用 Postgres 9.4。我使用了三个这样的实例。一个作为主服务器,其余两个作为从服务器/备用服务器。这三个实例中的 Postgres 版本均为 9.4。我已使用物理插槽设置了复制。但复制不起作用。查询时SELECT * from pg_stat_replication
;返回 0 行,查询时SELECT * from pg_replication_slots
;插槽显示它处于非活动状态(“活动”列中的“f”)。
我有以下配置:
在主要/主服务器上:
- wal_level = hot_standby
- 最大发送者数 = 2
- 最大复制槽数 = 2
- hot_standby = on
在辅助/备用服务器上:
- wal_level = hot_standby
- hot_standby = on
辅助/备用服务器上的 recovery.conf 文件:
- 待机模式 = 开启
- primary_conninfo = '主机=192.168.8.192 端口=5432 用户=postgres 密码=123456'
- 主插槽名称 = '测试'
- recovery_min_apply_delay = 1分钟
可能缺少什么?我已经使用主服务器的数据备份引导了备用服务器。谢谢。
答案1
我在 Ubuntu 上也遇到过类似的问题。对我来说,结果发现它replication.conf
不在正确的位置。
根据 Postgres Wiki流复制在描述 recovery.conf 的部分中:
$EDITOR 恢复.conf
请注意,recovery.conf 必须位于 $PGDATA 目录中。
它不应该与 postgresql.conf 位于同一目录中
一旦我移动recovery.conf
到正确的位置并重新启动 Postgres,SELECT * from pg_stat_replication
就返回active = true
。
希望有所帮助。