我们将 Amazon Aurora RDS 与 Postgres 结合使用。我们有多可用区部署,有两个实例,1 个写入器和 1 个读取器副本。现在的问题是,同步是同步还是异步 - 换句话说,我们是否可以预期只读副本会出现延迟。
不幸的是,文档提供了矛盾的信息。
在这里您可以阅读:
Amazon Aurora 通过采用专为数据库工作负载构建的 SSD 支持的虚拟化存储层,进一步扩展了只读副本的优势。 Amazon Aurora 副本与源实例共享相同的底层存储,从而降低成本并避免将数据复制到副本节点。有关使用 Amazon Aurora 进行复制的更多信息,请参阅在线文档。
但是如果您查看更详细的文档,您可以阅读
因此,所有 Aurora 副本都会以最小的副本延迟返回相同的查询结果数据。在主实例写入更新后,此延迟通常远小于 100 毫秒。副本延迟根据数据库更改率而变化。也就是说,在数据库发生大量写入操作期间,您可能会看到副本滞后增加。
这对我来说感觉像是异步的。一种可能的解释是可用区之间的复制是同步的,但副本之间的复制是异步的。正确吗?
Aurora 的计算和存储是分开的。
在存储层,有同步复制。这样每次写入在提交之前都会被大多数存储节点接受。
对于计算实例,存在到只读副本的异步复制。因此主实例可以继续处理数据,而无需等待副本。
就延迟而言,Aurora 副本通常会落后写入器实例很短的时间间隔(100 毫秒或更短)。 https://docs.aws.amazon.com/prescriptive-guidance/latest/aurora-replication-options/aurora-replicas.html