[英]Not able to perform base backup in postgres replication. Error: pg_basebackup: could not connect to server
我在 docker 容器中運行 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
我在運行備用服務器的 docker 容器內使用postgres
用戶運行的命令是:
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.