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

Cannot connect PostgreSQL cluster though replication user

我正在使用流复制和专用复制槽在单个服务器中复制多个 PostgreSQL 集群。

我们还想监控一些参数,例如每个主服务器上复制槽的状态,因此,我们希望能够使用复制用户连接主服务器,只是为了查询槽状态,所以不需要设置任何有权访问任何数据库的用户。

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

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 文件中没有任何行允许我们备用服务器的 replication 用户连接 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

您显示的 pg_hba.conf 行仅允许用户 replication.

复制 连接

你需要这样一行

host    postgres     replication    172.30.100.0/24     md5

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