加载中...
复制槽是 PostgreSQL 中用于保障数据复制可靠性的机制。它记录下游订阅者已消费到的位置,确保主库在下游确认之前不会删除仍需要的 WAL 日志,从而防止从库或逻辑订阅因日志丢失而中断。

| 所属系统 | PostgreSQL |
| 作用 | 保留下游所需 WAL |
| 类型 | 物理槽、逻辑槽 |
| 跟踪对象 | WAL 消费位置 |
| 主要风险 | 废弃槽致磁盘膨胀 |
复制槽(Replication Slot)是 PostgreSQL 提供的一种复制状态跟踪机制,用于确保主库保留下游消费者仍然需要的预写日志(WAL),避免因日志被过早清理而导致复制中断。
在 PostgreSQL 中,主库通过持续产生 WAL 记录、由从库或逻辑订阅者读取来实现复制。如果没有复制槽,主库并不精确知道每个下游读到了哪里,可能在从库落后时删除了尚未被消费的 WAL,导致从库无法追赶而报错。复制槽为此在服务器端持久记录每个下游的消费进度,主库据此保留必要的日志,直到确认下游已经收到。
复制槽广泛用于搭建高可用从库、逻辑复制订阅,以及基于逻辑解码的变更数据捕获(CDC)管道。当下游可能临时离线或消费较慢时,复制槽能保证其恢复后仍可从中断处继续,不会丢失变更。
问:复制槽有什么风险?答:如果某个下游长期离线又未删除对应的复制槽,主库会一直保留 WAL 无法清理,可能撑爆磁盘。因此对废弃的槽应及时删除或监控其滞后量。
问:物理槽和逻辑槽有什么区别?答:物理槽面向按块复制的流式备库,逻辑槽通过逻辑解码输出行级变更,可供逻辑复制或 CDC 工具订阅,粒度和用途不同。

| 所属系统 | PostgreSQL |
| 作用 | 保留下游所需 WAL |
| 类型 | 物理槽、逻辑槽 |
| 跟踪对象 | WAL 消费位置 |
| 主要风险 | 废弃槽致磁盘膨胀 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧