이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다범퍼카 토토 postgresql : 문서 : 17 : pg_createsubscriber버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

pg_createsubscriber

PG_CREATESUBSCRIPER - 물리적 롤 토토품을 새로운 논리적 롤 토토본으로 변환

시놉시스

pg_createsubscriber[옵션...]-d | -databasedbname-d | --pgdataDatadir-p | -publisher-serverconnstr

설명

pg_createsubscriber물리적 대기 서버에서 새로운 논리적 롤 토토본을 만듭니다. 지정된 데이터베이스의 모든 테이블이에 포함되어 있습니다.논리 롤 토토설정. 각 데이터베이스마다 한 쌍의 출판 및 구독 객체가 작성됩니다. 대상 서버에서 실행해야합니다.

성공적인 실행 후 대상 서버의 상태는 새로운 논리적 롤 토토 설정과 유사합니다. 논리적 롤 토토 설정과의 주요 차이점pg_createsubscriber데이터 동기화가 수행되는 방법입니다.pg_createsubscriber초기 테이블 데이터를 복사하지 않습니다. 동기화 단계 만 수행하여 각 테이블이 동기화 된 상태로 연결되도록합니다.

pg_createsubscriber논리적 롤 토토 설정에서 대부분의 시간은 초기 데이터 사본을 수행하기 때문에 대형 데이터베이스 시스템을 대상으로합니다. 또한,이 긴 시간의 부작용은 동기화 데이터 동기화 데이터의 부작용은 일반적으로 적용해야 할 많은 변화 (초기 데이터 사본 중에 생성)이며, 이는 논리 종제를 사용할 수있는 시간이 훨씬 더 증가합니다. 더 작은 데이터베이스의 경우 초기 데이터 동기화로 논리적 롤 토토를 설정하는 것이 좋습니다. 자세한 내용은를 참조하십시오.구독 생성 Copy_Data옵션.

옵션

pg_createsubscriber다음 명령 줄 인수를 수락합니다 :

-a
-all

대상 서버에서 데이터베이스 당 하나의 구독을 만듭니다. 예외는 연결을 허용하지 않는 템플릿 데이터베이스 및 데이터베이스입니다. 모든 데이터베이스 목록을 찾으려면에 지정된 데이터베이스 이름을 사용하여 소스 서버에 연결하십시오.-publisher-server연결 문자열 또는 지정되지 않은 경우Postgres데이터베이스가 사용되거나 존재하지 않는 경우template1사용됩니다. 구독, 간행물 및 복제 슬롯의 자동 생성 이름은이 옵션을 지정할 때 사용됩니다. 이 옵션은와 함께 사용할 수 없습니다.-database, -출판, -replication-slot또는--- 소독.

-ddbname
10393_10406dbname

구독을 생성 할 데이터베이스의 이름. 여러 데이터베이스를 여러 가지 작성하여 선택할 수 있습니다-d스위치. 이 옵션은와 함께 사용할 수 없습니다.-a. 만약에-d옵션이 제공되지 않으며 데이터베이스 이름은에서 얻을 수 있습니다.-p옵션. 데이터베이스 이름이 어느쪽에 지정되지 않은 경우-d옵션 또는-p옵션 및-a옵션이 지정되지 않으면 오류 가보고됩니다.

-d디렉토리
--pgdata =디렉토리

실제 복제본의 클러스터 디렉토리가 포함 된 대상 디렉토리.

-n
-드라이 런

실제로 대상 디렉토리 수정을 제외하고 모든 작업을 수행합니다.

-p포트
--subscriber-port =포트

대상 서버가 연결을 듣는 포트 번호. 의도하지 않은 클라이언트 연결을 피하기 위해 포트 50432에서 대상 서버를 실행하는 기본값

-pconnstr
--- 게시자-서버 =connstr

게시자와 연결 문자열. 자세한 내용은 참조섹션 32.1.1.

-robjtype
-remove =objtype

대상 서버의 지정된 데이터베이스에서 지정된 유형의 모든 객체를 제거합니다.

  • Publications: the모든 테이블의 경우이 가입자를 위해 설정된 출판물은 항상 제거됩니다. 이 객체 유형을 지정하면 소스 서버에서 롤 토토 된 다른 모든 출판물도 삭제됩니다.

삭제하기로 선택한 개체는 a를 포함하여 개별적으로 기록됩니다.-드라이 런. 선택한 객체의 삭제에 영향을 미치거나 중지 할 기회는 없으므로 사용을 사용하여 백업을하는 것을 고려하십시오.pg_dump.

-sdir
--- 소켓 디르 =dir

대상 서버에서 우체국 마스터 소켓에 사용할 디렉토리. 기본값은 현재 디렉토리입니다.

-t
-Recovery-timeout =

복구가 끝날 때까지 기다리는 최대 초의 최대 초. 0으로 설정하면 비활성화됩니다. 기본값은 0입니다.

-t
--enable-two-phase

활성화Two_Phase구독을 커밋하십시오. 여러 데이터베이스가 지정되면이 옵션은 해당 데이터베이스에서 생성 된 모든 구독에 균일하게 적용됩니다. 기본값은false.

-u사용자 이름
--subscriber-username =사용자 이름

대상 서버에서 연결할 사용자 이름. 현재 운영 체제 사용자 이름에 대한 기본값.

-v
-Versbose

verbose 모드를 활성화합니다. 이로 인해pg_createsubscriber표준 오류에 대한 각 단계에 대한 진행 메시지 및 자세한 정보를 출력하려면. 옵션을 반복하면 표준 오류에 추가 디버그 레벨 메시지가 표시됩니다.

--config-file =filename

대상 데이터 디렉토리에 지정된 기본 서버 구성 파일 사용.pg_createsubscriber내부적으로PG_CTL대상 서버를 시작하고 중지하려는 명령. 실제를 지정할 수 있습니다postgresql.conf구성 파일 데이터 디렉토리 외부에 저장된 경우

--- 공개 =이름

논리적 복제를 설정하는 출판물 이름. 여러 간행물은 여러 가지를 작성하여 지정할 수 있습니다-공개스위치. 출판 이름 수는 지정된 데이터베이스 수와 일치해야합니다. 그렇지 않으면 오류 가보고됩니다. 다중 게시 이름 스위치의 순서는 데이터베이스 스위치의 순서와 일치해야합니다. 이 옵션이 지정되지 않은 경우 생성 된 이름이 게시 이름에 할당됩니다. 이 옵션은와 함께 사용할 수 없습니다.-all.

-replication-slot =이름

논리적 복제를 설정하기위한 복제 슬롯 이름. 다중 복제 슬롯을 여러 가지 작성하여 지정할 수 있습니다-replication-slot스위치. 복제 슬롯 이름의 수는 지정된 데이터베이스 수와 일치해야합니다. 그렇지 않으면 오류 가보고됩니다. 다중 복제 슬롯 이름 스위치의 순서는 데이터베이스 스위치의 순서와 일치해야합니다. 이 옵션이 지정되지 않은 경우 구독 이름은 복제 슬롯 이름에 할당됩니다. 이 옵션은와 함께 사용할 수 없습니다.-all.

--- 소독 =이름

논리적 복제를 설정하는 가입 이름. 여러 구독은 여러 개의 쓰기를 지정할 수 있습니다--- 소독스위치. 구독 이름 수는 지정된 데이터베이스 수와 일치해야합니다. 그렇지 않으면 오류 가보고됩니다. 여러 구독 이름 스위치의 순서는 데이터베이스 스위치의 순서와 일치해야합니다. 이 옵션이 지정되지 않은 경우 생성 된 이름이 구독 이름에 할당됩니다. 이 옵션은와 함께 사용할 수 없습니다.-all.

-v
-버전

인쇄pg_createsubscriber버전 및 종료.

-?
-help

도움말 표시pg_createsubscriber명령 줄 인수 및 종료.

노트

전제 조건

에 대한 전제 조건이 있습니다pg_createsubscriber대상 서버를 논리적 롤 토토본으로 변환합니다. 이것들이 충족되지 않으면 오류 가보고됩니다. 소스 및 대상 서버는와 동일한 주요 버전을 가져야합니다.pg_createsubscriber. 주어진 대상 데이터 디렉토리에는 소스 데이터 디렉토리와 동일한 시스템 식별자가 있어야합니다. 대상 데이터 디렉토리에 주어진 데이터베이스 사용자는 생성에 대한 권한이 있어야합니다PostgreSQL : 문서 : 18 : 스포츠 토토 사이트 생성및 사용pg_replication_origin_advance ().

대상 서버는 물리적 대기로 사용해야합니다. 대상 서버에는max_active_replication_originsandmax_logical_replication_workers지정된 데이터베이스 수와 같은 값으로 구성되었습니다. 대상 서버에는max_worker_processes지정된 데이터베이스 수보다 큰 값으로 구성되었습니다. 대상 서버는 로컬 연결을 수락해야합니다. 를 사용할 계획이라면--enable-two-phase스위치는를 설정해야합니다max_prepared_transactions적절하게.

소스 서버는 대상 서버에서 연결을 수락해야합니다. 소스 서버가 복구 중에있어서는 안됩니다. 소스 서버에는Wal_levelasLogical. 소스 서버에는max_replication_slots지정된 데이터베이스 수와 기존 복제 슬롯의 수보다 큰 값으로 구성되었습니다. 소스 서버에는max_wal_senders지정된 데이터베이스 및 기존 WAL 발신자 프로세스 수와 같은 값으로 구성되었습니다.

경고

ifpg_createsubscriber22044_22222

pg_createsubscriber일반적으로 변환하는 동안 다른 연결 설정으로 대상 서버를 시작합니다. 따라서 대상 서버에 대한 연결이 실패해야합니다.

DDL 명령은 논리적 롤 토토로 롤 토토되지 않으므로 실행 중에 데이터베이스 스키마를 변경하는 DDL 명령을 실행하지 마십시오pg_createsubscriber. 대상 서버가 이미 논리적 롤 토토본으로 변환 된 경우 DDL 명령이 롤 토토되지 않아 오류가 발생할 수 있습니다.

ifpg_createsubscriber처리 중에 실패, 소스 서버에서 생성 된 객체 (출판물, 복제 슬롯)가 제거됩니다. 대상 서버가 소스 서버에 연결할 수없는 경우 제거가 실패 할 수 있습니다. 이 경우 경고 메시지는 남은 객체에 알려줍니다. 대상 서버가 실행중인 경우 중지됩니다.

롤 토토가 사용중인 경우Primary_Slot_name, 논리적 롤 토토 설정 후 소스 서버에서 제거됩니다.

대상 서버가 동기식 롤 토토본 인 경우, 트랜잭션은 기본에 대한 트랜잭션이 실행 중에 롤 토토를 기다릴 수 있습니다pg_createsubscriber.

--enable-two-phase스위치가 지정되어 있습니다.pg_createsubscriber2 단계 커밋 비활성화로 논리적 복제를 설정합니다. 이것은 준비된 거래가 시점에 복제 될 것임을 의미합니다.준비, 사전 준비없이. 설정이 완료되면와 함께 구독을 수동으로 삭제하고 다시 만들 수 있습니다.Two_phase옵션 활성화.

pg_createsubscriber시스템 식별자 변경PG_RESETWAL24304_24502

필요한 책치 파일이 누락 된 경우 롤 토토 실패가 발생할 수 있습니다. 이를 방지하려면 소스 서버가 설정되어야합니다max_slot_wal_keep_sizeto-1필요한 책치 파일이 조기에 제거되지 않도록합니다.

작동 방식

기본 아이디어는 소스 서버에서 롤 토토 시작점을 갖고이 시점부터 시작하기 위해 논리적 롤 토토를 설정하는 것입니다.

  1. 지정된 명령 줄 옵션으로 대상 서버를 시작합니다. 대상 서버가 이미 실행중인 경우pg_createsubscriber오류로 종료됩니다.

  2. 대상 서버를 변환 할 수 있는지 확인하십시오. 소스 서버에 몇 가지 점검이 있습니다. 전제 조건이 충족되지 않으면pg_createsubscriber오류로 종료됩니다.

  3. 소스 서버에서 지정된 각 데이터베이스에 대한 게시 및 롤 토토 슬롯을 만듭니다. 각 출판물은를 사용하여 작성됩니다.모든 테이블. 인 경우-공개옵션이 지정되지 않았으며, 출판물에는 다음 이름 패턴이 있습니다.pg_createsubscriber_%u_%x(매개 변수 : 데이터베이스OID, randomint). 인 경우-replication-slot옵션이 지정되지 않았으며, 복제 슬롯에는 다음 이름 패턴이 있습니다.pg_createsubscriber_%u_%x(매개 변수 : 데이터베이스OID, randomint). 이러한 복제 슬롯은 향후 구독에서 사용됩니다. 마지막 복제 슬롯 LSN은의 중지점으로 사용됩니다.복구 _target_lsn매개 변수 및 복제 시작점으로서의 구독에 의해. 거래가 손실되지 않을 것을 보장합니다.

  4. 27111_27222복구 _target_lsn) 복구가 진행되는 쓰기 로그 위치의 위치. 또한 지정홍보복구 대상에 도달하면 서버가 취해야 할 조치. 추가의복구 매개 변수일관된 상태에 도달하자마자 복구 종료와 같은 복구 과정에서 예상치 못한 동작을 피하기 위해 추가됩니다 (복제 시작 위치까지 WAL은 적용되어야 함) 및 고장을 일으킬 수있는 여러 복구 목표를 적용 할 수 있습니다. 이 단계는 서버가 대기 모드가 끝나고 읽기 쓰기 트랜잭션을 수락하면이 단계가 완료됩니다. 만약에-재구성-시간 초과옵션이 설정되었고pg_createsubscriber주어진 초 수가 끝날 때까지 복구가 종료되지 않으면 종료됩니다.

  5. 대상 서버에서 지정된 각 데이터베이스에 대한 구독을 만듭니다. 인 경우--- 소독옵션이 지정되지 않으며 구독에는 다음 이름 패턴이 있습니다.pg_createsubscriber_%u_%x(매개 변수 : 데이터베이스OID, randomint). 소스 서버에서 기존 데이터를 복사하지 않습니다. 복제 슬롯을 생성하지 않습니다. 대신, 이전 단계에서 생성 된 복제 슬롯을 사용합니다. 구독이 생성되었지만 아직 활성화되지 않았습니다. 그 이유는 복제를 시작하기 전에 복제 진행 포인트로 설정되어야하기 때문입니다.

  6. 롤 토토 시작 위치 전에 생성 되었기 때문에 롤 토토 된 대상 서버에서 출판물을 드롭 삭제합니다. 가입자에게는 사용하지 않습니다.

  7. 복제 진행 상황을 각 구독의 복제 시작점으로 설정합니다. 대상 서버가 복구 프로세스를 시작하면 복제 시작점을 따라 잡습니다. 이것은 각 구독에 대한 초기 복제 위치로 사용되는 정확한 LSN입니다. 구독이 생성 된 후 복제 원점 이름이 얻어집니다. 복제 원점 이름과 복제 시작점은에 사용됩니다.pg_replication_origin_advance ()초기 롤 토토 위치를 설정하려면

  8. 대상 서버에서 지정된 각 데이터베이스의 구독을 활성화합니다. 구독은 복제 시작점에서 트랜잭션을 적용하기 시작합니다.

  9. 대기 서버가 사용중인 경우Primary_Slot_name, 지금부터 사용하지 않습니다.

  10. 대기 서버에 포함 된 경우장애 조치 롤 토토 슬롯, 더 이상 동기화 할 수 없으므로 떨어 뜨리십시오.

  11. 대상 서버에서 시스템 식별자를 업데이트합니다. 그만큼PG_RESETWAL시스템 식별자를 수정하기 위해 실행됩니다. 대상 서버는로 중지됩니다.PG_RESETWAL요구 사항.

예제

데이터베이스에 대한 논리적 롤 토토품을 만들려면HRandFinance물리적 롤 토토품에서foo:

$ pg_createsubscriber -d/usr/local/pgsql/data -p "host = foo"-d hr -d finance