web-dev-qa-db-ja.com

Postgresqlはレプリケーション接続を受け入れません

プレーンな古いストリーミングレプリケーション。 PostgreSQL:9.2.7 Windows 8.1 64ビット

私のプライマリおよびセカンダリクラスタはsame Windowsマシン上にあります。私はすでにpg_start_backup()とすべてを実行したので、両方のノードはまったく同じデータを持っています。

レプリケーションの問題は、スレーブサーバーからの「レプリケーション接続」がプライマリサーバーに接続しないことですが、psqlシェルを使用して同じパラメーターを使用して接続できます。私が犯人だと思うのは、スレーブのrecovery.confの接続文字列です。

primary_conninfo = 'Host = 127.0.0.1 port = 5432 user = postgres password = postgres'

私はlocalhost、0.0.0.0、LAN IPをすべて試しましたが、pgログには次のように書かれています:

 FATAL:  could not connect to the primary server: FATAL:  no pg_hba.conf entry for replication connection from Host "127.0.0.1", user "postgres", SSL off

今私のマスターのpg_hba.confを見てください:

Host     all     all     0.0.0.0/0   trust
Host    all             postgres             127.0.0.1/0               trust
# IPv6 local connections:
Host    all             all             ::1/128                 md5
hostnossl    all     postgres    127.0.0.1/32    trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#Host    replication     postgres        127.0.0.1/32            md5
#Host    replication     postgres        ::1/128                 md5

それは私が可能なすべての接続を許可したようにまだスレーブは接続できません。何かお手伝いできますか?

20
Sachin Verma

replicationはレプリケーション接続をカバーしないため、データベース名はallである必要があります。

Host    replication    postgres             127.0.0.1/0               trust

PostgreSQLドキュメント はさらに次のように述べています。

replicationは、レプリケーション接続が要求された場合にレコードが一致することを指定します(レプリケーション接続は特定のデータベースを指定しないことに注意してください)。それ以外の場合、これは特定のPostgreSQLデータベースの名前です。複数のデータベース名をコンマで区切って指定できます。ファイル名の前に@を付けると、データベース名を含む別のファイルを指定できます。

27
Sachin Verma

以下の行をpg_hba.confに追加してリロードするとうまくいきました。タイプが「ローカル」であることを考えると、アドレスを明示的に指定する必要はありません。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   replication     postgres                                peer

pg_ctl reloadを忘れないでください

3
Rogerlr

ここで私が遭遇したもう1つの可能な解決策。 logicalレプリケーションを実行していて、DATABASEをレプリケーションに設定している場合、それは機能しません。通常のパラメータを取得する必要があります。 replicationパラメータは物理レプリケーション用であり、論理レプリケーション用ではありません。

男、それは理解するためにいくつかの仕事を取りました。これが役に立てば幸いです!

2
mlissner