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

48.3. 토토 사이트 복제 프로토콜

스트리밍 복제를 시작하기 위해 프런트엔드는 다음을 보냅니다.복제9485_9763

IDENTIFY_SYSTEM

서버가 자신을 식별하도록 요청합니다. 서버는 다음과 같이 응답합니다. 세 개의 필드를 포함하는 단일 행의 결과 집합:

시스템ID

클러스터를 식별하는 고유 시스템 식별자입니다. 이것은 할 수 있다 초기화하는 데 사용된 기본 백업을 확인하는 데 사용됩니다. 대기는 동일한 클러스터에서 왔습니다.

타임라인

현재 타임라인ID. 대기 상태를 확인하는 데도 유용합니다. 주인님과 일치합니다.

xlogpos

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

TIMELINE_HISTORY틀리

다음에 대한 타임라인 기록 파일을 보내도록 서버에 요청합니다. 타임라인틀리. 서버는 다음과 같이 응답합니다. 두 개의 필드를 포함하는 단일 행의 결과 집합:

파일 이름

타임라인 히스토리 파일의 파일 이름, 예: 00000002.history.

내용

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

START_REPLICATIONXXX/XXX [타임라인 틀리]

WAL에서 시작하여 WAL 토토 사이트을 시작하도록 서버에 지시합니다. 위치XXX/XXX. 만일타임라인옵션이 지정되면 스트리밍이 시작됩니다. 타임라인틀리; 그렇지 않으면, 서버의 현재 타임라인이 선택됩니다. 서버는 다음과 같이 응답할 수 있습니다. 오류(예: WAL의 요청된 섹션이 이미 있는 경우 재활용. 성공하면 서버는 CopyBothResponse로 응답합니다. 메시지를 보낸 다음 WAL을 프런트엔드로 스트리밍하기 시작합니다.

클라이언트가 최신은 아니지만 타임라인을 요청하는 경우 서버 기록의 일부인 경우 서버는 모든 내용을 스트리밍합니다. 요청된 시작점부터 시작하여 해당 타임라인의 WAL 서버가 다른 타임라인으로 전환된 지점. 만약 클라이언트는 정확히 이전 타임라인의 끝에서 스트리밍을 요청합니다. 서버는 아무런 작업 없이 CommandComplete로 즉시 응답합니다. 복사 모드로 들어갑니다.

최신이 아닌 타임라인에서 모든 WAL을 스트리밍한 후 하나, 서버는 COPY 모드를 종료하여 스트리밍을 종료합니다. 언제 클라이언트는 COPY 모드를 종료하여 이를 승인하고, 서버는 행 1개와 열 2개로 구성된 결과 세트를 보냅니다. 이 서버 기록의 다음 타임라인. 첫 번째 열은 다음 타임라인 ID, 두 번째 열은 XLOG 위치 스위치가 일어난 곳. 일반적으로 스위치 위치는 끝입니다. 스트리밍된 WAL의 일부이지만 서버는 이전 타임라인에서 일부 WAL을 보낼 수 있지만 홍보하기 전에 자체적으로 재생되었습니다. 마지막으로 서버가 보낸다. CommandComplete 메시지가 표시되며 새 명령을 수락할 준비가 되었습니다.

WAL 데이터는 일련의 CopyData 메시지로 전송됩니다. (이것은 허용됩니다 혼합될 기타 정보 특히 서버는 이후에 오류가 발생하면 ErrorResponse 메시지를 보냅니다. 스트리밍을 시작합니다.) 각 CopyData 메시지의 페이로드는 서버에서 클라이언트로 보내는 메시지에는 다음 중 하나의 메시지가 포함되어 있습니다. 형식:

XLogData (B)
바이트1('w')

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

Int64

이 메시지에 있는 WAL 데이터의 시작점입니다.

Int64

서버의 현재 WAL 끝입니다.

Int64

전송 당시 서버의 시스템 시계입니다. 2000년 1월 1일 자정 이후의 마이크로초입니다.

바이트n

WAL 데이터 스트림의 섹션.

단일 WAL 레코드는 두 개의 XLogData 메시지로 분할되지 않습니다. WAL 레코드가 WAL 페이지 경계를 넘을 때 이미 연속 레코드를 사용하여 분할된 경우 다음에서 분할할 수 있습니다. 페이지 경계. 즉, 첫 번째 주요 WAL 레코드와 그 연속 레코드는 다른 XLogData로 전송될 수 있습니다. 메시지.

기본 연결 유지 메시지 (B)
바이트1('k')

메시지를 보낸 사람의 연결 유지로 식별합니다.

Int64

서버의 현재 WAL 끝입니다.

Int64

전송 당시 서버의 시스템 시계는 다음과 같습니다. 2000년 1월 1일 자정 이후의 마이크로초입니다.

바이트1

1은 클라이언트가 즉시 이 메시지에 응답해야 함을 의미합니다. 시간 초과를 방지하려면 연결 해제가 가능합니다. 그렇지 않으면 0입니다.

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

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

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

Int64

수신 및 기록된 마지막 WAL 바이트 + 1의 위치 디스크가 대기 상태입니다.

Int64

마지막 WAL 바이트 + 1의 위치가 디스크에 플러시되었습니다. 대기.

Int64

마지막 WAL 바이트 위치 + 1이 적용되었습니다. 대기.

Int64

전송 당시 클라이언트의 시스템 시계, 다음과 같습니다. 2000년 1월 1일 자정 이후의 마이크로초입니다.

바이트1

1인 경우 클라이언트는 서버에 이 메시지에 대한 응답을 요청합니다. 즉시. 이는 서버에 ping을 보내는 데 사용될 수 있으며, 연결은 여전히 건강합니다.

긴급 대기 피드백 메시지(F)
바이트1('h')

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

Int64

전송 당시 클라이언트의 시스템 시계, 다음과 같습니다. 2000년 1월 1일 자정 이후의 마이크로초입니다.

Int32

대기의 현재 xmin. 대기 상태인 경우 0일 수 있습니다. Hot Standby 피드백이 더 이상 제공되지 않는다는 알림을 보냅니다. 이 연결로 전송되었습니다. 나중에 0이 아닌 메시지가 다시 시작될 수 있습니다. 피드백 메커니즘.

Int32

대기의 현재 에포크.

BASE_BACKUP [레이블 '라벨'] [진행] [빠른] [WAL] [NOWAIT]

서버에 기본 백업 스트리밍을 시작하도록 지시합니다. 는 시스템은 백업 전에 자동으로 백업 모드로 전환됩니다. 시작되고 백업이 완료되면 제거됩니다. 는 다음 옵션이 허용됩니다:

레이블 '라벨'

백업 라벨을 설정합니다. 아무것도 지정하지 않으면 백업 라벨기본 백업사용됩니다. 는 레이블에 대한 인용 규칙은 표준 SQL 문자열과 동일합니다. 와 함께standard_conforming_strings켜졌습니다.

진행

진행 보고서 생성에 필요한 정보를 요청합니다. 이 각 헤더의 대략적인 크기를 다시 보내드립니다. 스트림을 따라 얼마나 멀리 있는지 계산하는 데 사용할 수 있는 테이블스페이스 완료되었습니다. 이는 모든 파일 크기를 한 번 열거하여 계산됩니다. 전송이 시작되기도 전에 성능에 부정적인 영향 - 특히 시간이 걸릴 수 있음 첫 번째 데이터가 스트리밍되기까지 더 오랜 시간이 걸립니다. 데이터베이스 파일 이후 백업 중에 변경될 수 있으며 크기는 대략적인 것이며 근사 시점과 시점 사이에 둘 다 성장하고 축소됩니다. 실제 파일을 전송합니다.

빠른

빠른 체크포인트를 요청하세요.

WAL

백업에 필요한 WAL 세그먼트를 포함합니다. 이것은 백업 시작과 중지 사이의 모든 파일을 다음 파일에 포함합니다.pg_xlog기본 디렉토리의 디렉토리 tar 파일.

NOWAIT

기본적으로 백업은 마지막으로 필요한 xlog까지 기다립니다. 세그먼트가 보관되었거나 로그 보관이 완료되지 않은 경우 경고를 표시합니다. 활성화되지 않았습니다. 지정NOWAIT비활성화 대기와 경고 모두 클라이언트에게 책임을 맡김 필요한 로그를 사용할 수 있는지 확인하기 위한 것입니다.

백업이 시작되면 서버는 먼저 두 개의 일반 결과 집합 뒤에 하나 이상의 CopyResponse가 옵니다. 결과.

첫 번째 일반 결과 세트에는 다음의 시작 위치가 포함됩니다. 두 개의 열이 있는 단일 행의 백업입니다. 첫 번째 열 XLogRecPtr 형식으로 제공된 시작 위치를 포함하며, 두 번째 열에는 해당 타임라인 ID가 포함되어 있습니다.

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

스페이드

테이블스페이스의 oid 또는NULL만일 기본 디렉터리입니다.

spclocation

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

크기

진행 보고서가 있는 경우 테이블스페이스의 대략적인 크기 요청받았습니다; 그렇지 않으면 그것은NULL.

두 번째 일반 결과 집합 이후에 하나 이상의 CopyResponse 결과는 PGDATA에 대해 하나씩, 추가마다 하나씩 전송됩니다. 이외의 테이블스페이스pg_default그리고pg_global. CopyResponse의 데이터 결과는 tar 형식이 됩니다(다음에 따라)."ustar 교환 형식"POSIX에 지정됨 1003.1-2008 표준) 테이블스페이스 내용의 덤프를 제외하고 표준에 지정된 두 개의 후행 0 블록은 다음과 같습니다. 생략. tar 데이터가 완성된 후 최종 일반 결과 백업의 WAL 끝 위치를 포함하는 세트가 전송됩니다. 시작 위치와 동일한 형식입니다.

데이터 디렉토리와 각 테이블스페이스에 대한 tar 아카이브는 여부에 관계없이 디렉터리의 모든 파일을 포함합니다. 이다PostgreSQL파일 또는 기타 동일한 디렉토리에 파일이 추가되었습니다. 제외되는 유일한 파일은 다음과 같습니다.

  • postmaster.pid

  • postmaster.opts

  • pg_xlog, 하위 디렉터리 포함. 만약에 백업은 다음의 합성 버전인 WAL 파일이 포함된 상태로 실행됩니다.pg_xlog포함되지만 백업이 작동하는 데 필요한 파일만 포함되어 있으며 나머지 내용입니다.

소유자, 그룹 및 파일 모드는 기본 파일 시스템이 설정되어 있는 경우 서버에서 지원합니다.

모든 테이블스페이스가 전송되면 최종 일반 결과 세트 전송됩니다. 이 결과 집합에는 다음의 끝 위치가 포함되어 있습니다. 백업은 XLogRecPtr 형식으로 단일 열의 단일 열로 제공됩니다. 행.