pg_createsubscriber

PG_CREATESUBSCRIPER - 물리적 범퍼카 토토품을 새로운 논리적 범퍼카 토토품으로 변환

시놉시스

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

설명

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

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

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

옵션

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

-ddbname
-database =dbname

구독을 생성 할 데이터베이스의 이름. 여러 데이터베이스를 여러 가지 작성하여 선택할 수 있습니다-d스위치.

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

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

-n
-드라이 런

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

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

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

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

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

-sdir
--- 소켓 디르 =dir

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

-t
-recovery-timeout =

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

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

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

-v
-VERBOSE

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

--config-file =filename

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

--publication =이름

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

-replication-slot =이름

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

--- 소독 =이름

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

-v
-버전

인쇄pg_createsubscriber버전 및 종료.

-?
-help

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

노트

전제 조건

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

대상 서버는 물리적 대기로 사용해야합니다. 대상 서버에는max_replication_slotsandmax_logical_replication_workers지정된 데이터베이스 수보다 큰 값으로 구성되었습니다. 대상 서버에는max_worker_processes지정된 데이터베이스 수보다 큰 값으로 구성되었습니다. 대상 서버는 로컬 연결을 수락해야합니다.

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

경고

ifpg_createsubscriber대상 서버가 홍보 된 후에 실패하면 데이터 디렉토리는 복구 할 수있는 상태가 아닐 수 있습니다. 이 경우 새 대기 서버를 작성하는 것이 좋습니다.

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

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

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

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

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

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

pg_createsubscriber시스템 식별자 변경PG_RESETWAL. 대상 서버가 소스 서버에서 WAL 파일을 사용할 수있는 상황을 피할 수 있습니다. 대상 서버에 대기가 있으면 범퍼카 토토가 깨지고 새로운 대기가 생성되어야합니다.

작동 방식

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

  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. 대상 데이터 디렉토리에 복구 매개 변수를 쓰고 대상 서버를 다시 시작하십시오. LSN (를 지정합니다.복구 _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

정정 제출

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