구독 작성

구독 작성 — 새 구독 정의

시놉시스

구독 작성구독_이름연결 '콘인포'
    출판출판_이름[, ...]
    [ 와 (구독_매개변수 [= ] [, ... ] ) ]

설명

구독 작성새 논리적 복제 구독을 추가합니다. 구독 이름은 현재 데이터베이스의 기존 구독 이름과 달라야 합니다.

구독은 게시자에 대한 복제 연결을 나타냅니다. 따라서 이 명령은 로컬 카탈로그에 정의를 추가하는 것 외에도 일반적으로 게시자에 복제 슬롯을 만듭니다.

구독이 처음에 비활성화되지 않는 한, 이 명령이 실행되는 트랜잭션 커밋에서 새 구독에 대한 데이터를 복제하기 위해 논리적 복제 작업자가 시작됩니다.

구독 및 논리적 복제 전체에 대한 추가 정보는 다음에서 확인할 수 있습니다.롤 토토그리고PostgreSQL : 문서 : 15 : 31 장. 논리 토토.

매개변수

구독_이름

새 구독의 이름.

연결 '콘인포'

libpq9759_9847섹션 34.1.1.

출판출판_이름 [, ...]

구독할 게시자의 출판물 이름.

함께(subscription_parameter [= ] [, ... ] )

이 절은 구독에 대한 선택적 매개변수를 지정합니다.

다음 매개변수는 구독 생성 중에 발생하는 작업을 제어합니다.

연결 (부울)

다음 여부를 지정합니다구독 작성명령은 게시자에 연결되어야 합니다. 기본값은. 이것을 다음과 같이 설정합니다.거짓다음 값을 강제로 적용합니다create_slot, 활성화그리고copy_data거짓. (설정을 결합할 수 없습니다.연결거짓설정 포함create_slot, 활성화또는copy_data.)

이 옵션은 연결되지 않으므로거짓, 구독된 테이블이 없으므로 구독을 활성화한 후에는 아무것도 복제되지 않습니다. 그런 다음 실행해야 합니다.구독 변경...게시 새로고침구독할 테이블의 경우.

create_slot (부울)

명령이 게시자에 복제 슬롯을 토토해야 하는지 여부를 지정합니다. 기본값은. 으로 설정된 경우거짓, 귀하는 다른 방법으로 게시자 슬롯을 토토할 책임이 있습니다.

활성화 (부울)

구독이 적극적으로 복제되어야 하는지 또는 설정만 하고 아직 시작하지 않아야 하는지 지정합니다. 기본값은.

slot_name (문자열)

사용할 게시자의 복제 슬롯 이름. 기본값은 슬롯 이름에 구독 이름을 사용하는 것입니다.

설정slot_name없음구독과 연결된 복제 슬롯이 없음을 의미합니다. 나중에 수동으로 복제 슬롯을 생성할 때 이를 사용합니다. 이러한 구독에는 둘 다 있어야 합니다.활성화그리고create_slot다음으로 설정됨거짓.

다음 매개변수는 구독이 생성된 후 구독의 복제 동작을 제어합니다:

바이너리 (부울)

구독이 게시자에게 데이터를 바이너리 형식(텍스트가 아닌)으로 보내도록 요청할지 여부를 지정합니다. 기본값은거짓. 이 옵션을 활성화하더라도 바이너리 전송 및 수신 기능이 있는 데이터 유형만 바이너리로 전송됩니다.

버전 간 복제를 수행할 때 게시자는 일부 데이터 유형에 대한 바이너리 전송 기능을 가지고 있지만 구독자에게는 해당 유형에 대한 바이너리 수신 기능이 없을 수 있습니다. 이러한 경우 데이터 전송이 실패하며바이너리옵션을 사용할 수 없습니다.

copy_data (부울)

복제 시작 시 구독 중인 발행의 기존 데이터를 복사할지 여부를 지정합니다. 기본값은.

간행물에 다음이 포함된 경우어디절에 따라 복사되는 데이터에 영향을 미칩니다. 참조참고자세한 내용은.

스트리밍 (부울)

이 구독에 대해 진행 중인 트랜잭션 스트리밍을 활성화할지 여부를 지정합니다. 기본적으로 모든 거래는 게시자에서 완전히 디코딩된 다음 구독자에게 전체적으로 전송됩니다.

동기_커밋 (열거형)

이 매개변수의 값은 다음을 재정의합니다.동기_커밋이 구독의 작업자 적용 프로세스 내 설정입니다. 기본값은꺼짐.

사용해도 안전합니다꺼짐논리적 복제의 경우: 동기화 누락으로 인해 구독자가 트랜잭션을 잃은 경우 게시자로부터 데이터가 다시 전송됩니다.

동기식 논리적 복제를 수행할 때는 다른 설정이 적절할 수 있습니다. 논리적 복제 작업자는 쓰기 및 플러시 위치를 게시자에게 보고하며, 동기 복제를 사용하는 경우 게시자는 실제 플러시를 기다립니다. 이는 해당 설정을 의미합니다.동기_커밋구독자의 경우꺼짐동기 복제에 구독을 사용하면 지연 시간이 늘어날 수 있습니다.커밋출판사에서. 이 시나리오에서는 다음을 설정하는 것이 유리할 수 있습니다.동기_커밋현지이상.

two_phase (부울)

이 구독에 대해 2단계 커밋이 활성화되었는지 여부를 지정합니다. 기본값은거짓.

2단계 커밋이 활성화되면 준비된 트랜잭션이 구독자에게 전송됩니다.거래 준비이며 구독자에서도 2단계 트랜잭션으로 처리됩니다. 그렇지 않으면 준비된 트랜잭션이 커밋된 경우에만 구독자에게 전송된 후 구독자가 즉시 처리합니다.

2단계 커밋을 구현하려면 복제가 초기 테이블 동기화 단계를 성공적으로 완료해야 합니다. 그래서 언제라도two_phase구독에 대해 활성화되어 있으며 내부 2단계 상태가 일시적으로 유지됩니다.보류 중초기화 단계가 완료될 때까지. 열 보기subtwophasestatepg_subscription실제 2단계 상태를 알기 위해.

disable_on_error (부울)

게시자로부터 데이터를 복제하는 동안 구독 작업자가 오류를 감지한 경우 구독을 자동으로 비활성화할지 여부를 지정합니다. 기본값은거짓.

참고

참조토토 핫 PostgreSQL : 문서 : 15 : 31.9. 보안구독과 게시 인스턴스 간의 액세스 제어를 구성하는 방법에 대한 자세한 내용을 확인하세요.

복제 슬롯을 토토할 때(기본 동작),구독 작성트랜잭션 블록 내에서는 실행할 수 없습니다.

동일한 데이터베이스 클러스터에 연결하는 구독 생성(예: 동일한 클러스터의 데이터베이스 간 복제 또는 동일한 데이터베이스 내 복제)은 복제 슬롯이 동일한 명령의 일부로 생성되지 않은 경우에만 성공합니다. 그렇지 않으면,구독 작성통화가 중단됩니다. 이 작업을 수행하려면 복제 슬롯을 별도로 토토하십시오(함수 사용pg_create_logical_replication_slot플러그인 이름 포함pgoutput) 매개변수를 사용하여 구독을 생성합니다.create_slot = false. 이는 향후 릴리스에서 해제될 수 있는 구현 제한사항입니다.

게시물에 있는 테이블에 다음이 있는 경우어디절, 해당 행표현false로 평가되거나 null이 게시되지 않습니다. 구독에 동일한 테이블이 서로 다른 게시된 여러 게시가 있는 경우어디절, 해당 게시 작업을 참조하는 표현식 중 하나라도 충족되면 행이 게시됩니다. 다른 경우어디절, 출판물 중 하나에 없는 경우어디절(해당 게시 작업 참조) 또는 게시가 다음과 같이 선언됩니다.모든 테이블에 대해또는스키마 테이블의 경우, 행은 다른 표현식의 정의에 관계없이 항상 게시됩니다. 구독자가 다음과 같은 경우:PostgreSQL버전이 15 이전인 경우 초기 데이터 동기화 단계에서 모든 행 필터링이 무시됩니다. 이 경우 사용자는 후속 필터링과 호환되지 않는 처음에 복사된 데이터를 삭제하는 것을 고려할 수 있습니다. 초기 데이터 동기화에서는 게시를 고려하지 않기 때문에게시매개변수를 사용하여 기존 테이블 데이터를 복사할 때 DML을 사용하여 복제되지 않는 일부 행이 복사될 수 있습니다. 참조섹션 31.2.2예를 들어.

동일한 테이블이 다른 열 목록으로 게시된 여러 게시가 있는 구독은 지원되지 않습니다.

우리는 존재하지 않는 출판물을 지정하여 사용자가 나중에 추가할 수 있도록 허용합니다. 이는 다음을 의미합니다.pg_subscription존재하지 않는 출판물이 있을 수 있습니다.

출판의 테이블을 복제하는 원격 서버에 대한 구독 생성나의 출판물insert_only커밋 시 즉시 복제를 시작합니다.

구독 작성 mysub
         연결 '호스트=192.168.1.50 포트=5432 사용자=foo dbname=foodb'
        출판 mypublication, insert_only;

테이블을 복제하는 원격 서버에 대한 구독을 토토합니다.insert_only게시되었으며 나중에 활성화될 때까지 복제를 시작하지 않습니다.

구독 작성 mysub
         연결 '호스트=192.168.1.50 포트=5432 사용자=foo dbname=foodb'
        출판물 insert_only
               WITH(활성화 = 거짓);

호환성

구독 작성포스트그레SQL확장.

수정사항 제출

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