pg_archivecleanup

pg_archivecleanup — PostgreSQL WAL 아카이브 파일 정리

요약

pg_archivecleanup [옵션...] 아카이브위치 남겨둘_제일_오래된파일

설명

pg_archivecleanup 명령은 대기 서버에서 이미 반영 된 WAL 파일을 정리할 때 사용하려고 개발되었다(26.2절 참조). 물론 pg_archivecleanup 명령은 아카이브 파일을 정리하기 위해 단독으로 사용할 수도 있다.

대기 서버에서 pg_archivecleanup 명령을 사용하는 방법은 recovery.conf 파일에 다음과 같이 지정한다:

archive_cleanup_command = 'pg_archivecleanup 아카이브위치 %r'

아카이브위치는 지우려고 하는 WAL 파일이 있는 디렉터러 이름이다.

archive_cleanup_command 설정은 아카이브위치 디렉터리에 안에 있는 마지막으로 반영한 %r 파일을 빼고 이 파일보다 먼저 반영된 모든 오래된 파일을 지운다. 이렇게 해서 서버 비정상 종료 다음 서버 복구 작업에 필요하지 않은 오래된 파일을 지워 보관할 파일 수를 최소화 한다. 아카이브위치 디렉터리는 특정 대기 서버에서만 사용하는 경우는 괜찮으나, 여러 대기 서버가 함께 사용하는 경우라면 이 명령의 사용은 위험하다.

앞에서 설명한 용도와 달리 아카이브위치 디렉터리에서 남겨둘_제일_오래된파일보다 오래된 (해당 WAL로그 보다 논리적으로 오래된) 모든 WAL 파일을 지우는 용도로도 사용할 수 있다. 이 용도로 사용할 때, .partial, .backup 같은 파일을 남겨둘_제일_오래된파일로 지정하면, 그 파일의 앞부분 이름을 사용해서 작업한다. 예를 들어 , 000000010000003700000010 파일보다 오래된 파일을 삭제하려면 다음과 같은 형태로 사용한다:

pg_archivecleanup -d archive 000000010000003700000010.00000020.backup

pg_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
pg_archivecleanup:  removing file "archive/00000001000000370000000F"
pg_archivecleanup:  removing file "archive/00000001000000370000000E"

pg_archivecleanup 명령은 archivelocation 디렉터리 안에 있는 파일을 지우는 명령이기 때문에, 이 명령을 실행하는 사용자가 지울 수 있는 권한이 있어야한다. 즉 서버를 실행하는 OS 사용자여야 한다.

옵션

pg_archivecleanup 명령에서는 다음과 같은 옵션을 사용할 수 있다:

-d

stderr 장치로 각종 디버그 용 정보를 출력한다.

-n

해당 파일을 지우지 않고, 각 파일에 대한 작업 계획만 stdout 장치로 보여 준다 (테스트용).

-V
--version

pg_archivecleanup 버전을 보여주고 마친다.

-x 확장자

이 옵션을 지정하면, 지울 대상이 되는 파일이 논리적인 해당 파일 이름에 확장자가 붙은 파일로 간주한다. 전형적으로 아카이브 파일을 압축해서 보관하는 경우 사용한다. 사용예: -x .gz.

-?
--help

pg_archivecleanup 명령에 대한 명령행 옵션 도움말을 보여주고 마친다.

참고

pg_archivecleanup 명령은 PostgreSQL 8.0 버전에 처음 등장했고, 뒤에 독립적인 응용프로그램이 되었고, PostgreSQL 9.0 버전부터 archive_cleanup_command 설정 값으로 사용할 수 있었다.

pg_archivecleanup 명령은 C 언어로 작성되었으며 변경하기 쉬운 코드로 작성되었다. 그래서 필요하다면, 얼마든지 원하는 기능으로 변경 해서 사용 가능하다.

예제

리눅스 환경에서는 일반적으로 다음과 같이 사용된다:

archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'

아카이브 디렉터리는 대기 서버에서 접근 할 수 있는 물리적 위치다. 위 경우는 archive_command 명령에서 NFS 디렉터리를 사용하고 있지만 대기 서버 입장에서는 로컬 디스크가 될 것이다. 이 설정은 다음과 같은 일을 한다:

  • cleanup.log 파일에 자세한 작업 내역을 남기며,

  • 해당 디렉터리 안에 더 이상 필요 없는 WAL 파일을 지운다.

관련 항목

pg_standby