簡體   English   中英

無法在 postgres 復制中執行基本備份。 錯誤:pg_basebackup:無法連接到服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM