我们在Google SQL上有PostgreSQL实例(1个master+1个read replica(。我们的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服务对设置有一些限制。我不能立旗。
我该怎么解决这个问题?
如果“谷歌SQL";允许时,您可以将max_standby_streaming_delay
设置为-1
,以便在检测到冲突时延迟复制。
然后,查询不会被取消,但如果应用更改会导致冲突,则复制可能会滞后。
考虑获得“无拘无束";PostgreSQL。
如果你想设置hot_standby_feedback = on
,我建议你在谷歌云平台的公共问题跟踪工具上表明你对开放功能请求的兴趣。通过这种方式,有人可以查看您的Cloud SQL PostgreSQL实例遇到的处理查询冲突问题。
我还监视了Issue Tracker中的一个开放线程,该线程关于让用户可以设置max_standby_archive_delay
和max_standby_streaming_delay
标志。你也可以在那里追踪它。希望这能有所帮助!