暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

故障处理|PostgreSQL:"conflict with recovery" 报错(PSQLException-ERROR)

原创 小小亮 2022-10-20
2852

本文应有助于解决 PostgreSQL报错,例如 "PSQLException-ERROR: canceling statement due to conflict with recovery"  或 "FATAL: terminating connection due to conflict with recovery Detail: User query might have needed to see row versions that must be removed. Hint: In a moment you should be able to reconnect to the database and repeat your command. "

此错误并非源自 Data Virtuality,而是与 PostgreSQL 复制配置有关。通常,这意味着您正在访问配置为热备副本的从属副本。

在这样的配置中,PostgreSQL 的默认行为是,来自主服务器的任何新更改都会在等待很短的时间(默认为 30 秒)后终止使用相同数据的所有其他查询。

以下是有关该主题的更多信息:
http ://www.postgresql.org/docs/9.0/interactive/hot-standby.html#HOT-STANDBY-CONFLICT

解决这个问题的方法是让旧 PostgreSQL 版本增加这里讨论的两个 PostgreSQL 参数:
http ://www.postgresql.org/docs/9.0/interactive/runtime-config-wal.html#RUNTIME-CONFIG-STANDBY

在较新版本的 PostgreSQL 中解决此问题的一种更优雅的方法是启用参数 hot_standby_feedback,如此处所述

https://www.postgresql.org/docs/9.4/static/runtime-config-replication.html#GUC-HOT-STANDBY-FEEDBACK

如果由于某种原因上述任何一项都不可能,例如,如果无法更改 PostgreSQL 配置 - 在许多情况下,将受影响的复制作业的重试计数设置为 >1 并延迟几秒钟会很有帮助。在这种情况下,作业将重试该操作,并且有可能在其中一次重试时不会与主服务器发生冲突。


原文标题:PostgreSQL: "conflict with recovery" error message

原文作者:Nick Golovin

原文链接:https://support.datavirtuality.com/hc/en-us/articles/360000051523-PostgreSQL-conflict-with-recovery-error-message

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论