【发布时间】:2021-10-04 07:21:52
【问题描述】:
我对为单个副本使用单个复制槽的原因感到困惑(除了单点崩溃)。我知道每个复制槽只存储一定数量的 WAL 段,如果一个副本脱机,复制槽保证那些没有到达副本的段将被保留,直到它重新上线。但是,直到所有副本中最旧的检查点之前,它不需要更少的磁盘空间来存储段吗?
作为一个非常简化的示例,我有 3 个副本。第一个是在线的并且完全同步,所以假设我们不为这个存储任何东西。第二个在 30 分钟前下线,所以我们存储了最后 30 分钟的 WAL。第三个离线了 2 天,所以我们存储了 2 天的 WAL。当我们可以简单地存储 2 天并节省空间时,存储 2 天 30 分钟的 WAL 的原因是什么?
【问题讨论】:
-
要明确所有插槽都指向同一个 WAL 源,每个插槽都不包含其 WAL 集。插槽只是一种维护有关特定复制在更改流中的位置信息的方法。
标签: database postgresql database-design