我们在 Google SQL 上有 PostgreSQL 实例(1 个主实例 + 1 个只读副本)。我们的 Django (1.11.12) 应用程序通过 PostGIS 引擎使用这些数据库。当我们尝试使用数据库时,我们看到了以下错误消息:
django.db.utils.OperationalError: canceling statement due to conflict with recovery
DETAIL: User query might have needed to see row versions that must be removed.
当我寻找解决方案时,他们通常说我需要更改 hot_standby_feedback 标志。但如您所知,Google SQL 服务对设置有一些限制。我无法设置标志。
我该如何解决这个问题?
max_standby_streaming_delay
设置为 -1
,以便在检测到冲突时延迟复制。
那么查询将不会被取消,但如果应用更改会导致冲突,复制可能会滞后。
考虑获得一个“不受约束的”PostgreSQL。
如果您想设置
hot_standby_feedback = on
,我建议您表明您对 Google Cloud Platform 的 Public Issue Tracker 工具上开放的 feature request 感兴趣。这样,有人就可以调查您的 Cloud SQL PostgreSQL 实例遇到的处理查询冲突问题。
我还一直在监控 Issue Tracker 中关于使
max_standby_archive_delay
和 max_standby_streaming_delay
标志可供用户设置的开放线程。您也可以在那里跟踪它。希望这有帮助!
现在支持此功能,供其他人查看:https://cloud.google.com/sql/docs/postgres/flags#list-flags-postgres
您可以通过 Postgres 实例配置中的控制台将
max_standby_streaming_delay
设置为 -1
。