본문으로 건너뛰기
recovery_min_apply_delay

recovery_min_apply_delay

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

standby가 각 트랜잭션의 commit 적용을 지정한 시간만큼 늦추도록 한다. 단위 없이 값을 주면 밀리초로 해석하며, 기본값 0은 지연을 두지 않는다. postgresql.conf나 서버 커맨드라인에서만 설정할 수 있고, standby 서버에 적용된다.

기본적으로 standby는 받은 WAL record를 최대한 빨리 재생하지만, 이 파라미터를 쓰면 일정한 시간차를 둔 delayed standby를 만들 수 있다. 예를 들어 5min으로 두면 standby의 시스템 시각이 primary가 보고한 commit 시각보다 5분 이상 지난 뒤에야 해당 commit을 재생한다. 실수로 지운 데이터를 아직 반영되지 않은 standby에서 건져내는 식으로, 데이터 손실 사고에 대응할 시간을 확보하는 용도다.

지연은 commit record에만 걸리고 다른 record는 최대한 빨리 재생된다. MVCC 가시성 규칙상 commit record가 적용되기 전에는 그 효과가 보이지 않으므로 문제가 되지 않는다. 지연은 primary가 WAL에 기록한 timestamp와 standby의 현재 시각으로 계산하므로 두 서버의 시계가 어긋나면 예상보다 이르거나 늦게 적용될 수 있다. 적용을 미루는 동안 WAL은 standby에 계속 쌓이므로, 지연이 길수록 standby의 pg_wal 디렉토리에 더 많은 디스크가 필요하다.

운영 노트: synchronous_commit = remote_apply인 synchronous replication과 함께 쓰면 모든 COMMIT이 이 지연만큼 기다리게 된다. 또 hot_standby_feedback의 전달도 함께 늦어져 primary의 bloat를 키울 수 있으니 조합에 주의한다.

출처: PostgreSQL 18 문서