Not able to perform base backup in postgres replication. Error: pg_basebackup: could not connect to server

Not able to perform base backup in postgres replication. Error: pg_basebackup: could not connect to server

我在 docker 容器中 运行ning postgresql 11.2。 在为流复制准备主和备用 PostgreSQL 实例时,我在主服务器上启用了归档。在此之后,我需要在备用服务器上使用 运行 pg_basebackup 命令从主服务器备份到备用服务器。 无论我做什么,我都面临同样的错误:

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 用户,在 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。