在待机模式下在 PostgreSQL 数据库上运行查询时出现以下错误。导致错误的查询可以正常工作 1 个月,但是当您查询超过 1 个月时会出现错误。
ERROR: canceling statement due to conflict with recovery Detail: User query might have needed to see row versions that must be removed
有关如何解决的任何建议?谢谢
在热备服务器上运行查询有点棘手——它可能会失败,因为在查询期间,可能会在主服务器上更新或删除一些需要的行。由于主节点不知道查询是在辅助节点上启动的,因此它认为它可以清理(清理)其行的旧版本。然后辅助必须重播此清理,并且必须强制取消所有可以使用这些行的查询。
更长的查询将更频繁地被取消。
您可以通过在主节点上启动可重复的读取事务来解决此问题,该事务执行虚拟查询,然后在辅助节点上运行真正的查询时处于空闲状态。它的存在将防止清理主节点上的旧行版本。
有关此主题和其他解决方法的更多信息,请参阅文档中的Hot Standby - 处理查询冲突部分。