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

问题描述

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

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

解决方法

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

备用服务器上的限制与主服务器上的限制相同:VACUUM (FULL)运行时,受影响的表被锁定为任何并发访问。

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