복제가 없는 동안 어떻게 기본 postgresql에 계속 쓸 수 있습니까?

복제가 없는 동안 어떻게 기본 postgresql에 계속 쓸 수 있습니까?

reload인증 오류로 인해 내 스크립트가 postgresql에 실패한 것으로 나타났습니다 . 따라서 아래의 모든 내용은허위 문제포스트그레SQL의 버그를 수정한 후 postgresql을 사용하면 아무런 문제 없이 단독 기본 서버에 쓸 수 있었습니다. Nikita Kipriyanov의 도움에 감사드립니다. 아래 단어는 생략해도 됩니다.


내 목표는 대기 서버가 실패하는 동안에도 마스터 서버가 쓰기 요청을 계속 처리할 수 있도록 하는 것입니다. synchronous_commit =수동으로 설정 off한 다음 기본 서버를 다시 로드 할 수 있다는 것을 확인했습니다 .

기타 구성 repmgr.conf에는 다음이 포함됩니다 repmgr. use_replication_slots=yes

따라서 대기 서버는 repmgr장애 발생 시 기본 서버에 월로그 예약을 요청하여 생성됩니다. 상황이 예상대로 정확하게 진행되지 않습니다. 기본에 쓰기 작업을 커밋할 수 있고 대기는 기본에서 이를 복제할 수 있지만 버그가 있습니다. 쓰기 명령이 항상 여기에 붙어 있습니다.

postgres=# CREATE DATABASE ANYTHING;

Ctrl+ 를 누를 때까지 D다음 줄과 함께 프롬프트가 다시 표시되지 않았습니다 .

^CCancel request sent
WARNING:  canceling wait for synchronous replication due to user request
DETAIL:  The transaction has already committed locally, but might not have been replicated to the standby.
CREATE DATABASE
postgres=#

그래서 synchronous_commit = off. ( psql -c ...쉘에서도 정지가 발생합니다.) 이는 대기 모드에서 문제가 발생하는 동안 기본 복제 설정의 "스트라이크"를 방지하려는 목표에 이 일시적인 복제 설정 변경이 도달하지 못했음을 의미합니다!

이 동결을 해결할 수 있는 방법이 있나요? 감사해요.

관련 정보