PostgreSQL不接受复制连接


19

普通的旧流复制。PostgreSQL:9.2.7 Windows 8.1 64位

我的主要群集和辅助群集位于同一 Windows计算机上。我已经完成了pg_start_backup()和所有操作,因此两个节点的数据完全相同。

现在,复制的问题是从属服务器的“复制连接”没有连接到主服务器,但是我可以使用psql shell使用相同的参数进行连接。我认为罪魁祸首是奴隶的recovery.conf中的连接字符串:

primary_conninfo = 'host = 127.0.0.1 port = 5432 user = postgres password = postgres'

我尝试了localhost,0.0.0.0,lan IP,但pg log表示:

 FATAL:  could not connect to the primary server: FATAL:  no pg_hba.conf entry for replication connection from host "127.0.0.1", user "postgres", SSL off

现在看一下我主人的pg_hba.conf:

host     all     all     0.0.0.0/0   trust
host    all             postgres             127.0.0.1/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 md5
hostnossl    all     postgres    127.0.0.1/32    trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

就像我允许所有可能的连接,但从属无法连接一样。你能帮忙吗?

Answers:


25

该数据库名必须replicationall不包括复制连接。

host    replication    postgres             127.0.0.1/0               trust

PostgreSQL文档进一步说:

该值replication指定如果请求复制连接,则记录匹配(请注意,复制连接未指定任何特定的数据库)。否则,这是特定PostgreSQL数据库的名称。可以使用逗号分隔多个数据库名称。可以在文件名前面加上来指定包含数据库名称的单独文件@


我们需要创建一个复制数据库吗?还是内置的?
gimibarak

它不是内置的,您必须设置复制。参考编号:digitalocean.com/community/tutorials/…–
Sachin Verma

请注意,逻辑复制不是这种情况。
mlissner,

3

将以下行添加到pg_hba.conf并重新加载对我有用。考虑到类型为“本地”,则无需显式指定地址。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   replication     postgres                                peer

并记住 pg_ctl reload


2

我遇到的另一种可能的解决方案。如果您正在执行逻辑复制,并且已将DATABASE设置为复制,则它将无法工作。它只需要获取一个常规参数即可。该replication参数用于物理复制,而不是逻辑复制。

伙计,那人花了点功夫才弄清楚。我希望这有帮助!


1
这需要更多的支持。我花了数小时对wal2json插件进行故障排除,直到找到了,这对我来说是正确的答案。看来wal2json插件使用逻辑复制,因此为了使示例pg_recvologic命令正常工作,我需要将pg_hba.conf设置为使用“测试”数据库名称而不是关键字“复制”
Alf47
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.