复制与回放
节点示例:pg-a 主、pg-b 备。复制槽名 slot_pg_b。
主上看副本
SELECT application_name, client_addr, state, sync_state,
replay_lag, write_lag, flush_lag
FROM pg_stat_replication;
备库:
SELECT pg_is_in_recovery();
SELECT now() - pg_last_xact_replay_timestamp() AS replay_delay;
复制槽
槽会阻止 WAL 被删。副本挂了很久、槽还在,主库 pg_wal 会涨。
SELECT slot_name, slot_type, active, restart_lsn
FROM pg_replication_slots;
不用的槽删掉。不要留「以后可能用」的槽在生产主库上过夜。
物理 vs 逻辑
- 物理:整实例级别,版本要兼容,恢复和 HA 常用
- 逻辑:可按表订,跨版本、做迁移,有限制(DDL、序列、大对象等要单独设计)
注意
提升备库是架构动作,不是重启。脑裂会丢数。切换步骤写清楚:确认旧主不再写,再改连接。