Nguồn: medium.com/@mailbox.sq7
Tóm tắt
Bài viết mô tả hành trình của một kỹ sư từ câu hỏi đơn giản “pg_receivewal hoạt động như thế nào?” đến việc tự viết WAL receiver từ scratch bằng cách đọc trực tiếp PostgreSQL source code. WAL (Write-Ahead Log) là cơ chế durability và replication cốt lõi của PostgreSQL: mọi thay đổi đều được ghi vào WAL trước khi apply vào heap files.
Tác giả giải thích streaming replication protocol mà PostgreSQL expose qua libpq: client kết nối với role REPLICATION, gửi START_REPLICATION command, sau đó nhận stream các XLogData message chứa WAL segments. Protocol đơn giản hơn tưởng nhiều — chỉ cần handle keepalive, standby status update, và parse XLogRecord header để biết LSN (Log Sequence Number) hiện tại.
Thách thức chính không phải là protocol mà là parsing WAL record format: mỗi record có fixed header + variable-length data phụ thuộc vào resource manager (Heap, Index, Transaction, v.v.). Bài viết là deep-dive thực chiến vào database internals, hữu ích cho ai xây dựng CDC (Change Data Capture) pipeline, custom replica, hoặc đơn giản muốn hiểu PostgreSQL replication ở mức code.