복제가 실패했습니다. 다시 계속하는 방법?


10

Ubuntu에서 Postgres 9.1.6을 실행 중이며 마스터와 슬레이브간에 스트리밍 복제 설정이 있습니다. 데이터베이스가 충돌 할 때까지 모든 것이 순조롭게 진행되었으며 두 상자를 모두 다시 시작해야했습니다.

이제 복제가 중지되었으며 두 상자의 로그를 확인할 때 다음 메시지가 표시됩니다.

CDT FATAL : 요청 된 WAL 세그먼트 0000000100000224000000FA가 이미 제거되었습니다

반복해서 같은 세그먼트입니다. 내 인터넷 검색에서 복제 서버가 마스터 에서이 세그먼트를 검색하려고하지만 더 이상 존재하지 않습니다. 좋아, 그러나 이것을 해결하는 방법? 슬레이브로 새로운 백업과 rsync를 만들어야합니까? 슬레이브를 다시 동기화 할 수있는 쉬운 방법이 있습니까?

답변:


7

예, 슬레이브에 마스터의 새 기본 백업 (스트리밍 복제의 경우 1 ~ 4 단계 만)을 제공해야합니다.

wal_keep_segments의 값이 낮아서 문제가 발생했을 수 있습니다. 슬레이브가 얼마 동안 다운되었을 때 마스터는 세그먼트가 재활용을 시작하지 않을 정도로 슬레이브가 아직 처리하지 않았을 정도로 값이 높아야합니다.


1

스트리밍 모드에서 슬레이브를 기본 호스트에 연결하기 전에 필요한 WAL이 초기 복원을 위해 복원중인 위치에 있는지 확인하십시오

초기 복구를 위해 복원중인 위치에 WAL 세그먼트가없는 경우 문제가 발생할 수 있습니다.

이 경우 모든 것이 정상이면에서에서 restore_command를 확인해야합니다 recovery.conf.


0

다른 해결 방법은 기본에서 wal backup_push를 수행하고 즉시 대기 슬레이브에서 backip_fetch를 수행하고 대기를 시작하는 것입니다.


2
이 프로세스가 작동하는 이유를 확장하십시오
RolandoMySQLDBA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.