无法通过复制用户连接PostgreSQL集群

问题描述 投票:0回答:1

我正在使用流复制和专用复制槽在单个服务器中复制多个PostgreSQLclústers。

我们还希望监视一些参数,例如每个主服务器上的复制插槽的状态,因此,我们希望能够使用复制用户连接主服务器以查询插槽状态,因此无需设置任何具有权限的用户访问任何数据库。

我在很多服务器上成功实现了它。例如:

joanmi@standby:~$ PGPASSWORD=supersecret psql -h serverA.example.com -U replication -c "select slot_name, active from pg_replication_slots" postgres                                                                                                                 
    slot_name    | active       
-----------------+--------      
 pasifae_replica | t            
(1 fila)

但是针对另一台服务器的完全相同的声明会抛出一条声明非允许访问的错误消息。具体地说,它说pg_hba.conf文件中没有任何行允许replicationuser从我们的备用服务器连接postgres数据库。

joanmi@standby:~$ PGPASSWORD=supersecret psql -h serverB.example.com -U replication -c "select slot_name, active from pg_replic
ation_slots" postgres                                                                                                              
psql: FATAL:  no hay una línea en pg_hba.conf para «172.30.100.190», usuario «replication», base de datos «postgres», SSL activo   
FATAL:  no hay una línea en pg_hba.conf para «172.30.100.190», usuario «replication», base de datos «postgres», SSL inactivo

事实上,这是事实。但是在两个主服务器中它只在其中一个服务器中失败。

我检查了pg_hba.conf和以下是replication用户的(唯一)行:

服务器A:

host     replication     replication     172.30.100.190/32       md5

服务器B:

host    replication     replication     172.30.100.0/24           md5

......两者都是Postgresql 9.4。具体来说:

服务器A:9.4.6

服务器B:9.4.3

postgresql postgresql-9.4 pg-hba.conf
1个回答
1
投票

您显示的pg_hba.conf行仅允许用户replication的复制连接。

你需要像这样的一条线

host    postgres     replication    172.30.100.0/24     md5

如果它在其中一个服务器上运行,则pg_hba.conf中必须有另一行允许连接。

© www.soinside.com 2019 - 2024. All rights reserved.