postgresql PosgreSQL安全处理复制中的查询冲突

46scxncf  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(137)

在postgres aurora读取副本上长时间运行的查询触发了与ERROR: canceling statement due to conflict with recovery的查询冲突-类似于what is described in this question。我计划增加顶部解决方案中提到的max_standby_archive_delaymax_standby_archive_delay(它们被设置为默认值14s和30s)。但是,我担心增加此值的风险-特别是副本数据变得陈旧或过期的风险。
我的问题是:此错误是否表示复制副本正在查询比主副本慢14秒或更多的数据?增加这些值是否会使查询数据的风险变得更加过时?
当我在AWS上检查ReplicaLag指标时,这段时间的最大值仍然很低-大约150ms-这远远低于现有的默认超时14和30s。这是否只是写入日志而不对复制副本应用WAL的延迟?是否有其他指标可以告诉我复制副本上数据的“陈旧”程度?
我找到了这个excellent article on replication conflicts,并使用pg_stat_database_conflicts来确定冲突都是由“缓冲区引脚复制冲突”引起的,这显然是不容易解决的,除了这些设置。

avwztpqn

avwztpqn1#

如果使用流式复制,则参数为max_standby_streaming_delay。是的,如果您增加它,备用设备上可见的数据可能会开始落后于主设备。
不,没有办法可靠地避免这一点。

相关问题