标准答案
- 物理槽通常关注 restart_lsn,逻辑槽还要关注 confirmed_flush_lsn、消费端位点和解码进度;具体字段要结合槽类型解释。
- 先确认槽是否 active、对应哪个副本或订阅、滞后了多少 WAL,再判断是消费者停机、网络故障、解码器卡住还是下游处理太慢。
- 未使用的槽可以删除,但必须证明没有仍依赖它的副本或订阅;误删可能让消费者无法从原位置继续。
- 应为槽滞后、WAL 保留量和磁盘空间设置告警,并明确消费者长时间不可恢复时的止血和重建策略。
- 消费者恢复后要验证重复、缺失、位点推进和下游幂等,不能只看主库磁盘使用量下降。
题目解析
复制槽的本质是一个保留承诺:只要槽还认为消费者没有消费到某个位置,主库就不能安全回收对应 WAL。它保护了恢复能力,也引入了明确的容量风险。
WAL 增长时要把写入量、归档、普通副本和复制槽分别看,不能仅凭磁盘增长就删除槽。正确的止血动作需要知道消费者是否还能恢复以及能否从新快照重建。
槽监控应和磁盘告警绑定,因为槽滞后增长的最终结果可能是主库无法继续写入,而不是一个普通的“副本延迟”指标。
常见误区
- 误区:WAL 增长就直接删除所有复制槽。改正:先确认槽 owner、恢复可能性和重建代价,再做有证据的清理。
- 误区:只监控副本是否 connected。改正:还要监控 LSN 滞后、保留 WAL 大小和下游消费速度。
- 误区:消费者恢复后只看磁盘下降。改正:必须验证位点、重复/缺失和下游幂等。