48장. 롤 토토 진행 상황 추적

롤 토토 원본은 논리적 롤 토토 솔루션을 더 쉽게 구현할 수 있도록 고안되었습니다.PostgreSQL : 문서 : 18 : 47 장. 윈 토토 디코딩. 두 가지 일반적인 문제에 대한 솔루션을 제공합니다.

  • 롤 토토 진행 상황을 안전하게 추적하는 방법

  • 행의 출처를 기반으로 롤 토토 동작을 변경하는 방법; 예를 들어 양방향 롤 토토 설정에서 루프를 방지하기 위해

롤 토토 원본에는 이름과 ID라는 두 가지 속성만 있습니다. 시스템 전반에서 원본을 참조하는 데 사용되는 이름은 자유 형식입니다.텍스트. 서로 다른 롤 토토 솔루션에서 생성된 롤 토토 원본 간에 충돌이 발생하지 않도록 하는 방식으로 사용해야 합니다. 예를 들어 롤 토토 솔루션의 이름 앞에 접두사를 붙입니다. ID는 공간 효율성이 중요한 상황에서 긴 버전을 저장하지 않기 위해서만 사용됩니다. 시스템 간에 공유되어서는 안 됩니다.

함수를 사용하여 롤 토토 원본을 생성할 수 있습니다pg_replication_origin_create(); 다음을 사용하여 삭제됨pg_replication_origin_drop(); 그리고 다음에서 볼 수 있습니다.pg_replication_origin시스템 카탈로그.

롤 토토 솔루션 구축에서 중요한 부분 중 하나는 안전한 방식으로 재생 진행 상황을 추적하는 것입니다. 적용 프로세스 또는 전체 클러스터가 종료되면 데이터가 성공적으로 롤 토토된 위치까지 알아낼 수 있어야 합니다. 재생된 모든 트랜잭션에 대해 테이블의 행을 업데이트하는 것과 같은 순진한 솔루션은 런타임 오버헤드 및 데이터베이스 팽창과 같은 문제를 안고 있습니다.

복제 원본 인프라를 사용하면 세션이 원격 노드에서 재생되는 것으로 표시될 수 있습니다(다음을 사용하여pg_replication_origin_session_setup()함수). 추가적으로LSN그리고 모든 소스 트랜잭션의 커밋 타임스탬프는 다음을 사용하여 트랜잭션별로 구성할 수 있습니다.pg_replication_origin_xact_setup(). 완료되면 복제 진행이 충돌로부터 안전한 방식으로 유지됩니다. 모든 복제 원본에 대한 재생 진행 상황은 다음에서 볼 수 있습니다.pg_replication_origin_status보기. 복제를 재개할 때와 같은 개별 오리진의 진행 상황은 다음을 사용하여 얻을 수 있습니다.pg_replication_origin_progress()모든 출처 또는pg_replication_origin_session_progress()현재 세션에 구성된 원본의 경우.

정확히 한 시스템에서 다른 시스템으로의 복제보다 더 복잡한 복제 토폴로지에서는 재생된 행을 다시 복제하는 것을 피하기가 어렵다는 또 다른 문제가 있을 수 있습니다. 이는 복제 주기와 비효율성을 모두 초래할 수 있습니다. 복제 원본은 이를 인식하고 방지하기 위한 선택적 메커니즘을 제공합니다. 이전 단락에서 참조된 함수를 사용하여 구성하면 모든 변경 사항과 트랜잭션이 출력 플러그인 콜백에 전달됩니다(참조PostgreSQL : 문서 : 18 : 47.6. 논리적 디코딩 범퍼카 토토 플러그인12686_12906filter_by_origin_cb콜백은 소스를 기반으로 논리적 디코딩 변경 스트림을 필터링하는 데 사용될 수 있습니다. 유연성은 떨어지지만 해당 콜백을 통한 필터링은 출력 플러그인에서 수행하는 것보다 훨씬 더 효율적입니다.

수정사항 제출

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