본문으로 건너뛰기

wal_level

버전기본값context타입
14replicapostmaster (재시작)enum
15replicapostmaster (재시작)enum
16replicapostmaster (재시작)enum
17replicapostmaster (재시작)enum
18replicapostmaster (재시작)enum
19replicapostmaster (재시작)enum

WAL에 얼마나 많은 정보를 기록할지 정한다. 기본값은 replica이며, minimal, replica, logical 세 단계가 있다. 상위 단계는 하위 단계가 기록하는 정보를 모두 포함한다. 이 파라미터는 서버를 시작할 때만 설정할 수 있다.

replica는 WAL 아카이빙과 replication, standby 서버에서의 read-only 쿼리까지 지원할 만큼의 데이터를 기록한다. minimal은 crash나 즉시 종료에서 복구하는 데 필요한 최소 정보만 남기고 나머지 로깅을 제거한다. 예를 들어 CREATE TABLE, TRUNCATE, CLUSTER, REFRESH MATERIALIZED VIEW처럼 테이블을 새로 만들거나 다시 쓰는 트랜잭션에서 row 정보를 WAL에 남기지 않아 작업이 훨씬 빨라질 수 있다.

다만 minimal은 point-in-time recovery에 필요한 정보를 담지 못한다. 따라서 continuous archiving(archive_mode)이나 streaming binary replication을 쓰려면 replica 이상이어야 한다. 실제로 max_wal_senders가 0이 아니면 minimal 모드에서는 서버가 시작조차 하지 않는다. 또한 wal_levelminimal로 낮추면 기존 base backup이 point-in-time recovery와 standby 용도로 못 쓰게 된다는 점에 주의해야 한다.

logicalreplica가 기록하는 모든 정보에 더해 logical decoding에 필요한 정보까지 남긴다. 많은 테이블이 REPLICA IDENTITY FULL로 설정되어 있고 UPDATE·DELETE가 빈번하면 WAL 양이 특히 많이 늘어난다.

운영 노트: standby를 두거나 PITR 백업을 운영한다면 최소 replica가 필요하고, 논리 복제나 CDC 도구를 붙일 계획이면 logical로 둔다. 단계를 올릴수록 WAL 양이 늘어나는 만큼, 백업·복제 요구사항에 맞는 최소 단계를 고르는 것이 좋다.

출처: PostgreSQL 18 문서