반응형
PostgreSQL 은 WAL(Write Ahead Log) 라는 매커니즘을 통해서 데이터 무결성과 복구를 보장한다.
WAL은 데이터베이스에 변경 사항을 실제 데이터 파일에 쓰기 전에 먼저 로그에 기록하는 방식이다.
이 로그 기록이 성공적으로 이루어진 후에야 디스크에 변경 내용을 적용하기 때문에,
장애 발생 시 WAL에 기록된 로그를 통해 데이터베이스를 일관된 상태로 복구할 수 있다.
1. WAL 파일 관련 파라미터
| 파라미터 | 설명 | 기본값 및 참고사항 |
| wal_level | WAL에 기록되는 정보의 양을 결정. (복제, 아카이브, 논리복제) | replica(복제용) / logical(논리복제용) / minimal(최소) |
| max_wal_size | WAL 파일들이 차지할 수 있는 최대 저장 용량(soft limit) | 1GB (가변적이며 초과 가능) |
| min_wal_size | 체크포인트 완료 후 유지할 최소 WAL 용량 | 80MB |
| wal_keep_size | 복제 슬롯(복제 용도) 유지 시 WAL 최소 보존 크기 | 기본값 없음, 설정 권장 |
| max_slot_wal_keep_size | 복제 슬롯에 할당된 WAL 저장 공간 최대 크기 제한 (PostgreSQL 13 이상) | 1GB 권장 |
| wal_buffers | WAL 작업 시 사용하는 메모리 크기, 기본은 shared_buffers 크기의 1/32 | 약 16MB (자동) |
| checkpoint_timeout | 체크포인트 간격, WAL 삭제는 checkpoint 이후에 가능 | 기본 5분, 운영환경에 따라 늘릴 수 있음 |
| checkpoint_completion_target | 체크포인트 작성을 부하를 분산하기 위한 비율 | 0.9 (디스크 부하 완화를 위해) |
| wal_compression | WAL에 기록할 때 데이터 압축 여부 | off 기본, 켜면 성능 저하 대비 WAL 크기 감소 가능 |
| full_page_writes | 체크포인트 이후 수정된 페이지의 전체 내용을 처음 수정 시 WAL에 기록 | on 기본, 운영환경에서 데이터 무결성 위해 권장 |
| archive_mode | WAL 세그먼트 아카이브 여부 설정 | off 기본 |
| archive_command | 완료된 WAL 파일을 아카이브할 때 실행할 명령어 설정 | 아카이브 사용 시 필수 |
| wal_sender_timeout | 복제 송신 프로세스의 타임아웃 설정 | 0(무한) 또는 10분 이상 권장 |
| max_replication_slots | 복제 슬롯의 최대 개수 설정 | 복제할 노드 수에 따라 설정 필요 |
| max_wal_senders | WAL 송신자 프로세스 최대 개수 설정 | 복제 슬롯 수보다 크게 설정해야 함 |
- max_wal_size
이름때문에 여기서 설정한 값 이상으로는 wal 사이즈가 커지지 않을 것 같은 착각이 들게 만든다.
하지만 실제로는 soft limit 이라, 강제되지 않고 복제지연 등의 이유로 wal 삭제가 되지 않으면 설정 값 이상으로 파일이 쌓인다.
RDS 에서 wal 파일은 독립된 공간이 아닌 데이터파일, 로그파일 등과 함께 공유해서 사용한다.
운영중에 free storage 공간 확인 필요.
- wal_level
minimal : 장애 복구에 필요한 정보까지만 저장한다. 커밋이 완료된 지점까지 복구 가능.
replica : 장애복구 + 복제에 필요한 정보까지 저장
logical: replica보다 더 상세하게 WAL을 기록. 테이블 단위의 논리적 변경사항(DML)을 행 단위로 캡처.
CDC(Change Data Capture)나 논리적 복제에 사용됩니다. 커밋 완료된 트랜잭션 변경을 외부 스트리밍하는 데 중점
반응형
'생계 > PostgreSQL' 카테고리의 다른 글
| [ PostgreSQL ] 2. vacuum ( 명령어 별 기능) (1) | 2025.08.02 |
|---|---|
| ec2 서버에 pg_repack 설치하기 (0) | 2025.07.27 |
| [ PostgreSQL ] postgresql 로그 (0) | 2025.07.08 |
| postgresql 튜닝 위한 뷰 및 관련 도구 (0) | 2025.07.08 |
| [ postgresql ] 파라미터 (1) | 2025.07.07 |