본문으로 건너뛰기

restore_command

버전기본값context타입
14sighupstring
15sighupstring
16sighupstring
17sighupstring
18sighupstring
19sighupstring

archive에 보관된 WAL segment 파일을 가져오기 위해 실행할 로컬 shell 명령을 지정한다. archive recovery에는 필수이고, streaming replication에서는 선택이다.

문자열 안의 %f는 archive에서 가져올 파일 이름으로, %p는 서버 쪽 복사 대상 경로(데이터 디렉토리 기준 상대 경로)로 치환된다(예: cp /mnt/server/archivedir/%f "%p"). %r은 마지막 유효 restart point를 담은 파일 이름으로 치환되는데, restore를 재시작 가능하게 유지하는 데 필요한 가장 오래된 파일이 무엇인지 알려주므로 주로 warm standby 구성에서 archive를 최소한으로 잘라내는 데 쓴다. % 문자 자체가 필요하면 %%로 쓴다.

명령은 성공했을 때만 종료 코드 0을 반환해야 한다. archive에 존재하지 않는 파일 이름을 요청받는 경우도 있는데, 이때는 반드시 0이 아닌 값을 반환해야 한다. 명령이 signal(서버 종료 과정에서 쓰이는 SIGTERM 제외)로 종료되거나 shell 오류로 실패하면 recovery가 중단되고 서버는 기동하지 않는다. postgresql.conf나 서버 커맨드라인에서만 설정할 수 있다.

운영 노트: 실패했는데도 0을 반환하는 스크립트는 recovery를 엉뚱한 지점에서 끝나게 만들 수 있다. 직접 작성한 스크립트라면 종료 코드 처리를 반드시 검증하고, 가능하면 pgBackRest·Barman 같은 backup 도구가 제공하는 검증된 명령을 쓰는 편이 안전하다.

출처: PostgreSQL 18 문서