如何在 Postgresql 11 中使用流复制在主节点上清理 FULL
How to Vacuum FULL on Primary node with Streaming replication in Postgresql 11
在生产环境中,我的数据库大小为 150 GB。从此 table 中删除了许多行,并对其应用了 Vacuum。现在我需要将未使用的 space 从数据库释放到磁盘 OS。所以需要应用Vacuum Full。
流复制配置在生产服务器上,具有三个辅助节点。
什么是最好的方法?
- 暂停复制并运行 主节点上的 Vacuum FULL。然后再次开始复制。
- 在主节点上 Vacuum FULL 后停止复制并重新创建。
您无需执行上述任何操作。
VACUUM (FULL)
就像任何其他数据修改一样被复制。
在备用服务器上应用与主服务器相同的限制:虽然 VACUUM (FULL)
是 运行,受影响的 table 被锁定到任何并发访问。
由于VACUUM (FULL)
重写了table,会产生大量的WAL,当然复制性能可能会受到影响。但是停止复制只会延迟,不会减少,重建备用会产生更多流量。
在生产环境中,我的数据库大小为 150 GB。从此 table 中删除了许多行,并对其应用了 Vacuum。现在我需要将未使用的 space 从数据库释放到磁盘 OS。所以需要应用Vacuum Full。 流复制配置在生产服务器上,具有三个辅助节点。 什么是最好的方法?
- 暂停复制并运行 主节点上的 Vacuum FULL。然后再次开始复制。
- 在主节点上 Vacuum FULL 后停止复制并重新创建。
您无需执行上述任何操作。
VACUUM (FULL)
就像任何其他数据修改一样被复制。
在备用服务器上应用与主服务器相同的限制:虽然 VACUUM (FULL)
是 运行,受影响的 table 被锁定到任何并发访问。
由于VACUUM (FULL)
重写了table,会产生大量的WAL,当然复制性能可能会受到影响。但是停止复制只会延迟,不会减少,重建备用会产生更多流量。