이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 53.4. 사설 토토 복제 프로토콜버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

50.3. 토토 베이 복제 프로토콜

토토 베이 복제를 시작하려면 프론트 엔드가를 보냅니다.복제시작 메시지의 매개 변수. 부울 가치true백엔드는 Walsender 모드로 이동하도록 지시합니다. 여기서 작은 복제 명령 세트는 SQL 문 대신 발행 될 수 있습니다. Walsender 모드에서는 간단한 쿼리 프로토콜 만 사용할 수 있습니다.log_replication_commands가 활성화되었습니다. 통과데이터베이스값으로 Walsender에게 walsender에 지정된 데이터베이스에 연결하도록 지시합니다dbname매개 변수, 해당 데이터베이스의 논리 복제에 연결을 사용할 수 있습니다.

복제 명령을 테스트 할 목적으로를 통해 복제 연결을 만들 수 있습니다PSQL또는 기타libpq-연결 문자열을 포함하는 도구복제옵션, 예 :

psql "dbname = postgres replication = database"-c "eviret_system;"

그러나 사용하는 것이 더 유용합니다PG_RECEIVEXLOG(물리적 복제 용) 또는PG_RECVLOGICAL(논리적 복제 용).

Walsender 모드에서 수락 된 명령은 다음과 같습니다.

식별 _system

서버가 자체를 식별하도록 요청합니다. 서버는 4 개의 필드를 포함하는 단일 행의 결과 세트로 응답합니다.

SystemID

클러스터를 식별하는 고유 한 시스템 식별자. 대기를 초기화하는 데 사용되는베이스 백업이 동일한 클러스터에서 나왔는지 확인하는 데 사용할 수 있습니다.

타임 라인

현재 타임 라인. 또한 대기가 마스터와 일치하는지 확인하는 데 유용합니다.

xlogpos

현재 Xlog 플러시 위치. 스트리밍이 시작될 수있는 트랜잭션 로그에서 알려진 위치를 얻는 데 유용합니다.

dbname

데이터베이스 연결 또는 NULL.

timeline_historytli

타임 라인에 대한 타임 라인 히스토리 파일을 보내도록 요청합니다tli. 서버는 두 개의 필드를 포함하는 단일 행의 결과 세트로 응답합니다.텍스트andBYTEA, 그들은 탈출하거나 인코딩 전환없이 효과적으로 원시 바이트를 반환합니다 :

filename

타임 라인 기록 파일의 파일 이름, 예 :00000002.history.

컨텐츠

타임 라인 기록 파일의 내용.

create_replication_slotslot_name { 물리적 | 논리적 output_plugin }

물리적 또는 논리적 복제 슬롯을 만듭니다. 보다섹션 25.2.6복제 슬롯에 대한 자세한 내용.

slot_name

생성 할 슬롯의 이름. 유효한 복제 슬롯 이름 여야합니다 (참조섹션 25.2.6.1).

output_plugin

논리 디코딩에 사용되는 출력 플러그인의 이름 (참조섹션 46.6).

start_replication [슬롯 slot_name] [물리적] xxx/xxx [타임 라인 tli]

WAL 위치에서 시작하여 WAL 토토 베이을 시작하도록 지시xxx/xxx. 만약에타임 라인옵션이 지정되어 있으며 타임 라인에서 스트리밍이 시작됩니다tli; 그렇지 않으면 서버의 현재 타임 라인이 선택됩니다.

슬롯 이름이slot_name, 서버가 어떤 WAL 세그먼트를 알 수 있도록 복제가 진행됨에 따라 업데이트됩니다.hot_standby_feedback대기에 여전히 트랜잭션이 필요합니다.

클라이언트가 최신이 아닌 타임 라인을 요청하지만 서버의 기록의 일부인 경우 서버가 요청 된 시작점에서 시작하여 서버가 다른 타임 라인으로 전환 된 지점까지 모든 WAL을 스트리밍합니다. 클라이언트가 이전 타임 라인의 끝에서 스트리밍을 요청하는 경우 서버는 사본 모드에 들어가지 않고 CommandComplete로 즉시 응답합니다.

최신 WAL에서 모든 WAL을 토토 베이 한 후 서버는 복사 모드를 종료하여 토토 베이을 종료합니다. 클라이언트가 복사 모드를 종료하여이를 확인하면 서버는 하나의 행과 두 열이있는 결과 세트를 보냅니다.

WAL 데이터는 일련의 CopyData 메시지로 전송됩니다. (이것은 다른 정보를 혼합 할 수 있습니다. 특히 서버가 스트리밍을 시작한 후 실패를 일으키는 경우 서버가 ErrorResponse 메시지를 보낼 수 있습니다.) 서버에서 클라이언트로의 각 CopyData 메시지의 페이로드에는 다음 형식 중 하나의 메시지가 포함됩니다..

xlogdata (b)
byte1 ( 'w')

메시지를 WAL 데이터로 식별합니다.

int64

이 메시지에서 WAL 데이터의 시작점.

int64

서버의 현재 월드 끝.

int64

2000-01-01의 자정 이후 마이크로 초과 전송 당시 서버의 시스템 클럭 시계.

byten

WAL 데이터 스트림의 섹션.

단일 WAL 레코드는 두 개의 Xlogdata 메시지에 대해 절대로 분할되지 않습니다. WAL 레코드가 WAL 페이지 경계를 가로 지르고 있으므로 이미 연속 레코드를 사용하여 분할되면 페이지 경계에서 분할 될 수 있습니다.

기본 keepalive 메시지 (b)
byte1 ( 'k')

메시지를 발신자 keepalive로 식별합니다.

int64

서버의 현재 월드 끝.

int64

2000-01-01의 자정 이후 마이크로 초과 전송 당시 서버의 시스템 클럭 시계.

byte1

1은 시간 초과 연결을 피하기 위해 클라이언트가 가능한 빨리이 메시지에 응답해야 함을 의미합니다. 0 그렇지 않으면.

수신 프로세스는 다음 메시지 형식 중 하나를 사용하여 언제든지 발신자에게 회신을 보낼 수 있습니다 (CopyData 메시지의 페이로드) :

대기 상태 업데이트 (F)
byte1 ( 'r')

메시지를 수신기 상태 업데이트로 식별합니다.

int64

마지막 WAL 바이트 + 1의 위치는 대기에서 디스크에 수신되어 작성되었습니다.

int64

대기에서 디스크로 플러시 된 마지막 Wal 바이트 + 1의 위치.

int64

대기 바이트 + 1의 위치는 대기에 적용됩니다.

int64

2000-01-01의 자정 이후 마이크로 초로 전송 당시 클라이언트의 시스템 클럭 시계.

byte1

1 인 경우 클라이언트는 서버 에이 메시지에 즉시 회신하도록 요청합니다. 이것은 연결이 여전히 건강한지 테스트하기 위해 서버를 핑하는 데 사용될 수 있습니다.

뜨거운 대기 피드백 메시지 (f)
byte1 ( 'h')

메시지를 핫 대기 피드백 메시지로 식별합니다.

int64

2000-01-01의 자정 이후 마이크로 초로 전송 당시 클라이언트의 시스템 클럭 시계.

int32

대기의 현재 Xmin. 대기 가이 연결에서 더 이상 핫 스탠드 피드백이 전송되지 않는다는 알림을 보내는 경우 0 일 수 있습니다.

int32

대기의 현재 시대.

start_replication슬롯 slot_name 논리적 xxx/xxx[(옵션 _name [옵션_value] [, ...])]

WAL 포지션에서 시작하여 서버가 논리적 복제를 위해 WAL 스트리밍을 시작하도록 지시xxx/xxx. WAL의 요청 된 섹션이 이미 재활용 된 경우 서버는 오류로 응답 할 수 있습니다.

CopyBothResponse 메시지 내부의 메시지는에 대해 문서화 된 동일한 형식입니다.start_replication ... 물리적.

선택한 슬롯과 관련된 출력 플러그인은 스트리밍을위한 출력을 처리하는 데 사용됩니다.

슬롯 slot_name

스트림에서 슬롯의 이름이 변경됩니다. 이 매개 변수는 필요하며와 함께 생성 된 기존 논리 복제 슬롯에 해당해야합니다.create_replication_slotin논리적모드.

xxx/xxx

토토 베이을 시작하는 WAL 위치.

옵션 _name

옵션의 이름은 슬롯의 논리적 디코딩 플러그인으로 전달됩니다.

옵션_value

지정된 옵션과 관련된 문자열 상수 형식의 선택적 값.

Drop_Replication_Slotslot_name

예약 된 서버 측 리소스를 제거하여 복제 슬롯을 떨어 뜨립니다. 활성 연결에 의해 슬롯이 현재 사용중인 경우이 명령은 실패합니다.

slot_name

드롭 할 슬롯의 이름.

base_backup [레이블 '레이블'] [진행] [빠른] [WAL] [Nowait] [max_rate rate] [TableSpace_map]

서버에베이스 백업 토토 베이을 시작하도록 지시합니다. 백업이 시작되기 전에 시스템이 백업 모드에 자동으로 표시되고 백업이 완료되면이 작업을 수행합니다.

레이블 '레이블'

백업의 레이블을 설정합니다. 아무것도 지정되지 않으면의 백업 레이블베이스 백업사용됩니다. 레이블에 대한 인용 규칙은의 표준 SQL 문자열과 동일합니다.Standard_Conforming_strings켜짐.

진행

진행 보고서를 생성하는 데 필요한 정보 요청 정보. 이렇게하면 각 테이블 스페이스의 헤더에서 대략적인 크기를 다시 보내며 스트림을 따라 얼마나 멀리 떨어진 지 계산하는 데 사용할 수 있습니다.

빠른

빠른 체크 포인트 요청.

WAL

백업에 필요한 WAL 세그먼트를 포함하십시오. 여기에는 시작과 중지 백업 사이의 모든 파일이 포함됩니다.PG_XLOG기본 디렉토리 타르 파일의 디렉토리.

Nowait

기본적으로 백업은 마지막으로 필요한 XLOG 세그먼트가 보관 될 때까지 기다리거나 로그 아카이브가 활성화되지 않은 경우 경고를 방출합니다. 지정Nowait대기와 경고를 모두 비활성화하여 클라이언트가 필요한 로그를 사용할 수 있도록 책임을 져야합니다.

max_rate rate

제한 (스로틀) 시간당 서버에서 클라이언트로 전송 된 최대 데이터 양. 예상 단위는 초당 킬로바이트입니다.

TableSpace_map

디렉토리에 존재하는 기호 링크에 대한 정보 포함PG_TBLSPCTableSpace_map. 테이블 스페이스 맵 파일에는 디렉토리에 존재하는 각 상징적 링크 이름이 포함되어 있습니다PG_TBLSPC/그리고 그 상징적 링크의 전체 경로.

백업이 시작되면 서버는 먼저 두 개의 일반 결과 세트를 보내고 하나 이상의 저작권 결과를 보냅니다.

첫 번째 일반 결과 세트에는 두 개의 열이있는 단일 행에 백업의 시작 위치가 포함됩니다. 첫 번째 열에는 xlogrecptr 형식으로 주어진 시작 위치를 포함하고 두 번째 열에는 해당 타임 라인 ID를 포함합니다.

두 번째 일반 결과 세트에는 각 테이블 스페이스마다 하나의 행이 있습니다. 이 행의 필드는 다음과 같습니다.

spcoid

​​테이블 스페이스의 OID, 또는NULL기본 디렉토리 인 경우.

spclocation

테이블 스페이스 디렉토리의 전체 경로 또는NULL기본 디렉토리 인 경우.

size

진행 보고서가 요청 된 경우 테이블 스페이스의 대략적인 크기; 그렇지 않으면NULL.

두 번째 일반 결과 세트 이후에 하나 이상의 저작권 결과가 전송됩니다. 하나는 pgdata 용으로, 하나는 이외의 각각의 추가 테이블 스페이스마다 하나씩입니다.pg_defaultandpg_global. 저작권 결과의 데이터는 TAR 형식입니다 (다음"Ustar Interchange Format"POSIX 1003.1-2008 표준에 지정) 표준에 지정된 제로의 두 개의 후행 블록이 생략된다는 점을 제외하고 테이블 스페이스 내용의 덤프. TAR 데이터가 완료되면, 시작 위치와 동일한 형식으로 백업의 WAL 엔드 위치를 포함하는 최종 일반 결과 세트가 전송됩니다.

데이터 디렉토리 및 각 테이블 스페이스의 TAR 아카이브에는 디렉토리의 모든 파일이 포함되어 있는지 여부에 관계없이 모든 파일이 포함됩니다.PostgreSQL동일한 디렉토리에 추가 된 파일 또는 기타 파일. 제외 된 유일한 파일은 다음과 같습니다.

  • postmaster.pid

  • postmaster.opts

  • PostgreSQL Server 작동 중에 생성 된 다양한 임시 파일

  • PG_XLOG, 하위 디렉토리를 포함한. 백업이 WAL 파일이 포함 된 상태에서 실행되면 합성 된 버전의PG_XLOG가 포함되지만 백업이 나머지 내용이 아니라 작동하는 데 필요한 파일 만 포함됩니다.

  • PG_REPLSLOT빈 디렉토리로 복사됩니다.

  • 기호 링크 및 특수 장치 파일과 같은 일반 파일 및 디렉토리 이외의 파일이 건너 뜁니다. (상징적 링크PG_TBLSPC유지 관리.)

서버의 기본 파일 시스템이 지원하는 경우 소유자, 그룹 및 파일 모드가 설정됩니다.

모든 테이블 스페이스가 전송되면 최종 일반 결과 세트가 전송됩니다. 이 결과 세트는 단일 행의 단일 열로 xlogrecptr 형식으로 주어진 백업의 종료 위치를 포함합니다.