如何在 Postgresql 11 中使用流复制在主节点上清理 FULL

How to Vacuum FULL on Primary node with Streaming replication in Postgresql 11

在生产环境中,我的数据库大小为 150 GB。从此 table 中删除了许多行,并对其应用了 Vacuum。现在我需要将未使用的 space 从数据库释放到磁盘 OS。所以需要应用Vacuum Full。 流复制配置在生产服务器上,具有三个辅助节点。 什么是最好的方法?

  1. 暂停复制并运行 主节点上的 Vacuum FULL。然后再次开始复制。
  2. 在主节点上 Vacuum FULL 后停止复制并重新创建。

您无需执行上述任何操作。 VACUUM (FULL) 就像任何其他数据修改一样被复制。

在备用服务器上应用与主服务器相同的限制:虽然 VACUUM (FULL) 是 运行,受影响的 table 被锁定到任何并发访问。

由于VACUUM (FULL)重写了table,会产生大量的WAL,当然复制性能可能会受到影响。但是停止复制只会延迟,不会减少,重建备用会产生更多流量。