使用 Amazon RDS Proxy - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon RDS Proxy

通过使用 Amazon RDS Proxy,您可以允许您的应用程序池化和共享数据库连接,以提高其扩展能力。RDS Proxy 通过在保留应用程序连接的同时自动连接到备用数据库实例,使应用程序能够更好地抵御数据库故障。使用 RDS Proxy 还使您能够为数据库强制执行 Amazon Identity and Access Management (IAM) 身份验证,并将凭证安全地存储在 Amazon Secrets Manager。

注意

RDS Proxy 与 MySQL 和 PostgreSQL 完全兼容。您可以在不更改代码的情况下为大多数应用程序启用 RDS Proxy。

使用 RDS Proxy,您可以处理不可预测的数据库流量激增,这种情况可能由于超额预订连接或快速创建新连接而导致问题。RDS Proxy 建立数据库连接池,并重复使用该池中的连接,不会因为每次打开新数据库连接而产生内存和 CPU 开销。要防止数据库超额订阅,您可以控制创建的数据库连接数。

RDS Proxy 对无法立即从连接池提供服务的应用程序连接进行排队或限制。尽管延迟可能会增加,但您的应用程序可以继续扩展,而不会导致数据库突然出现故障或不堪重负。如果连接请求超出您指定的限制,则 RDS Proxy 会拒绝应用程序连接(即,减轻负载)。与此同时,它为通过可用容量提供服务的负载维护可预测的性能。

您可以减少处理凭证的开销,并为每个新连接建立安全连接。RDS Proxy 可以代表数据库处理其中的一些工作。

RDS 代理支持的引擎和区域可用性

有关给定 Amazon 区域中的数据库引擎版本支持和 RDS 代理可用性的信息,请参阅 Amazon RDS 代理

RDS 代理的配额和限制

以下配额和限制适用于 RDS 代理:

  • 每个 Amazon 账户 ID 最多可拥有 20 个代理。如果您的应用程序需要更多代理,您可以通过向 Amazon Support 组织开立票证来请求其他代理。

  • 每个代理最多可拥有 200 个关联的 Secrets Manager 密钥。因此,每个代理可以在任何给定时间连接多达 200 个不同的用户账户。

  • 对于每个代理,您最多可以创建、查看、修改和删除 20 个终端节点。这些终端节点是对自动为每个代理创建的默认终端节点的补充。

  • 在 Aurora 集群中,使用默认代理终端节点的所有连接都由 Aurora 写入器实例处理。要对读取密集型工作负载执行负载均衡,您可以为代理创建只读终端节点。该终端节点会将连接传递到集群的读取器终端节点。这样,您的代理连接就可以利用 Aurora 读取可扩展性。有关更多信息,请参阅“代理终端节点概述”。

    对于复制配置中的 RDS 数据库实例,您只能将代理与写入器数据库实例关联,而不能与只读副本关联。

  • 不能将 RDS Proxy 与 Aurora Serverless 集群一起使用。

  • 现在不支持将 RDS Proxy 与属于 Aurora Global Database 一部分的 Aurora 集群一起使用。

  • 您的 RDS 代理必须与数据库位于同一 Virtual Private Cloud (VPC) 中。代理无法公开访问,但数据库可以。例如,如果在本地主机上进行原型设计,则无法连接到 RDS 代理,除非设置专用网络。这种情况是因为您的本地主机不在代理的 VPC 范围内。

    注意

    对于 Aurora 数据库集群,您可以启用跨 VPC 访问。为此,请为代理创建额外的端点,并为该端点指定其他 VPC、子网和安全组。有关更多信息,请参阅 访问 VPC 中的 Aurora和 RDS 数据库

  • 您不能将 RDS Proxy 用于其租户设置为 dedicated 的 VPC。

  • 如果您将 RDS Proxy 与启用了 IAM 身份验证的 RDS 数据库实例或 Aurora 数据库集群一起使用,请确保通过代理连接的所有用户都通过用户名和密码进行身份验证。有关 RDS Proxy 中的 IAM 支持的详细信息,请参阅 设置 Amazon Identity and Access Management (IAM) 策略

  • 不能将 RDS Proxy 与自定义 DNS 一起使用。

  • RDS Proxy 可用于 MySQL 和 PostgreSQL 引擎系列。

  • 每个代理都可以与单个目标数据库实例或集群相关联。不过,您可以将多个代理与同一个数据库实例或集群关联。

以下 RDS 代理的限制适用于 MySQL:

  • RDS 代理不支持 MySQL sha256_passwordcaching_sha2_password 身份验证插件。这些插件将对用户账户密码实施 SHA-256 哈希处理。

  • 目前,所有代理均在端口 3306 上侦听 MySQL。代理仍使用您在数据库设置中指定的端口连接到您的数据库。

  • 不能将 RDS Proxy 与 EC2 实例中自行管理的 MySQL 数据库一起使用。

  • 您不能将 RDS Proxy 与数据库参数组中的 read_only 参数设置为 1 的 RDS for MySQL 数据库实例一起使用。

  • 代理不支持 MySQL 压缩模式。例如,它们不支持 --compress 命令的 -Cmysql 选项使用的压缩。

  • 某些 SQL 语句和函数可以更改连接状态而不会引起固定。有关最新的固定行为,请参阅 避免固定

以下 RDS 代理限制适用于 PostgreSQL:

  • 目前,所有代理均在端口 5432 上侦听 PostgreSQL。

  • 对于 PostgreSQL,RDS Proxy 目前不支持通过发出 CancelRequest 来取消来自客户端的查询。例如,使用 Ctrl+C 取消交互式 psql 会话中长时间运行的查询时。

  • PostgreSQL 函数 lastval 的结果并不总是准确的。作为解决方法,请将 INSERT 语句与 RETURNING 子句一起使用。

  • 客户端应用程序驱动程序使用 PostgreSQL 扩展查询协议时,RDS Proxy 不会进行多路复用连接。