【问题标题】:Is it necessary to manage read replica details on application side for AuroraDB?是否需要在应用程序端管理 Aurora DB 的只读副本详细信息?
【发布时间】:2020-09-14 08:34:25
【问题描述】:

我是 AWS 新手,面临 RDS CPU 使用率问题。以下是RDS信息:

  • 实例类型:t3.medium
  • 数据库类型:Postgres
  • 存储空间:50GB

我在一天中的某个时间段收到 80% CPU 使用率的警告。 因此,我正在考虑迁移到支持 Auto Scaling 的 Aurora DB,但官方文档说我必须在应用程序端管理 Aurora DB 的横向扩展实例。

要从 Aurora Auto Scaling 中受益,您的应用程序必须支持与新 Aurora 副本的连接。为此,我们建议使用 Aurora 读取器终端节点。对于 Aurora MySQL,您可以使用 MariaDB Connector/J 实用程序等驱动程序。有关更多信息,请参阅连接到 Amazon Aurora 数据库集群。

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Integrating.AutoScaling.html

以上是官方文档的链接。

我的问题是:

  • Aurora DB 是否会在横向扩展时创建具有新端点的新副本?
  • 当 RDS 横向扩展时,我真的需要在我的应用程序中管理多个实例的连接信息吗?
  • 如果是,那么我的应用程序将如何知道已创建多少新副本并用于读取或写入以及端点是什么?
  • 有什么方法可以自动平衡负载,而无需在应用程序端添加额外的 DB 端点?

注意:我正在使用 Ruby on Rails Web 应用程序访问数据库。

谢谢。

【问题讨论】:

    标签: amazon-web-services amazon-rds amazon-aurora


    【解决方案1】:

    你必须在你的应用程序中使用reader endpoint:

    Aurora 数据库集群的读取器终端节点为与数据库集群的只读连接提供负载平衡支持。使用读取器端点进行读取操作,例如查询。 [...] 如果集群包含一个或多个 Aurora 副本,则 读取器端点负载平衡 Aurora 副本之间的每个连接请求。

    通常您无需执行任何操作,只需使用您在问题中所写的阅读器端点即可:

    要从 Aurora Auto Scaling 中受益,您的应用程序必须支持与新 Aurora 副本的连接。为此,我们建议使用 Aurora 阅读器端点。

    它的工作方式是,当你解析阅读器的端点 DNS 名称时,它会随机返回一个副本的 IP。

    添加新副本时,读取器端点也会在 AWS 端自动更新。这个过程对你来说是透明的。

    但应注意,负载平衡是在连接级别完成的。因此,如果您在应用程序的整个生命周期中打开并仅保持一个连接,它将不会进行负载平衡。这是因为要在连接时选择要连接的副本。

    【讨论】:

    • 写连接也可以吗?是否可以从单个端点进行读/写负载平衡?
    • @JustAProgrammer 你好。可悲的是没有。只有一个作家极光实例。因此,没有什么可以进行负载平衡。你只能平衡读者。
    • 谢谢,但是在这种情况下,当有更多的写操作和更少的读操作时会发生什么?我听说读取副本会转换为写入副本以适应写入的负载,这是真的吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-19
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2014-08-02
    • 2013-11-07
    • 2011-09-24
    相关资源
    最近更新 更多