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。
我在 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。