이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 메이저 토토 사이트 생성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

와이즈 토토 생성

와이즈 토토 생성 - 새 와이즈 토토 정의

시놉시스

와이즈 토토 생성subscription_name연결 'Conninfo'
    출판publication_name[, ...]
    [ 와 함께 (subscription_parameter [= value] [, ... ] ) ]

설명

와이즈 토토 생성새로운 논리적 반복 와이즈 토토을 추가합니다. 와이즈 토토을 생성하는 사용자는 와이즈 토토의 소유자가됩니다. 와이즈 토토 이름은 현재 데이터베이스의 기존 와이즈 토토 이름과 구별되어야합니다.

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

논리적 복제 작업자는 와이즈 토토이 처음 비활성화되지 않는 한이 명령이 실행되는 트랜잭션 커밋에서 새 와이즈 토토에 대한 데이터를 복제하기 시작합니다.

와이즈 토토을 만들 수 있으려면의 권한이 있어야합니다.pg_create_subscription역할 및Create현재 데이터베이스의 권한.

와이즈 토토 및 논리 복제에 대한 추가 정보 전체에서 사용할 수 있습니다롤 토토andPostgreSQL : 문서 : 개발 : 29 장. 논리적 토토 결과.

매개 변수

subscription_name #

새 와이즈 토토의 이름.

연결 'Conninfo' #

thelibpq연결 문자열이 게시자 데이터베이스에 연결하는 방법을 정의합니다. 자세한 내용은 참조섹션 32.1.1.

Publicationpublication_name [, ...] #

가입자가 출판사의 출판물 이름.

with (Subscription_Parameter [= value] [, ... ] ) #

이 조항은 와이즈 토토의 선택적 매개 변수를 지정합니다.

다음 매개 변수는 와이즈 토토 생성 중에 발생하는 일을 제어합니다.

Connect (부울) #

와이즈 토토 생성명령은 게시자에게 전혀 연결해야합니다. 기본값은true. 이것을 설정거짓값을 강요 할 것입니다create_slot, 활성화andCopy_Datato거짓. (설정을 결합 할 수 없습니다Connectto거짓설정create_slot, 활성화또는Copy_Datatotrue.)

이 옵션이있을 때 연결되지 않으므로false, 테이블이 와이즈 토토되지 않습니다. 복제를 시작하려면 복제 슬롯을 수동으로 생성하고 필요한 경우 장애 조치를 활성화하고 와이즈 토토을 활성화 한 후 와이즈 토토을 새로 고침해야합니다. 보다섹션 29.2.3예제.

create_slot (부울) #

명령이 게시자에 복제 슬롯을 생성 해야하는지 여부를 지정합니다. 기본값은True.

로 설정된 경우거짓, 당신은 다른 방식으로 게시자의 슬롯을 만들 책임이 있습니다. 보다섹션 29.2.3예제.

활성화 (부울) #

와이즈 토토이 적극적으로 복제되어야하는지 또는 아직 설정 해야하는지 아직 시작되지 않았는지 여부를 지정합니다. 기본값은true.

slot_name (String) #

사용할 게시자의 복제 슬롯의 이름. 기본값은 슬롯 이름의 와이즈 토토 이름을 사용하는 것입니다. 이름이 될 수 없습니다pg_conflict_detection충돌 감지를 위해 예약되어 있습니다.

설정slot_nameto없음가입과 관련된 복제 슬롯이 없음을 의미합니다. 이러한 와이즈 토토에는 둘 다 있어야합니다활성화andcreate_slot설정거짓. 나중에 복제 슬롯을 수동으로 생성 할 때 이것을 사용하십시오. 보다섹션 29.2.3예제.

설정시slot_name유효한 이름으로create_slotto거짓, TheFailover지정된 슬롯의 속성 값은 상대방과 다를 수 있습니다Failover와이즈 토토에 지정된 매개 변수. 항상 슬롯 속성을 보장Failover와이즈 토토의 상대방 매개 변수와 일치하며 그 반대도 마찬가지입니다. 그렇지 않으면, 게시자의 슬롯은 이러한 와이즈 토토 옵션과 다르게 행동 할 수 있습니다. 예를 들어, 게시자의 슬롯은 와이즈 토토이에도 대기와 동기화 될 수 있습니다Failover옵션이 비활성화되었거나 와이즈 토토이있을 때에도 동기화에 비활성화 될 수 있습니다Failover옵션이 활성화되었습니다.

다음 매개 변수는 와이즈 토토의 복제 동작이 생성 된 후에 :을 제어합니다.

Binary (부울) #

와이즈 토토이 게시자에게 텍스트와 달리 데이터를 이진 형식으로 보내도록 요청할지 여부를 지정합니다. 기본값은거짓. 초기 테이블 동기화 사본 (참조Copy_Data)도 동일한 형식을 사용합니다. 이진 형식은 텍스트 형식보다 빠를 수 있지만 기계 아키텍처에서 휴대용이 덜 휴대합니다.PostgreSQL버전. 이진 형식은 매우 데이터 유형에 따라 다릅니다. 예를 들어, A에서 복사 할 수 없습니다.smallint열에서정수열은 텍스트 형식으로 잘 작동하지만. 이 옵션이 활성화 되더라도 바이너리 보내기 및 수신 기능이있는 데이터 유형 만 바이너리로 전송됩니다. 초기 동기화에는 모든 데이터 유형이 바이너리 보내기 및 수신 함수를 갖도록 요구합니다. 그렇지 않으면 동기화가 실패합니다 (참조유형 만들기기능에 대한 자세한 내용은 기능).

교차 버전 복제를 수행 할 때 게시자는 일부 데이터 유형에 대한 이진 보내기 기능이 있지만 가입자는 해당 유형에 대한 이진 수신 기능이 부족할 수 있습니다. 이 경우 데이터 전송이 실패하고BINAGE옵션을 사용할 수 없습니다.

게시자가 A 인 경우PostgreSQL16 이전 버전, 그러면 초기 테이블 동기화는 텍스트 형식을 사용하더라도BINAGE = TRUE.

Copy_Data (부울) #

복제가 시작될 때 와이즈 토토중인 간행물에서 기존 데이터를 복사할지 여부를 지정합니다. 기본값은true.

간행물에 포함 된 경우여기서조항은 복사 된 데이터에 영향을 미칩니다. 참조노트자세한 내용.

참조노트방법에 대한 세부 사항copy_data = true와 상호 작용할 수 있습니다Origin매개 변수.

스트리밍 (enum) #

이 가입에 대한 진행중인 트랜잭션 스트리밍을 활성화할지 여부를 지정합니다. 기본값은입니다.병렬, 이는 가능한 경우 병렬 적 신청 작업자 중 하나를 통해 직접적으로 변경되는 것을 의미합니다. 병렬 적 신청 작업자가 스트리밍 트랜잭션을 자유롭게 처리 할 수없는 경우 변경 사항은 임시 파일에 기록되고 거래가 커밋 된 후에 적용됩니다. 병렬 적용 작업자에서 오류가 발생하면 원격 트랜잭션의 마무리 LSN이 서버 로그에서보고되지 않을 수 있습니다.

주의

게시자와 가입자의 스키마가 다를 때 교착 상태의 위험이 있습니다. 신청 근로자는 이러한 거래를 자동으로 재 시도 할 수 있습니다.

로 설정된 경우on, 들어오는 변경 사항은 임시 파일에 기록 된 다음 거래가 게시자에게 커밋되고 가입자가 수신 한 후에 만 ​​적용됩니다..

로 설정된 경우OFF, 모든 트랜잭션은 게시자에게 완전히 디코딩 된 다음 와이즈 토토자에게만 전송됩니다.

synchronous_commit (enum) #

이 매개 변수의 값은를 무시합니다.synchronous_commit이 와이즈 토토의 적용 작업자 프로세스 내에서 설정. 기본값은입니다.OFF.

사용하기에 안전합니다OFF논리 복제의 경우 : 가입자가 동기화 누락으로 인해 트랜잭션을 잃으면 게시자에게 데이터가 다시 전송됩니다..

동기 논리 복제를 수행 할 때 다른 설정이 적절할 수 있습니다. 논리적 복제 작업자는 글의 위치를보고하고 플러시가 게시자에게보고하며, 동기 복제를 사용할 때 게시자는 실제 플러시를 기다립니다. 이것은 설정을 의미synchronous_commit가입자의 경우OFF와이즈 토토이 동기 복제에 사용되는 경우의 대기 시간이 증가 할 수 있습니다.커밋출판사에서. 이 시나리오에서는 설정하는 것이 유리할 수 있습니다synchronous_committo로컬이상.

Two_Phase (부울) #

이 와이즈 토토에 대해 2 단계 커밋이 활성화되어 있는지 여부를 지정합니다. 기본값은거짓.

2 단계 커밋이 활성화되면 준비된 트랜잭션이 가입자에게 전송됩니다.거래 준비, 가입자의 2 상 트랜잭션으로 처리됩니다. 그렇지 않으면, 준비된 거래는 커밋 된 경우에만 가입자에게 전송 된 다음 가입자가 즉시 처리됩니다.

2 단계 커밋의 구현을 위해서는 복제가 초기 테이블 동기화 단계를 성공적으로 완료해야합니다. 그래서Two_phase와이즈 토토에 대해 활성화되어 있으며 내부 2 상 상태는 일시적으로 유지됩니다보류초기화 단계가 완료 될 때까지. 열 참조Subtwophasestateofpg_subscription실제 2 상 상태를 알기 위해.

disable_on_error (부울) #

게시자의 데이터 복제 중에 가입 작업자가 오류를 감지하면 와이즈 토토이 자동으로 비활성화되어야하는지 여부를 지정합니다. 기본값은false.

password_required (부울) #

로 설정된 경우true,이 와이즈 토토의 결과로 작성된 게시자에 대한 연결은 비밀번호 인증을 사용해야하며 비밀번호는 연결 문자열의 일부로 지정되어야합니다. 이 설정은 슈퍼 사용자가 와이즈 토토을 소유 할 때 무시됩니다. 기본값은true. 수퍼 유저만이 값을로 설정할 수 있습니다.거짓.

run_as_owner (부울) #

True 인 경우 모든 복제 작업은 가입 소유자로 수행됩니다. False 인 경우 복제 작업자는 해당 테이블의 소유자로 각 테이블에서 작업을 수행합니다. 후자의 구성은 일반적으로 훨씬 더 안전합니다. 자세한 내용은 참조스포츠 토토 베트맨 : 문서 : 개발 : 29.11. 스포츠 토토 베트맨. 기본값은거짓.

원산지 (String) #

와이즈 토토이 출판사에게 원산지에 관계없이 원점이없는 변경 사항 만 보내도록 요청할지 여부를 지정합니다. 환경원산지to없음와이즈 토토은 게시자에게 원산지가없는 변경 사항 만 보내도록 요청한다는 것을 의미합니다. 환경원산지toAny는 출판사가 원산지에 관계없이 변경 사항을 보낸다는 것을 의미합니다. 기본값은Any.

참조노트방법에 대한 세부 사항copy_data = true원산지매개 변수.

Failover (부울) #

가입과 관련된 복제 슬롯이 실패 후 새로운 기본에서 논리적 복제를 재개 할 수 있도록 와이즈 토토과 관련된 복제 슬롯이 대기에 동기화 될 수 있는지 여부를 지정합니다. 기본값은거짓.

retain_dead_tuples (부울) #

가입자의 충돌 감지에 필요한 정보 (예 : 죽은 튜플, 커밋 타임 스탬프 및 기원)가 유지되는지 여부를 지정합니다. 기본값은거짓. 로 설정된 경우True,의 감지update_deleted가 활성화되어 있고 물리적 복제 슬롯이라는 이름의pg_conflict_detection가입자에게 충돌이 제거되는 것을 방지하기 위해 가입자에게 생성됩니다.

충돌 감지에 유용한 정보는 슬롯 생성 후에 만 ​​유지됩니다. 쿼리를 통해이 슬롯의 존재를 확인할 수 있습니다스포츠 토토 PostgreSQL : 문서. 또한 하나의 노드의 여러 와이즈 토토 이이 옵션을 활성화하더라도 하나의 복제 슬롯 만 생성됩니다. 또한,Wal_level로 설정해야합니다복제복제 슬롯을 사용할 수 있도록 하이.

주의

와이즈 토토이 비활성화 된 경우 충돌 감지 정보를 제거 할 수 없습니다. 따라서 와이즈 토토이 활성화 될 때까지 정보가 축적됩니다. 과도한 축적을 방지하려면 비활성화하는 것이 좋습니다retain_dead_tuples와이즈 토토이 장기간 비활성화되는 경우.

추가로 활성화 할 때retain_dead_tuples논리적 복제의 충돌 감지의 경우, 데이터 보존 요구 사항과 전체 시스템 성능의 균형을 맞추기 위해 복제 토폴로지를 설계하는 것이 중요합니다. 이 옵션은 적절하게 적용 할 때 최소 성능 오버 헤드를 제공합니다. 다음 시나리오는이 옵션을 활성화 할 때 효과적인 사용 패턴을 보여줍니다.

a. 양방향 테이블이있는 대형 테이블 : 게시자와 가입자 노드 모두에 동시 쓰기가 적용되는 대형 테이블의 경우 게시자는 데이터를 세그먼트로 만들기 위해 출판물을 작성할 때 행 필터를 정의 할 수 있습니다. 이를 통해 여러 와이즈 토토이 테이블의 독점 서브 세트를 병렬로 복제하여 처리량을 최적화 할 수 있습니다.

b. 쓰기 가능 가입자 : 가입자 노드가 쓰기 작업을 수행 할 것으로 예상되는 경우 여러 간행물 및 와이즈 토토을 사용하여 복제를 구성 할 수 있습니다. 이 간행물에 테이블을 배포함으로써 워크로드는 여러 응용 근로자들 사이에 퍼져 동시성을 향상시키고 경합을 줄입니다.

c. 읽기 전용 가입자 : 동시 쓰기 작업을 수행하는 단일 또는 다중 게시자 노드와 관련된 구성에서 읽기 전용 가입자 노드는 인덱스 스캔을하는 경우 성능 영향을 보지 않고 변경 사항을 복제 할 수 있습니다. 그러나 가입자가 복제 지연 또는 스캔 성능으로 인해 영향을받는 경우 (예 : 순차적 스캔으로 인해) 가입자에게 워크로드를 배포하기 위해 이전 두 가지 전략 중 하나를 따라야합니다..

게시자가 물리적 대기 인 경우이 옵션을 활성화 할 수 없습니다.

이 옵션을 활성화하면 출판사에서 로컬로 발생하는 변경에 대해서만 충돌 감지에 유용한 정보를 유지하도록합니다. 다른 기원에서 비롯된 변경의 경우 신뢰할 수있는 갈등 탐지가 보장 될 수 없습니다.

max_retention_duration (정수) #

이 와이즈 토토의 적용 작업자가 충돌 감지에 유용한 정보를 보유 할 수있는 밀리 초의 최대 기간retain_dead_tuples가 활성화되었습니다. 기본값은입니다.0, 정보가 더 이상 탐지 목적으로 필요하지 않을 때까지 정보가 유지됨을 나타냅니다.

모든 충돌 감지에 유용한 정보는 와이즈 토토과 관련된 모든 응용 근로자가 있으면 더 이상 유지되지 않습니다.retain_dead_tuples가 활성화되어 있고, 유지 기간이 초과되었는지 확인하십시오max_retention_duration해당 와이즈 토토 내에서 설정합니다. 적어도 하나의 신청 작업자가 유지 기간이 지정된 한도 내에 있는지 또는 새 와이즈 토토이 생성 될 때가 자동으로 재개됩니다.retain_dead_tuples = true. 대안 적으로, 보유는 재 활성화되어 수동으로 재개 될 수 있습니다retain_dead_tuples.

이 매개 변수에 대해 0보다 큰 다른 와이즈 토토이 그것을 초과하지 않았 거나이 옵션을 0으로 설정하는 경우 전체 보존이 중지되지 않습니다.

이 옵션은 만 유효합니다.retain_conflict_info가 활성화되고 와이즈 토토과 관련된 신청인이 활성화되어 있습니다.

경고

이 옵션에 대해 0이 아닌 값을 설정하면 충돌 감지에 대한 정보가 조기에 제거 될 수있어 충돌 감지가 잘못되었을 수 있습니다.

유형의 매개 변수를 지정할 때부울,= value부품을 생략 할 수 있습니다. 이는 지정과 동일합니다true.

노트

참조스포츠 토토 베트맨 : 문서 : 개발 : 29.11. 스포츠 토토 베트맨와이즈 토토 및 게시 인스턴스 간의 액세스 제어를 구성하는 방법에 대한 자세한 내용.

복제 슬롯을 만들 때 (기본 동작),와이즈 토토 생성트랜잭션 블록 내부에서 실행할 수 없습니다.

동일한 데이터베이스 클러스터에 연결되는 와이즈 토토 생성 (예 : 동일한 클러스터의 데이터베이스간에 복제하거나 동일한 데이터베이스 내에서 복제하기 위해)은 복제 슬롯이 동일한 명령의 일부로 생성되지 않은 경우에만 성공합니다. 그렇지 않으면와이즈 토토 생성전화가 걸려 있습니다. 이 작동하려면 복제 슬롯을 별도로 만듭니다 (함수 사용pg_create_logical_replication_slot플러그인 이름이있는pgoutput) 및 매개 변수를 사용하여 와이즈 토토 생성create_slot = false. 보다섹션 29.2.3예제. 이것은 향후 릴리스에서 해제 될 수있는 구현 제한입니다.

출판물에있는 테이블이있는 경우여기서절, 조항표현평가거짓또는NULL는 게시되지 않습니다. 와이즈 토토에 동일한 테이블이 다른 것으로 게시 된 몇 가지 간행물이있는 경우여기서클로즈, 표현식 (해당 게시 작업 참조)이 충족되면 행이 게시됩니다. 다른 경우여기서출판물 중 하나에 없으면 조항여기서조항 (해당 게시 작업 참조) 또는 출판물은로 선언됩니다.모든 테이블또는스키마 테이블, 행은 다른 표현의 정의에 관계없이 항상 게시됩니다. 가입자가 A 인 경우PostgreSQL15 이전 버전에서는 초기 데이터 동기화 단계에서 행 필터링이 무시됩니다. 이 경우 사용자는 후속 필터링과 호환되지 않는 처음 복사 된 데이터 삭제를 고려할 수 있습니다. 초기 데이터 동기화가 출판물을 고려하지 않기 때문에게시매개 변수 기존 테이블 데이터를 복사 할 때 DML을 사용하여 복제되지 않는 일부 행을 복사 할 수 있습니다. 보다섹션 29.2.2예제.

다른 열 목록으로 동일한 테이블이 게시 된 여러 간행물이있는 와이즈 토토은 지원되지 않습니다.

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

와이즈 토토 매개 변수 조합을 사용할 때copy_data = true원산지 = 없음, 초기 동기화 테이블 데이터는 게시자로부터 직접 복사되므로 해당 데이터의 실제 기원에 대한 지식이 불가능하다는 것을 의미합니다. 게시자에 와이즈 토토이있는 경우 복사 된 테이블 데이터가 추가 업스트림에서 시작되었을 수 있습니다. 이 시나리오가 감지되고 경고가 사용자에게 기록되어 있지만 경고는 잠재적 인 문제를 나타내는 것입니다. 복사 된 데이터 원산지가 실제로 원하는지 아닌지 확인하기 위해 필요한 점검을하는 것은 사용자의 책임입니다.

게시자에 생성 된 다른 와이즈 토토으로 인해 비 국소 기원을 포함 할 수있는 테이블을 찾으려면이 SQL 쿼리를 시도하십시오.

# 대체 <pub-names 아래의 출판물 이름과 함께 쿼리 할 것입니다.
별도의 pt.schemaname, pt.tablename을 선택하십시오
pg_publication_tables pt
     pg_class c에 가입하십시오 (c.relname = pt.tablename)
     pg_namespace n on (n.nspname = pt.schemaname),
     pg_subscription_rel ps
여기서 c.relnamespace = n.oid 및
      (ps.srrelid = C.Oid 또는
      C.Oid in (PG_PARTITION_ANCESSTORS (PS.SRRELID) UNION에서 RELID를 선택하십시오
                pg_partition_tree (ps.srrelid))))에서 린드를 선택하십시오
      Pt.pubName in (<pub-names);

예제

간행물에서 테이블을 복제하는 원격 서버에 대한 와이즈 토토 생성MyPublicationandinsert_only그리고 Commit에서 즉시 복제를 시작합니다 :

와이즈 토토 생성 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
               (enabled = false);

호환성

와이즈 토토 생성isPostgreSQL확장.