31.5. 무지개 토토#

논리적 복제는 구독자 노드에서 로컬로 변경된 경우에도 데이터가 업데이트된다는 점에서 일반 DML 작업과 유사하게 작동합니다. 들어오는 데이터가 제약 조건을 위반하면 복제가 중지됩니다. 이를 a라고 합니다.무지개 토토. 복제할 때업데이트또는삭제작업, 누락된 데이터는 무지개 토토을 일으키지 않으며 이러한 작업은 단순히 건너뛰게 됩니다.

논리적 복제 작업은 구독을 소유한 역할의 권한으로 수행됩니다. 대상 테이블에 대한 권한 실패로 인해 복제 무지개 토토이 발생합니다.PostgreSQL : 문서 : 16 : 5.8. 보안 토토 베이 행정책이 일반적으로 거부하는지 여부에 관계없이 구독 소유자가 적용되는 대상 테이블에서삽입, 업데이트, 삭제또는잘라내기복제 중입니다. 행 수준 보안에 대한 이 제한은 향후 버전에서 해제될 수 있습니다.포스트그레SQL.

무지개 토토로 인해 오류가 발생하고 복제가 중지됩니다. 사용자가 수동으로 해결해야 합니다. 무지개 토토에 대한 자세한 내용은 구독자의 서버 로그에서 확인할 수 있습니다.

해결책은 구독자의 데이터 또는 권한을 변경하여 들어오는 변경 사항과 무지개 토토하지 않도록 하거나 기존 데이터와 무지개 토토하는 트랜잭션을 건너뛰는 방식으로 수행할 수 있습니다. 무지개 토토로 인해 오류가 발생하면 복제가 진행되지 않고 논리적 복제 작업자가 구독자의 서버 로그에 다음과 같은 종류의 메시지를 내보냅니다.

오류: 중복 키 값이 고유 제약 조건 "test_pkey"를 위반합니다.
세부사항: 키 (c)=(1)이 이미 존재합니다.
CONTEXT: 트랜잭션 725의 복제 대상 관계 "public.test"에 대한 "INSERT" 중 복제 원본 "pg_16395"에 대한 원격 데이터 처리가 0/14C0378에 완료되었습니다.

제약조건을 위반한 변경사항이 포함된 트랜잭션의 LSN과 복제 원본 이름은 서버 로그에서 확인할 수 있습니다(LSN 0/14C0378 및 복제 원본pg_16395위의 경우). 무지개 토토을 일으킨 트랜잭션은 다음을 사용하여 건너뛸 수 있습니다.구독 변경 ... 건너뛰기마감 LSN 포함(예: LSN 0/14C0378). 종료 LSN은 게시자에서 트랜잭션이 커밋되거나 준비되는 LSN일 수 있습니다. 또는를 호출하여 트랜잭션을 건너뛸 수도 있습니다.pg_replication_origin_advance()함수. 이 기능을 사용하기 전에 구독을 일시적으로 비활성화해야 합니다.구독 변경 ... 비활성화또는 다음과 함께 구독을 사용할 수 있습니다.disable_on_error옵션. 그런 다음 다음을 사용할 수 있습니다.pg_replication_origin_advance()함수노드_이름(즉,pg_16395) 및 마무리 LSN의 다음 LSN(예: 0/14C0379)입니다. 현재 원점 위치는에서 볼 수 있습니다.pg_replication_origin_status시스템 보기. 전체 트랜잭션을 건너뛰는 것은 어떠한 제약 조건도 위반하지 않을 수 있는 변경 사항을 건너뛰는 것을 포함합니다. 이로 인해 구독자의 일관성이 쉽게 떨어질 수 있습니다.

스트리밍모드는병렬, 실패한 트랜잭션의 완료 LSN이 기록되지 않을 수 있습니다. 이 경우 스트리밍 모드를 다음으로 변경해야 할 수도 있습니다.켜짐또는꺼짐그리고 동일한 무지개 토토을 다시 발생시켜 실패한 트랜잭션의 완료 LSN이 서버 로그에 기록됩니다. Finish LSN의 사용법은 다음을 참조하세요.구독 변경 ... 건너뛰기.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.