pg_walviz: WAL 세그먼트를 브라우저에서 바이트 단위로 들여다본다

Bertrand Drouvot가 WAL 세그먼트 파일을 브라우저에서 시각화하는 pg_walviz를 공개했습니다. pg_waldump가 record를 텍스트로 풀어 준다면, pg_walviz는 record가 세그먼트 안에 물리적으로 어떻게 놓이는지, 페이지 경계에서 어떻게 쪼개지는지, padding이 어디 들어가는지를 보여줍니다. WAL 학습 도구로서의 쓰임새를 정리합니다.

2026년 8월 15일

13년 잠복한 cascading replication 버그: segment 경계에서 멈추는 standby, Kubernetes가 찾아냈다

PostgreSQL 9.3부터 잠복해 있던 cascading replication 버그를 CloudNativePG 팀이 찾아 고쳤습니다. cascading standby가 archive recovery로 폴백했다가 streaming 재접속을 시도할 때, 요청 위치가 WAL segment 경계에 정확히 걸리면 upstream이 거부하고 재시도 없이 멈추는 문제입니다. 메커니즘과 오류 메시지, 그리고 13년 만에 잡힌 이유를 정리합니다.

2026년 8월 5일

32TB 백업 22시간을 2.8시간으로: PlanetScale의 shard 병렬 PostgreSQL 백업

PlanetScale이 petabyte 규모 PostgreSQL을 시간 단위로 백업하는 구조를 공개했습니다. shard마다 백업 전용 인스턴스를 띄워 병렬로 받고, 복원 시에는 WAL 대부분을 S3 archive에서 replay한 뒤 마지막 몇 분만 primary에서 streaming으로 받는 하이브리드 방식입니다. 32TB가 단일로는 22시간, 8개 shard 병렬로는 2.8시간입니다. Barman과 pgBackRest의 세계에서 온 사람 눈으로 뜯어봅니다.

2026년 8월 2일

PGSimCity: PostgreSQL 내부를 3D 도시로 걸어 본다

Nikolay Samokhvalov가 공개한 PGSimCity는 PostgreSQL 내부를 탐험 가능한 3D 도시로 보여준다. buffer pool은 창고 지구, WAL은 호박색 물류선, checkpointer는 유지보수 차량이다. 저장소를 직접 클론해 빌드하고 시나리오 13종과 투어 14장을 확인했다.

2026년 7월 29일

vacuum이 미운 날: 다른 엔진은 MVCC 비용을 어디에 숨겼나

PostgreSQL MVCC 비판은 대체로 맞다. 문제는 비교 대상 없이 그 비판만 떠돈다는 것이다. Docker에 PostgreSQL 18을 띄워 write amplification과 bloat를 직접 재보고, Oracle과 InnoDB, SQL Server, WiredTiger, LSM 계열이 같은 비용을 어디로 보냈는지, 엔진별로 그 비용을 확인하는 쿼리는 무엇인지 정리했다.

2026년 7월 28일

record with incorrect prev-link, standby가 archive를 무한 restore하며 멈춘 이유

두 번째 failover 직후 secondary가 같은 WAL 세그먼트를 archive에서 계속 restore하면서 record with incorrect prev-link 로그만 2초 간격으로 반복했다. 이 메시지가 xlogreader의 어디에서 나오는지, timeline 분기와 recycled 세그먼트가 어떻게 얽히는지, pg_auto_failover 환경에서 실제로 어떻게 걷어냈는지 기록한다.

2026년 7월 24일

PostgreSQL 19의 wal_level, 고정값에서 동적 floor 값으로

PostgreSQL 19부터 wal_level이 고정 설정이 아니라 floor 값으로 동작한다. logical replication slot이 생기면 effective level이 자동으로 올라가고, 마지막 slot이 사라지면 다시 내려간다. cascading standby와 archived WAL의 비대칭 함정 포함.

2026년 5월 13일