본문으로 건너뛰기

archive_timeout

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

서버가 주기적으로 새 WAL segment 파일로 전환하도록 강제해, archive되지 않은 데이터가 얼마나 오래 남아 있을 수 있는지를 제한한다. 단위 없이 값을 주면 초로 해석하며, 기본값은 0(비활성)이다. postgresql.conf나 서버 커맨드라인에서만 설정할 수 있다.

archive_commandarchive_library는 완료된 WAL segment에 대해서만 호출된다. 따라서 WAL 트래픽이 적은 서버에서는 트랜잭션이 commit된 시점과 그 내용이 archive storage에 안전하게 기록되는 시점 사이에 긴 지연이 생길 수 있다. archive_timeout을 0보다 크게 설정하면, 마지막 segment 전환 이후 이 시간이 지나고 데이터베이스 활동이 있었다면 서버가 새 segment 파일로 전환한다.

강제 전환으로 일찍 닫힌 archive 파일도 가득 찬 파일과 같은 크기를 차지한다. 따라서 archive_timeout을 아주 짧게 잡으면 archive storage가 불필요하게 부풀어 오르므로 현명하지 않다. 보통 1분 안팎이면 합리적이다.

운영 노트: 이보다 더 빠르게 데이터를 primary 밖으로 복사해야 한다면 archiving 대신 streaming replication을 고려하는 것이 맞다. archive_timeout은 어디까지나 archive 기반 보호의 최대 데이터 손실 폭을 줄이는 장치다.

출처: PostgreSQL 18 문서