pg_createsubscriber

PG_CREATESUBSCRIPER - 물리적 복제품을 새로운 논리적 복제본으로 변환

시놉시스

pg_createsubscriber [옵션...]-d | -database }dbname { -d | --pgdata }Datadir { -p | -publisher-server }connstr

설명

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
-publisher-server =connstr

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

-sdir
--- 소켓 디르 =dir

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

-t
-recovery-timeout =

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

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

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

-v
-VERBOSE

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

--config-file =filename

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

--- 공개 =이름

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

-replication-slot =이름

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

--- 소독 =이름

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

-v
-버전

인쇄pg_createsubscriber버전 및 종료.

-?
-help

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

노트

전제 조건

몇 가지 전제 조건이 있습니다pg_createsubscriber대상 서버를 논리적 복제본으로 변환합니다. 이것들이 충족되지 않으면 오류 가보고됩니다.pg_createsubscriber. 주어진 대상 데이터 디렉토리에는 소스 데이터 디렉토리와 동일한 시스템 식별자가 있어야합니다.구독및 사용pg_replication_origin_advance ().

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

소스 서버는 대상 메이저 토토 사이트서 연결을 수락해야합니다. 소스 서버가 복구 중에있어서는 안됩니다.Wal_levelasLogical. 소스 메이저 토토 사이트는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). 이러한 복제 슬롯은 향후 구독에서 사용됩니다.복구 _target_lsn매개 변수 및 복제 시작점으로서의 구독에 의해. 거래가 손실되지 않을 것을 보장합니다.

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

  5. 대상 서버에서 지정된 각 데이터베이스에 대한 구독을 만듭니다. 인 경우--- 소독옵션이 지정되지 않으며 구독에는 다음 이름 패턴이 있습니다.pg_createsubscriber_%u_%x(매개 변수 : 데이터베이스OID, randomint). 소스 메이저 토토 사이트서 기존 데이터를 복사하지 않습니다.

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

  7. 복제 진행 상황을 각 구독의 복제 시작점으로 설정합니다. 대상 서버가 복구 프로세스를 시작하면 복제 시작점을 따라 잡습니다.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

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면