PostgreSQL을 운영하다 보면 WAL(Write Ahead Log) 아카이빙을 꼭 신경 써야 함!!
특히 DB 2원화 할때요!
저도 최근에 WAL 아카이빙 설정을 하다가 디스크가 꽉 차버리는 아찔한 상황을 겪었습니다.
왜 이런 문제가 생겼나?
PostgreSQL에서 WAL 아카이빙을 설정할 때, 아카이브 경로를 잘못 잡으면 로그 파일들이 계속 누적되는데요,
저는 아카이빙 디렉토리를 따로 파티션에 두지 않고 / 루트 근처 경로에 설정해놨는데, 이게 문제였어요
WAL 파일이 순식간에 쌓이면서 루트 파티션 용량이 꽉 차는 상황이 발생했고, 자칫하면 DB가 뻗을 수도 있었죠.
해결 방법
다행히 DB 자체는 정상 동작 중이었고, 바로 아카이빙 경로를 전용 파티션으로 옮겼습니다.
명령어는 아래처럼 단순합니다:
# 아카이브 디렉토리 생성
sudo -iu postgres mkdir -p /var/lib/postgresql/wal_archive
sudo chown postgres:postgres /var/lib/postgresql/wal_archive
sudo chmod 700 /var/lib/postgresql/wal_archive
이후 PostgreSQL 설정을 변경합니다
ALTER SYSTEM SET archive_mode = on;
ALTER SYSTEM SET archive_command = 'test ! -f /var/lib/postgresql/wal_archive/%f && cp %p /var/lib/postgresql/wal_archive/%f';
SELECT pg_reload_conf();
이렇게 하면 WAL 파일이 /var/lib/postgresql/wal_archive 경로로 안전하게 쌓이고, 기존 파티션에는 부담을 주지 않습니다.
느낀 점
- DB 로그는 반드시 전용 파티션에: WAL 파일은 생각보다 빠르게 쌓어요.
- 메인 파티션에 두면 시스템 전체가 멈출 수 있습니다.
- 설정 테스트는 꼼꼼히: archive_command 경로나 권한을 잘못 잡으면 그대로 장애로 이어질 수 있습니다.
- 장애 전조를 빨리 캐치: 다행히 디스크 모니터링을 하던 중에 빨리 발견했기 때문에 큰 사고는 피했습니다.
저처럼 디스크 터질 뻔한 경험을 하지 않으시려면, WAL 아카이빙은 꼭 전용 디렉토리(전용 파티션)에 구성하시길 추천드립니다
'TIL' 카테고리의 다른 글
| 서버간 ping 은 동작 안되는데 curl은 되는 경우 (0) | 2025.10.13 |
|---|---|
| Node.js에서 Partial 쉽게 쓰는 법 (0) | 2025.09.29 |
| BullMQ 사용기 / Redis 클러스터에서 주의할 점 (0) | 2025.09.25 |
| Nginx로 소켓 연결하기 / Upgrade가 필요한 이유 (0) | 2025.09.24 |
| L4 장비 l3 장비 이거 뭘까? 가볍게 정리! (0) | 2025.09.21 |