55.5. 논리 스트리밍 복제 토토#

이 섹션은 논리적 복제 토토을 설명합니다.start_replication 슬롯 slot_name logical복제 명령.

논리 스트리밍 복제 토토은 물리적 스트리밍 복제 토토의 프리미티브를 기반으로합니다.

PostgreSQL논리 디코딩은 출력 플러그인을 지원합니다.pgoutput내장 논리 복제에 사용되는 표준이라는 표준입니다.

55.5.1. 논리 스트리밍 복제 매개 변수#

사용start_replication명령,pgoutput다음 옵션을 수락합니다.

proto_version

프로토콜 버전. 현재 버전1, 2, 34지원됩니다. 유효한 버전이 필요합니다.

버전2서버 버전 14 이상에서만 지원되며 대규모 진행 중 트랜잭션을 스트리밍 할 수 있습니다.

버전3서버 버전 15 이상에서만 지원되며 2 단계 커밋을 스트리밍 할 수 있습니다.

버전4서버 버전 16 이상에서만 지원되며, 대규모 진행 중 트랜잭션 스트림을 병렬로 적용 할 수 있습니다..

publication_names

구독 할 출판물 이름 목록 (변경 사항을 수신). 개별 간행물 이름은 표준 객체 이름으로 취급되며 필요와 동일하게 인용 할 수 있습니다. 적어도 하나의 출판물 이름이 필요합니다.

binary

이진 전송 모드를 사용하는 부울 옵션. 이진 모드는 텍스트 모드보다 빠르지 만 약간 덜 강력합니다.

메시지

부울 옵션이 작성한 메시지를 보낼 수있는 부울 옵션PG_LOGICAL_EMIT_MESSAGE.

스트리밍

부울 옵션은 진행 중 거래 스트리밍을 가능하게합니다. 병렬화에 사용할 메시지가 포함 된 추가 정보를 보낼 수 있도록 추가 가치 "병렬"을 허용합니다. 최소 프로토콜 버전 2를 켜려면 최소 프로토콜 버전 2가 필요합니다. "병렬"옵션에는 최소 프로토콜 버전 4가 필요합니다.

Two_Phase

2 단계 트랜잭션을 활성화하는 부울 옵션. 최소 프로토콜 버전 3을 켜려면 필요합니다.

원산지

원산지별로 변경 사항을 보내는 옵션. 가능한 값은 원산지가없는 변경 사항 만 보내거나 원산지에 관계없이 변경 사항을 보내려면 "없음"입니다. 복제 노드간에 루프 (동일한 데이터의 무한 복제)를 피하는 데 사용할 수 있습니다.

55.5.2. 논리 복제 프로토콜 메시지#

개별 프로토콜 메시지는 다음 하위 섹션에서 설명합니다. 개별 메시지는에 설명되어 있습니다.PostgreSQL : 문서 : 16 : 55.9. 논리 복제 무지개 토토 형식.

모든 최상위 프로토콜 메시지는 메시지 유형 바이트로 시작합니다. 코드로 캐릭터로 표시되지만 이것은 인코딩이 관련된 서명 된 바이트입니다.

스트리밍 복제 프로토콜은 메시지 길이를 제공하기 때문에 최상위 프로토콜 메시지가 헤더에 길이를 포함 할 필요가 없습니다..

55.5.3. 논리 복제 프로토콜 메시지 흐름#

제외start_replication명령 및 재생 진행 메시지, 모든 정보는 백엔드에서 프론트 엔드로만 흐릅니다.

논리적 복제 프로토콜은 개별 트랜잭션을 하나씩 보냅니다. 이는 한 쌍의 시작과 커밋 메시지 사이의 모든 메시지가 동일한 트랜잭션에 속함을 의미합니다. 마찬가지로, 한 쌍의 시작을 준비하고 준비하는 메시지 사이의 모든 메시지는 동일한 트랜잭션에 속합니다. 또한 한 쌍의 스트림 시작 및 스트림 중지 메시지간에 큰 진행 중 트랜잭션의 변경 사항을 보냅니다. 그러한 거래의 마지막 스트림에는 스트림 커밋 또는 스트림 abort 메시지가 포함됩니다.

모든 전송 트랜잭션에는 0 이상의 DML 메시지가 포함됩니다 (삽입, 업데이트, 삭제). 계단식 설정의 경우 원점 메시지가 포함될 수도 있습니다. 원점 메시지는 트랜잭션이 다른 복제 노드에서 시작되었음을 나타냅니다. 논리적 복제 프로토콜의 범위의 복제 노드는 거의 무엇이든 할 수 있으므로 유일한 식별자는 원점 이름입니다. 필요한 경우 (필요한 경우) 이것을 처리하는 것은 다운 스트림의 책임입니다. Origin 메시지는 트랜잭션의 DML 메시지 전에 항상 전송됩니다.

모든 DML 메시지에는 관련 OID가 포함되어 있으며, 발행인의 관계를 식별합니다. 주어진 관계 OID에 대한 첫 번째 DML 메시지 전에 해당 관계의 스키마를 설명하는 관계 메시지가 전송됩니다. 그 후, 마지막 관계 메시지가 전송 된 이후 관계의 정의가 변경되면 새로운 관계 메시지가 전송됩니다. (프로토콜은 클라이언트가 필요에 따라 많은 관계에 대해이 메타 데이터를 기억할 수 있다고 가정합니다.)

관계 메시지는 OID로 열 유형을 식별합니다. 내장 유형의 경우 클라이언트가 해당 유형 OID를 로컬로 찾을 수 있다고 가정하므로 추가 데이터가 필요하지 않습니다. 구축되지 않은 유형 OID의 경우 해당 OID와 관련된 유형 이름을 제공하기 위해 관계 메시지 전에 유형 메시지가 전송됩니다. 따라서 관계 열의 유형을 구체적으로 식별 해야하는 클라이언트는 유형 메시지의 내용을 캐시하고 먼저 해당 캐시를 참조하여 유형 OID가 정의되어 있는지 확인해야합니다. 그렇지 않은 경우 로컬에서 유형 OID를 찾아보십시오.

정정 제출

문서에 올바른 것이 없다면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면