Physical (streaming) replication copy WAL ở mức byte: standby là bản sao y hệt toàn bộ cluster, cùng phiên bản major, không ghi được, không chọn được bảng.
Logical replication giải mã WAL thành thay đổi ở mức dòng (INSERT/UPDATE/DELETE) rồi gửi tới subscriber theo mô hình publication/subscription.
-- on the publisher (requires wal_level = logical)
create publication orders_pub for table orders, order_items;
-- on the subscriber
create subscription orders_sub
connection 'host=... dbname=...'
publication orders_pub;Khác biệt cốt lõi:
| Physical | Logical | |
|---|---|---|
| Phạm vi | Toàn cluster | Chọn từng bảng |
| Đích | Chỉ đọc | Ghi được, có thể có bảng riêng |
| Phiên bản | Phải khớp major | Cho phép khác major |
Dùng khi: nâng cấp major version gần như không downtime (replicate sang cluster mới rồi cắt traffic), đẩy một tập bảng sang hệ thống phân tích, gộp dữ liệu từ nhiều nguồn, hoặc feed CDC.
Giới hạn cần nhớ: không tự replicate thay đổi DDL — thêm cột phải làm thủ công ở cả hai phía. Bảng phải có primary key (hoặc REPLICA IDENTITY FULL) thì UPDATE/DELETE mới replicate được. Sequence không được đồng bộ giá trị. Và replication slot của subscriber đã ngừng hoạt động sẽ giữ WAL lại vô hạn trên publisher cho tới khi đầy đĩa — luôn giám sát pg_replication_slots.