无法在postgres复制中执行基本备份.错误:pg_basebackup:无法连接到服务器



我正在docker容器中运行postgresql11.2。在为流式复制准备master和standBy PostgreSQL实例时,我已经在master服务器上启用了存档。在这之后,我需要在standBy服务器上运行pg_basebackup命令,以便从master备份到standBy。无论我做什么,我都面临着同样的错误:

pg_basebackup: could not connect to server: FATAL:  no pg_hba.conf entry for replication connection from host "10.244.0.1", user "repluser", SSL off

我使用postgres用户运行的命令,在运行standBy服务器的docker容器内,是:

pg_basebackup -h 10.0.0.1 -D /data/postgres -U repluser -v -P --wal-method=stream

pg_basebackup -h 10.0.0.1 -U repluser -Ft -D /data/postgres

(请假设10.0.0.1是我的主服务器的IP,10.0.0.2是我的备用服务器的IP。它们在同一个子网中(

主服务器上的pg_hba.conf文件如下所示:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust
host all all all md5
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    replication     repluser        10.0.0.2/32             trust

Postgresql已经告诉您问题所在;10.244.0.1〃;到pg_hba进行复制(除非您认为这是MITM攻击者的IP地址(。

也许你认为IP地址是10.0.0.2,但PostgreSQL没有。如果主机正在为其内部的虚拟机对外部世界进行NAT,那么连接看起来就像来自主机,所以这就是您需要使用的IP地址。当然,这意味着在pg_hhba中实现的IP限制并不能提供太多的安全性,因为所有连接都可能来自同一个地方,您必须在主机级别实现限制,或者使用不同于IP限制的身份验证方法。您还可以更改VM设置,使其具有网桥而不是NAT。

最新更新