Aurora 允许写入只读端点
Aurora is allowing writes to read only endpoint
我最近设置了一个 Aurora RDS 数据库,默认的 Writer 角色显示了两个端点:
1) 作家
2) Reader
然而,当我使用 Reader 端点访问时,我仍然能够更新数据库中的记录。
有人可以解释为什么会这样吗?
这是只有一个实例的 Aurora 集群中的预期行为。
Aurora 集群是一组一个或多个实例,所有实例都访问相同的数据,存储在 Aurora 集群卷上。其中一个实例是 "writer"(可以修改数据),如果有多个实例,则任何其他实例都是 "readers"(不能修改数据)。
集群端点 DNS 条目是自动管理的,因此它们始终指向正确的实例。
单主 Aurora 集群的端点——为了兼容性——从应用程序的角度来看是一样的,无论你有 1 个实例还是多个实例——应用程序可以在需要写入的地方使用 writer 端点,以及在应用程序知道它不需要写入的情况下应用程序可以使用的只读端点。
在集群中只有一个实例的情况下,RO 端点指向编写器,因此旨在进行 read/write 拆分的应用程序仍然可以在不修改的情况下运行。如果这个端点没有在单实例集群中提供可用的目的地,那么在数据库层扩展 Aurora 支持的应用程序将需要更改应用程序,但在实施时,这不是必需的......但在同时,"endpoints" 从根本上说只是逻辑端点——DNS 条目。接受连接的实例不知道连接是如何到达的。
当存在多个实例时,到 RO 端点的连接在使用短 TTL DNS 的读取器之间平衡。
我最近设置了一个 Aurora RDS 数据库,默认的 Writer 角色显示了两个端点:
1) 作家 2) Reader
然而,当我使用 Reader 端点访问时,我仍然能够更新数据库中的记录。
有人可以解释为什么会这样吗?
这是只有一个实例的 Aurora 集群中的预期行为。
Aurora 集群是一组一个或多个实例,所有实例都访问相同的数据,存储在 Aurora 集群卷上。其中一个实例是 "writer"(可以修改数据),如果有多个实例,则任何其他实例都是 "readers"(不能修改数据)。
集群端点 DNS 条目是自动管理的,因此它们始终指向正确的实例。
单主 Aurora 集群的端点——为了兼容性——从应用程序的角度来看是一样的,无论你有 1 个实例还是多个实例——应用程序可以在需要写入的地方使用 writer 端点,以及在应用程序知道它不需要写入的情况下应用程序可以使用的只读端点。
在集群中只有一个实例的情况下,RO 端点指向编写器,因此旨在进行 read/write 拆分的应用程序仍然可以在不修改的情况下运行。如果这个端点没有在单实例集群中提供可用的目的地,那么在数据库层扩展 Aurora 支持的应用程序将需要更改应用程序,但在实施时,这不是必需的......但在同时,"endpoints" 从根本上说只是逻辑端点——DNS 条目。接受连接的实例不知道连接是如何到达的。
当存在多个实例时,到 RO 端点的连接在使用短 TTL DNS 的读取器之间平衡。