在待机模式下在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
有关如何解决的任何建议?谢谢
在热备份服务器上运行查询有些棘手-可能会失败,因为在查询期间某些需要的行可能在主数据库上被更新或删除。由于主数据库不知道查询是在辅助数据库上启动的,因此它认为它可以清除(清理)其行的旧版本。然后,secondary必须重播此清理操作,并且必须强制取消所有可以使用这些行的查询。
较长的查询将被更频繁地取消。
您可以通过在主数据库上启动可重复读取事务来解决此问题,该事务将执行虚拟查询,然后在次要数据库上运行实际查询时将其置于空闲状态。它的存在将防止在主数据库上清除旧行版本。
文档中的“热备-处理查询冲突”部分介绍了有关此主题的更多信息以及其他解决方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句