You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Aurora PostgreSQL 15读写实例序列值不一致原因及重复值疑问

问题解答

读写实例序列值不一致的原因

  • 序列本地缓存导致实例状态差异:PostgreSQL的序列自带本地缓存机制(默认CACHE 1),调用nextval时,实例会在本地内存缓存一批序列值。Aurora里主实例的序列持久化状态(比如last_value)会写入共享存储,但每个读取实例的本地缓存是单独的内存数据,不会同步到共享存储或其他实例。这就造成读取实例可能还保留着旧的序列缓存状态,查出来的序列值和主实例不一致。
  • 缓存刷新触发条件:只有当读取实例重启、缓存过期,或者你在读取实例上调用nextval/setval时,它才会从共享存储加载最新的序列持久化数据,此时两者的值就会对齐。

故障切换时是否会产生重复序列值

不会出现重复值,具体说明:

  • 当写入实例故障,读取实例升级为新主实例时,新主实例会直接从Aurora共享存储里读取序列的最新持久化状态(也就是旧主实例最后写入的last_value)。
  • 旧主实例本地缓存里没用到的序列值会随着故障丢失,但PostgreSQL的序列设计绝不会重复分配已经持久化过的序列值——最多只会出现序列值跳号(比如跳过那些没用到的缓存值),但不会产生重复。
  • 结合你验证的参数:rds.logical_replication=off、wal_level=replica,说明集群用的是物理复制,物理复制会完整同步序列的持久化元数据,确保新主实例拿到的是序列的最新有效状态。

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:15:18