【问题标题】:Aurora is allowing writes to read only endpointAurora 允许写入只读端点
【发布时间】:2019-04-06 00:00:19
【问题描述】:

我最近设置了一个 Aurora RDS 数据库,默认 Writer 角色显示两个端点:

1) 作家 2) 阅读器

但是,当我使用 Reader 端点访问时,我仍然能够更新数据库中的记录。

有人能解释一下为什么会这样吗?

【问题讨论】:

  • SELECT @@aurora_server_id; 比较您的节点名称及其角色。您所描述的应该是不可能的,并且暗示您 - 不知何故 - 并没有真正通过阅读器端点连接到阅读器节点。
  • ...当然,如果您实际上只有一个节点,这将是预期的行为。
  • 如果没有单节点只读这样的东西,为什么还要有一个ro端点呢?
  • 它允许您构建利用 RO 数据库的应用程序逻辑,以便您进行扩展

标签: amazon-web-services amazon-aurora


【解决方案1】:

这是只有一个实例的 Aurora 集群中的预期行为。

Aurora 集群是一组一个或多个实例,所有实例都访问相同的数据,存储在 Aurora 集群卷上。其中一个实例是“写入器”(可以修改数据),如果有多个实例,则任何其他实例都是“读取器”(不能修改数据)。

自动管理集群端点 DNS 条目,以便它们始终指向正确的实例。

单主 Aurora 集群的端点——为了兼容性——从应用程序的角度来看是一样的,无论您有 1 个实例还是多个实例——应用程序可以在需要写入的地方使用写入器端点,并且在应用程序知道它不需要写入的情况下,应用程序可以使用的只读端点。

在集群中只有一个实例的情况下,RO 端点指向写入器,因此设计为进行读/写拆分的应用程序无需修改仍可工作。如果此端点未在单实例集群中提供可用目标,则在数据库层扩展或扩展 Aurora 支持的应用程序将需要更改应用程序,但在实施时,这不是必需的......但在同时,“端点”基本上只是逻辑端点——DNS 条目。接受连接的实例不知道连接是如何到达的。

当有多个实例时,使用短 TTL DNS 在读取器之间平衡到 RO 端点的连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多