토토 핫 생성 - 새 구독 정의
토토 핫 생성subscription_name
연결 'Conninfo
' 출판publication_name
[, ...] [ 와 함께 (Subscription_Parameter
[=value
] [, ...])
토토 핫 생성
새로운 논리적 반복 토토 핫을 추가합니다. 토토 핫을 생성하는 사용자는 토토 핫의 소유자가됩니다. 토토 핫 이름은 현재 데이터베이스의 기존 토토 핫 이름과 구별되어야합니다.
토토 핫은 게시자에 대한 복제 연결을 나타냅니다. 따라서 로컬 카탈로그에 정의를 추가하는 것 외에도이 명령은 일반적으로 게시자에 복제 슬롯을 만듭니다.
논리적 복제 작업자는 토토 핫이 처음 비활성화되지 않는 한이 명령이 실행되는 트랜잭션 커밋에서 새 토토 핫에 대한 데이터를 복제하기 시작합니다.
토토 핫을 만들 수 있으려면의 권한이 있어야합니다.pg_create_subscription
역할 및생성
현재 데이터베이스의 권한.
토토 핫 및 논리 복제에 대한 추가 정보 전체에서 사용할 수 있습니다네삼_토토 커뮤니티07andPostgreSQL : 문서 : 17 : 29 장. 논리적 토토 캔.
subscription_name
#새 토토 핫의 이름.
연결 'Conninfo
'
#thelibpq연결 문자열이 게시자 데이터베이스에 연결하는 방법을 정의합니다. 자세한 내용은 참조섹션 32.1.1.
Publicationpublication_name
[, ...]
#게시자가 토토 핫 할 간행물의 이름.
with (Subscription_Parameter
[=value
] [, ...])
#이 조항은 구독에 대한 선택적 매개 변수를 지정합니다.
다음 매개 변수는 구독 중에 발생하는 일을 제어합니다.
Connect
(부울
) #토토 핫 생성
명령은 게시자에게 전혀 연결해야합니다. 기본값은true
. 이것을 설정거짓
값을 강요 할 것입니다create_slot
, 활성화
andCopy_Data
to거짓
. (설정을 결합 할 수 없습니다Connect
to거짓
설정create_slot
, 활성화
또는Copy_Data
totrue
.)
이 옵션이있을 때 연결되지 않으므로거짓
, 테이블이 구독되지 않습니다. 복제를 시작하려면 복제 슬롯을 수동으로 생성하고 필요한 경우 장애 조치를 활성화하고 구독을 활성화 한 후 구독을 새로 고침해야합니다. 보다섹션 29.2.3예제.
create_slot
(부울
) #명령이 게시자에 복제 슬롯을 생성 해야하는지 여부를 지정합니다. 기본값은true
.
로 설정된 경우거짓
, 당신은 다른 방법으로 게시자의 슬롯을 만들 책임이 있습니다. 보다섹션 29.2.3예제.
활성화
(부울
) #구독이 적극적으로 복제되어야하는지 또는 아직 설정되어야하지만 아직 시작되지 않았는지 여부를 지정합니다. 기본값은true
.
SLOT_NAME
(String
) #사용할 게시자의 복제 슬롯의 이름. 기본값은 슬롯 이름의 토토 핫 이름을 사용하는 것입니다.
설정SLOT_NAME
to없음
가입과 관련된 복제 슬롯이 없음을 의미합니다. 이러한 구독에는 둘 다 있어야합니다활성화
andcreate_slot
설정거짓
. 나중에 복제 슬롯을 수동으로 생성 할 때 이것을 사용하십시오. 보다섹션 29.2.3예제.
설정시slot_name
유효한 이름으로create_slot
거짓으로,Failover
지정된 슬롯의 속성 값은 상대방과 다를 수 있습니다Failover
구독에 지정된 매개 변수. 항상 슬롯 속성을 보장Failover
구독의 상대방 매개 변수와 일치하며 그 반대도 마찬가지입니다. 그렇지 않으면, 게시자의 슬롯은 이러한 구독 옵션과 다르게 행동 할 수 있습니다. 예를 들어, 게시자의 슬롯은 구독이에도 대기와 동기화 될 수 있습니다Failover
옵션이 비활성화되었거나 구독이있을 때에도 동기화에 비활성화 될 수 있습니다Failover
옵션이 활성화되었습니다.
다음 매개 변수는 구독의 복제 동작이 생성 된 후에 :을 제어합니다.
binary
(부울
) #토토 핫이 게시자에게 텍스트와 달리 데이터를 이진 형식으로 보내도록 요청할지 여부를 지정합니다. 기본값은false
. 초기 테이블 동기화 사본 (참조Copy_Data
)도 동일한 형식을 사용합니다. 이진 형식은 텍스트 형식보다 빠를 수 있지만 기계 아키텍처에서 휴대용이 덜 휴대합니다.PostgreSQL버전. 이진 형식은 매우 데이터 유형에 따라 다릅니다. 예를 들어, A에서 복사 할 수 없습니다.smallint
열에서Integer
열은 텍스트 형식으로 잘 작동하지만. 이 옵션이 활성화 되더라도 바이너리 보내기 및 수신 기능이있는 데이터 유형 만 바이너리로 전송됩니다. 초기 동기화에는 모든 데이터 유형이 바이너리 보내기 및 수신 함수를 갖도록 요구합니다. 그렇지 않으면 동기화가 실패합니다 (참조유형 만들기기능에 대한 자세한 내용).
교차 버전 복제를 수행 할 때 게시자는 일부 데이터 유형에 대한 이진 보내기 기능이 있지만 가입자는 해당 유형에 대한 이진 수신 기능이 부족할 수 있습니다. 이 경우 데이터 전송이 실패하고BINAGE
옵션을 사용할 수 없습니다.
게시자가 A 인 경우PostgreSQL16 이전 버전, 그러면 모든 초기 테이블 동기화는 텍스트 형식을 사용하더라도binary = true
.
Copy_Data
(부울
) #복제가 시작될 때 토토 핫중인 간행물에서 기존 데이터를 복사할지 여부를 지정합니다. 기본값은true
.
간행물에 포함 된 경우여기서
조항, 복사 된 데이터에 영향을 미칩니다. 참조노트자세한 내용.
참조노트방법에 대한 세부 사항copy_data = true
원산지
매개 변수.
스트리밍
(enum
) #이 구독에 대한 진행중인 트랜잭션 스트리밍을 활성화할지 여부를 지정합니다. 기본값은입니다.OFF
, 즉 모든 트랜잭션이 게시자에서 완전히 디코딩 된 후 토토 핫자에게만 전송됩니다.
로 설정된 경우on
, 들어오는 변경 사항은 임시 파일에 기록 된 다음 거래가 게시자에게 커밋되어 가입자가 수신 한 후에 만 적용됩니다..
로 설정된 경우병렬
, 들어오는 변경 사항은 가능한 경우 병렬 적용 작업자 중 하나를 통해 직접 적용됩니다. 병렬 적 신청 작업자가 스트리밍 트랜잭션을 자유롭게 처리 할 수없는 경우 변경 사항은 임시 파일에 기록되고 거래가 커밋 된 후에 적용됩니다. 병렬 적용 작업자에서 오류가 발생하면 원격 트랜잭션의 마무리 LSN이 서버 로그에서보고되지 않을 수 있습니다.
synchronous_commit
(enum
) #이 매개 변수의 값은를 무시합니다.synchronous_commit이 구독의 적용 작업자 프로세스 내에서 설정. 기본값은입니다.OFF
.
사용하기에 안전합니다OFF
논리적 복제의 경우 : 가입자가 동기화 누락으로 인해 트랜잭션을 잃으면 데이터가 게시자로부터 다시 전송됩니다.
동기 논리 복제를 수행 할 때 다른 설정이 적절할 수 있습니다. 논리적 복제 작업자는 쓰기의 위치를보고하고 플러시가 게시자에게보고하며, 동기 복제를 사용할 때 게시자는 실제 플러시를 기다립니다. 이것은 설정을 의미synchronous_commit
가입자의 경우OFF
토토 핫이 동기 복제에 사용되는 경우 대기 시간이 증가 할 수 있습니다.커밋
출판사에서. 이 시나리오에서는 설정하는 것이 유리할 수 있습니다synchronous_commit
tolocal
이상.
Two_phase
(부울
) #이 구독에 대해 2 단계 커밋이 활성화되어 있는지 여부를 지정합니다. 기본값은거짓
.
2 단계 커밋이 활성화되면 준비된 트랜잭션이 가입자에게 전송됩니다.거래 준비
, 가입자의 2 상 트랜잭션으로 처리됩니다. 그렇지 않으면, 준비된 거래는 커밋 된 경우에만 가입자에게 전송 된 다음 가입자가 즉시 처리됩니다.
2 상 커밋의 구현을 위해서는 복제가 초기 테이블 동기화 단계를 성공적으로 완료해야합니다. 그래서Two_Phase
구독에 대해 활성화되면 내부 2 상 상태는 일시적으로 유지됩니다“보류”초기화 단계가 완료 될 때까지. 열 참조Subtwophasestate
of배트맨 토토 : 문서 : 17
실제 2 상 상태를 알기 위해.
disable_on_error
(부울
) #게시자의 데이터 복제 중에 가입 작업자가 오류를 감지하면 구독이 자동으로 비활성화되어야하는지 여부를 지정합니다. 기본값은false
.
password_required
(부울
) #로 설정된 경우true
,이 구독의 결과로 작성된 게시자에 대한 연결은 비밀번호 인증을 사용해야하며 비밀번호는 연결 문자열의 일부로 지정되어야합니다. 이 설정은 슈퍼 사용자가 구독을 소유 할 때 무시됩니다. 기본값은true
. 수퍼 유저만이 값을로 설정할 수 있습니다.false
.
run_as_owner
(부울
) #TRUE 인 경우 모든 복제 작업은 가입 소유자로 수행됩니다. False 인 경우 복제 작업자는 해당 테이블의 소유자로 각 테이블에서 작업을 수행합니다. 후자의 구성은 일반적으로 훨씬 더 안전합니다. 자세한 내용은 참조PostgreSQL : 문서 : 17 : 29.10. 토토 사이트. 기본값은false
.
원산지
(String
) #구독이 출판사에게 원산지에 관계없이 원점이없는 변경 사항 만 보내거나 변경 사항을 보내도록 요청할지 여부를 지정합니다. 환경원산지
to없음
구독은 게시자에게 원산지가없는 변경 사항 만 보내도록 요청한다는 것을 의미합니다. 환경원산지
toany
는 출판사가 원산지에 관계없이 변경 사항을 보낸다는 것을 의미합니다. 기본값은Any
.
참조노트방법에 대한 세부 사항copy_data = true
와 상호 작용할 수 있습니다원산지
매개 변수.
Failover
(부울
) #가입과 관련된 복제 슬롯이 실패 후 새로운 기본에서 논리적 복제를 재개 할 수 있도록 구독과 관련된 복제 슬롯이 대기에 동기화 될 수 있는지 여부를 지정합니다. 기본값은false
.
유형의 매개 변수를 지정할 때부울
, The=
value
부품을 생략 할 수 있습니다. 이는 지정과 동일합니다true
.
참조PostgreSQL : 문서 : 17 : 29.10. 토토 사이트구독 및 게시 인스턴스 간의 액세스 제어를 구성하는 방법에 대한 자세한 내용.
복제 슬롯을 만들 때 (기본 동작),토토 핫 생성
트랜잭션 블록 내부에서 실행할 수 없습니다.
동일한 데이터베이스 클러스터에 연결되는 토토 핫 생성 (예 : 동일한 클러스터의 데이터베이스간에 복제하거나 동일한 데이터베이스 내에서 복제하기 위해)은 복제 슬롯이 동일한 명령의 일부로 생성되지 않은 경우에만 성공합니다. 그렇지 않으면토토 핫 생성
전화가 중단됩니다. 이 작동하려면 복제 슬롯을 별도로 만듭니다 (함수 사용pg_create_logical_replication_slot
플러그인 이름과 함께pgoutput
) 및 매개 변수를 사용하여 토토 핫 생성create_slot = false
. 보다섹션 29.2.3예제. 이것은 향후 릴리스에서 해제 될 수있는 구현 제한입니다.
출판물에있는 테이블에여기서
조항, 행표현
False로 평가하거나 NULL이 게시되지 않습니다. 토토 핫에 동일한 테이블이 다른 것으로 게시 된 몇 가지 간행물이있는 경우여기서
클로즈, 표현식 (해당 게시 작업을 언급)이 충족되면 행이 게시됩니다. 다른 경우여기서
출판물 중 하나에 없으면 조항여기서
조항 (해당 게시 작업 참조) 또는 출판물은로 선언됩니다.모든 테이블의 경우
또는스키마 테이블
, 행은 다른 표현의 정의에 관계없이 항상 게시됩니다. 가입자가 A 인 경우PostgreSQL버전 15 이전 버전에서는 초기 데이터 동기화 단계에서 행 필터링이 무시됩니다. 이 경우 사용자는 후속 필터링과 호환되지 않는 처음 복사 된 데이터 삭제를 고려할 수 있습니다. 초기 데이터 동기화가 출판물을 고려하지 않기 때문에게시
매개 변수 기존 테이블 데이터를 복사 할 때 DML을 사용하여 복제되지 않는 일부 행을 복사 할 수 있습니다. 보다섹션 29.2.2예제.
다른 열 목록으로 동일한 테이블이 게시 된 여러 간행물이있는 구독은 지원되지 않습니다.
우리는 사용자가 나중에 이들을 추가 할 수 있도록 존재하지 않는 출판물을 지정할 수 있습니다. 이것은 의미배트맨 토토 : 문서 : 17
존재하지 않는 출판물을 가질 수 있습니다.
구독 매개 변수 조합을 사용할 때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);
간행물에서 테이블을 복제하는 원격 서버 토토 핫 생성MyPublication
andinsert_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확장.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면