Postgres VACUUM 和复制

Postgres VACUUM and replication

我有一个带有 2 个异步复制 salve 的主 postgres

I 运行 VACUUM FULL VERBOSE ANALYSE my_table 在所有表上,清理后从服务器不同步 我的应用程序从 slaves 读取,目前一切都是错误的!

  1. 如何强制同步或运行重新同步?

  2. 这里有什么问题吗?为什么运行ning vacuum 发出了问题?!

Whats problem here?

您的服务器日志文件可能比无法访问您的计算机的随机陌生人更准确地回答这个问题。日志文件说什么?副本日志可能比主日志更有趣,但两者都要检查。

你收到关于 requested WAL segment %s has already been removed 的消息吗?如果是这样,您将不得不重新创建副本。 (除非您在副本当前未配置使用的某个地方有 WAL 存档——但即便如此,重新创建可能会更快更容易)。

如果你正在使用复制槽,master 应该保留所有必要的 WAL。在那种情况下,复制品仍会努力赶上,可能只是需要很长时间才能赶上。要么等待,要么重新创建它们,如果您认为这样会更快。

Why running vacuum issued a problem?!

这里的关键是FULL。这样做基本上重写了整个数据库,生成大量需要通过网络获取然后重播的 WAL。瓶颈可能是从网络到 CPU 再到磁盘驱动器的任何事物。

不要在没有充分理由的情况下使用 VACUUM FULL。