PostgreSQL은 안정성과 확장성이 뛰어난 오픈소스 데이터베이스입니다. 그 중 WAL(Write-Ahead Logging) 기능은 트랜잭션 무결성과 복구 기능을 제공하는 핵심 기능입니다. 하지만 WAL 로그가 쌓이면 디스크를 점점 차지하게 되고, 관리하지 않으면 archive 디렉터리가 과도하게 늘어나 성능이나 저장공간에 문제를 일으킬 수 있습니다.
이 글에서는 PostgreSQL의 archive 파일을 안전하게 삭제하는 방법, 자동화 설정, 그리고 주의사항까지 포괄적으로 다루어보겠습니다.
목차
- PostgreSQL Archive 파일이란?
- 아카이브 경로 및 모드 확인 방법
- Archive 삭제 전 반드시 확인할 사항
- pg_archivecleanup 사용법
- 수동 삭제 시 주의할 점
- 아카이브 자동 삭제 설정하기
- 백업 및 복제 환경에서의 고려사항
- 관련 로그 및 모니터링 팁
- 자주 묻는 질문(FAQ)
- PostgreSQL Archive 삭제 요약
1. PostgreSQL Archive 파일이란?
PostgreSQL의 Archive 파일은 WAL 로그 파일을 복사한 아카이브 형태입니다. WAL은 PostgreSQL에서 모든 변경사항을 먼저 로그에 기록한 후 디스크에 반영하는 구조이며, 아카이브 모드에서는 이 로그를 복사하여 보관합니다.
이 기능은 다음과 같은 목적에 유용합니다:
- PITR(Point-In-Time Recovery): 특정 시점까지 복구 가능
- Hot Standby / Streaming Replication: 복제 서버 구성 시 필요
- 장기 보관용 백업: 규제 또는 기업 정책상 필요
2. 아카이브 경로 및 모드 확인 방법
다음 SQL 명령어로 PostgreSQL에서 Archive 모드와 관련 설정을 확인할 수 있습니다.
SHOW archive_mode;
SHOW archive_command;
SHOW archive_timeout;
예시 출력:
archive_mode | on
archive_command | test ! -f /var/lib/pgsql/13/archive/%f && cp %p /var/lib/pgsql/13/archive/%f
이 경우 WAL 파일이 /var/lib/pgsql/13/archive/
디렉토리에 복사되어 보관됩니다.
3. Archive 삭제 전 반드시 확인할 사항
Archive 파일은 단순한 로그가 아닌 복구 및 복제에 반드시 필요한 데이터입니다. 따라서 삭제 전 다음 사항을 꼭 점검하세요.
- 복제 서버가 해당 WAL 파일을 사용하고 있는가?
- PITR 또는 백업을 위한 복구 계획이 있는가?
- 삭제해도 되는 최소 시점(복원 가능한 시점) 이후의 파일인가?
무분별한 삭제는 복제 장애 또는 복구 실패로 이어질 수 있으므로 주의가 필요합니다.
4. pg_archivecleanup 사용법
PostgreSQL에서는 pg_archivecleanup
이라는 유틸리티를 제공하여 안전하게 archive 파일을 삭제할 수 있습니다.
기본 형식:
pg_archivecleanup [archive_directory] [last_required_wal_file]
예시:
pg_archivecleanup /var/lib/pgsql/13/archive 000000010000000A000000FB
이 명령은 000000010000000A000000FB
이후의 WAL 파일들을 자동으로 삭제합니다. 해당 WAL 파일은 복구 또는 복제에 더 이상 필요하지 않은 기준점입니다.
참고: 기준 파일은 일반적으로 복제 슬롯 또는 복제 서버의 상태를 기준으로 판단해야 합니다.
5. 수동 삭제 시 주의할 점
시스템적으로 pg_archivecleanup
을 사용하지 않고 수동으로 삭제하고 싶다면 다음을 고려하세요.
수동 삭제 예시:
find /var/lib/pgsql/13/archive -type f -name '*.backup' -mtime +7 -delete
또는 특정 파일 형식 삭제:
rm -f /var/lib/pgsql/13/archive/00000001*.*
하지만 복제 서버가 사용하는 WAL 파일을 삭제하면 복제 장애가 발생할 수 있습니다. 수동 삭제는 복제 상태 또는 백업 완료 여부를 반드시 확인한 후에 수행하세요.
6. 아카이브 자동 삭제 설정하기
복제 환경에서는 recovery.conf
또는 postgresql.auto.conf
파일에 archive_cleanup_command
를 추가하여 아카이브 정리를 자동화할 수 있습니다.
archive_cleanup_command = 'pg_archivecleanup /var/lib/pgsql/13/archive %r'
이 설정은 복제 서버에서 복구된 WAL 파일 이후의 아카이브를 자동으로 삭제하게 합니다.
7. 백업 및 복제 환경에서의 고려사항
- 물리 복제(replication slot) 를 사용하는 경우, 아카이브를 삭제하기 전에 슬레이브에서 해당 파일들이 모두 적용되었는지 확인하세요.
- PITR 용도로 WAL을 사용하고 있다면, 최신 base backup 이후의 WAL만 유지하면 됩니다.
pg_stat_replication
뷰를 통해 복제 상태를 확인할 수 있습니다:
SELECT * FROM pg_stat_replication;
8. 관련 로그 및 모니터링 팁
- PostgreSQL 로그 파일에서 archive 오류 또는 상태를 추적할 수 있습니다.
- WAL 파일 크기와 수를 모니터링하려면
pg_wal
디렉터리를 주기적으로 확인하세요. - Nagios, Zabbix 등과 연동하여 디스크 사용률이나 아카이브 파일 수를 모니터링하는 것도 권장됩니다.
9. 자주 묻는 질문 (FAQ)
Q1. 아카이브 파일이 너무 많습니다. 바로 삭제해도 되나요?
A. 복제 또는 PITR을 사용하지 않는다면 가능하지만, 반드시 백업 또는 복제 상태를 먼저 확인하세요.
Q2. 복제 서버가 있다면 어떻게 삭제하나요?
A. pg_archivecleanup
또는 archive_cleanup_command
를 통해 슬레이브와 동기화된 시점 이후만 삭제해야 합니다.
Q3. 아카이브 삭제 주기를 자동화할 수 있나요?
A. 가능하며, crontab이나 archive_cleanup_command
, pgBackRest
, Barman
같은 백업 도구와 연동 가능합니다.
Q4. WAL 파일과 Archive 파일은 같은가요?
A. WAL은 PostgreSQL 내부 디렉토리에 생성되며, Archive는 설정된 외부 경로로 복사한 것입니다. 동일한 내용이지만 위치가 다릅니다.
10. PostgreSQL Archive 삭제 요약
항목 | 요약 |
---|---|
아카이브 목적 | 복구, 복제, 백업용 |
삭제 전 확인사항 | 복제 유무, PITR 계획, 복제 상태 |
안전한 삭제 도구 | pg_archivecleanup |
자동화 설정 | archive_cleanup_command 사용 |
수동 삭제 방법 | find , rm 명령 등 (주의 필요) |
관련 모니터링 | pg_stat_replication , 로그 파일, 디스크 사용률 |
마무리
PostgreSQL 아카이브 파일은 데이터베이스 복구와 고가용성을 위한 핵심 요소입니다. 그러나 관리하지 않으면 디스크를 가득 채우고 시스템 성능에 악영향을 줄 수 있습니다. 이 글에서 소개한 pg_archivecleanup
도구와 자동화 방법, 그리고 복제 환경에서의 주의사항을 잘 숙지하여 안전하고 효율적인 PostgreSQL 아카이브 관리를 실현해보시기 바랍니다.
'전산' 카테고리의 다른 글
# 리눅스 lsof 명령어 사용방법: 열린 파일부터 포트 점검까지 완벽 가이드 (0) | 2025.05.19 |
---|---|
# 리눅스 ss 명령어 사용방법: netstat을 대체하는 고속 네트워크 진단 도구 (0) | 2025.05.19 |
# SKT BPFDoor: 리눅스 백도어의 실체와 대응 전략 (0) | 2025.05.19 |
# NHN 클라우드 Cloud Native 알아보기 (0) | 2025.05.16 |
# NHN 클라우드 쿠버네티스 리소스 오브젝트 개념 익히기 (0) | 2025.05.16 |