PostgreSQL은 복제 연결을 허용하지 않습니다


19

평범한 오래된 스트리밍 복제. PostgreSQL : 9.2.7 Windows 8.1 64 비트

내 기본 및 보조 클러스터는 동일한 Windows 시스템에 있습니다. pg_start_backup () 및 모든 것을 이미 수행 했으므로 두 노드 모두 동일한 데이터를 갖습니다.

이제 복제 문제는 슬레이브 서버의 "복제 연결"이 기본 서버에 연결되지 않지만 psql 쉘을 사용하여 동일한 매개 변수를 사용하여 연결할 수 있다는 것입니다. 내가 생각하는 범인은 slave 's recovery.conf의 연결 문자열입니다.

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

pg log 이외의 모든 것을 localhost, 0.0.0.0, lan IP로 시도했습니다.

 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

가능한 모든 연결을 허용했지만 슬레이브는 연결할 수 없습니다. 도와 줄 수 있습니까?

답변:


25

데이터베이스 이름은이어야 replication으로 all복제 연결을 포함하지 않습니다.

host    replication    postgres             127.0.0.1/0               trust

PostgreSQL의 문서는 더 말한다 :

이 값 replication은 복제 연결이 요청 된 경우 레코드가 일치하도록 지정합니다 (복제 연결은 특정 데이터베이스를 지정하지 않습니다). 그렇지 않으면 특정 PostgreSQL 데이터베이스의 이름입니다. 쉼표로 구분하여 여러 데이터베이스 이름을 제공 할 수 있습니다. 파일 이름 앞에을 붙여 데이터베이스 이름을 포함하는 별도의 파일을 지정할 수 있습니다 @.


복제 데이터베이스를 만들어야합니까? 아니면 내장입니까?
gimibarak

기본 제공되지 않으므로 복제를 설정해야합니다. 다음은 참조입니다 : digitalocean.com/community/tutorials/…
Sachin Verma

이 유의 하지 논리적 복제의 경우.
mlissner

3

아래 줄을 추가 pg_hba.conf하고 다시로드하면 나에게 도움이되었습니다. 유형이 '로컬'인 경우 주소를 명시 적으로 지정할 필요가 없습니다.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   replication     postgres                                peer

그리고 기억 pg_ctl reload


2

내가 여기에 도달 한 다른 가능한 솔루션. 논리적 복제를 수행 중이고 DATABASE가 복제로 설정되어 있으면 작동하지 않습니다. 그냥 일반 매개 변수를 가져와야합니다. 이 replication매개 변수는 논리적 복제가 아니라 물리적 복제 용입니다.

그 사람은 알아 내기 위해 약간의 노력을 기울였습니다. 이게 도움이 되길 바란다!


1
더 많이 상향 조정해야합니다. 이것을 찾을 때까지 wal2json 플러그인 문제를 해결하는 데 몇 시간을 보냈으며 이것이 올바른 대답이었습니다. wal2json 플러그인은 자신의 예를 들어 내가 대신 키워드 '복제'의 '테스트'데이터베이스 이름을 사용하기 위해서는 pg_hba.conf 설정하는 데 필요한 작업 pg_recvlogical 명령을 얻기 위해 그렇게 논리적 복제를 사용하는 표시
Alf47
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.