1. PostgreSQL 物理复制(Physical Replication),WAL 流复制?
请解释 PostgreSQL 物理复制机制,特别是基于 WAL 的流复制是如何工作的?
- 物理复制的原理
- WAL 流复制流程
- 主从一致性
物理复制是把主库生成的 WAL(write-ahead log)记录原样传输到备库并重放,从而在备库重建与主库字节级一致的数据库。流复制(streaming replication)通过复制协议(replication protocol)让备库持续接收主库产生的 WAL,代替传统的 WAL 归档文件传输,延迟更低。备库通过 pg_basebackup 初始化后,启动时连接主库的 walsender 进程持续拉取 WAL。物理复制无法在备库上按表/库选择性复制,但支持只读查询与热备(hot standby)。
物理复制是 PG 高可用与只读扩展的基础。它复制整个数据库集群的字节流,机制简单、一致性高,但无法按表/库选择性复制,且备库与主库版本必须一致。
-- 主库创建复制槽(可选)
SELECT * FROM pg_create_physical_replication_slot('slot1');
-- 查看复制状态
SELECT * FROM pg_stat_replication;