使用 Amazon Aurora Serverless v1 - Amazon Aurora

使用 Amazon Aurora Serverless v1

Amazon Aurora Serverless v1(Amazon Aurora 无服务器版本 1)是适用于 Amazon Aurora 的按需自动扩展配置。Aurora Serverless v1数据库集群是根据应用程序需求向上和向下扩展计算容量的数据库集群。这与您手动管理容量的 Aurora 预置数据库集群形成对比。Aurora Serverless v1 为不频繁、间歇性或不可预测的工作负载提供了一种相对简单、经济高效的选择。它是经济高效的,因为它会自动启动、扩展计算容量以符合应用程序的使用情况并在未使用时关闭。

要了解有关定价的更多信息,请参阅 Amazon Aurora pricing页面上 MySQL-Compatible Edition(MySQL 兼容版)或 PostgreSQL-Compatible Edition(PostgreSQL 兼容版)下的 Serverless Pricing(无服务器定价)。

Aurora Serverless v1 集群具有预置数据库集群所使用的相同类型的高容量、分布式和高可用存储卷。

对于 Aurora Serverless v2 集群,您可以选择是否加密集群卷。

对于 Aurora Serverless v1 集群,集群卷始终是加密的。您可以选择加密密钥,但不能禁用加密。这意味着您可以像在加密快照上那样在 Aurora Serverless v1 上执行相同的操作。有关更多信息,请参阅 Aurora Serverless v1 和快照

重要

Aurora 有两代无服务器技术,Aurora Serverless v2 和 Aurora Serverless v1。如果您的应用程序可以在 MySQL 8.0 或 PostgreSQL 13 上运行,我们建议您使用 Aurora Serverless v2。Aurora Serverless v2 以更快速、更精细的方式扩缩。Aurora Serverless v2 还与其他 Aurora 功能(例如读取器数据库实例)具有更高的兼容性。因此,如果您已经熟悉 Aurora,则不需要了解很多新的程序或限制,即可像使用 Aurora Serverless v1 一样使用 Aurora Serverless v2。

您可以在使用 Aurora Serverless v2 中了解 Aurora Serverless v2。

Aurora Serverless v1 的区域和版本可用性

功能可用性和支持因每个 Aurora 数据库引擎的特定版本以及 AWS 区域而异。有关 Aurora 和 Aurora Serverless v1 的版本和区域可用性的更多信息,请参阅 支持 Aurora Serverless v1 的区域和 Aurora 数据库引擎

Aurora Serverless v1 的优点

Aurora Serverless v1 具备下述优点:

  • 比预置更简单 - Aurora Serverless v1 消除了管理数据库实例和容量的大量复杂性。

  • 可扩展 - Aurora Serverless v1 可根据需要无缝地扩展计算和内存容量,而无需中断客户端连接。

  • 经济高效 – 在使用 Aurora Serverless v1 时,您只需为所使用的数据库资源按秒付费。

  • 高度可用存储 – Aurora Serverless v1 使用具有容错能力的同一分布式存储系统,该系统具有作为 Aurora 的六向复制以防数据丢失。

Aurora Serverless v1 的使用案例

Aurora Serverless v1 专为以下使用案例而设计:

  • 不常使用的应用程序 – 您有每天或每周仅使用数次几分钟的应用程序,如低容量博客网站。有了 Aurora Serverless v1,您只需为所使用的数据库资源按秒付费。

  • 新应用程序 – 您正在部署新应用程序,但不确定所需的实例大小。使用 Aurora Serverless v1,您可以创建数据库终端节点并让数据库自动扩展到应用程序的容量需求。

  • 可变工作负载 – 您正在运行一个使用率比较低的应用程序,高峰时间为每天数次 30 分钟到几个小时,或每年几次。示例包括人力资源、预算和运营报告应用程序。有了 Aurora Serverless v1,您不再需要为峰值或平均容量进行预置。

  • 不可预测的工作负载 – 您每天运行的工作负载会突然出现无法预测的活动增加。例如,在开始下雨时显示活动涌现的流量网站。有了 Aurora Serverless v1,您的数据库可自动扩展容量以满足应用程序的峰值负载需求,然后在活动涌现结束时再收缩。

  • 开发和测试数据库 – 您的开发人员在工作时间使用数据库,但在夜间或周末不需要它们。有了 Aurora Serverless v1,您的数据库会在未使用时自动关闭。

  • 多租户应用程序 – 有了 Aurora Serverless v1,您无需为队列中的每个应用程序单独地管理数据库容量。Aurora Serverless v1 会为您管理各个数据库容量。

Aurora Serverless v1 的限制

以下限制适用于 Aurora Serverless v1:

  • Aurora Serverless v1 不支持以下功能:

    • Aurora 全局数据库

    • Aurora 副本

    • AWS Identity and Access Management (IAM) 数据库身份验证

    • 正在 Aurora 中回溯

    • 数据库活动流

    • Kerberos 身份验证

    • Performance Insights

    • RDS 代理

    • 在 AWS Management Console中查看日志

  • 如果保持打开状态超过一天,与 Aurora Serverless v1 数据库集群的连接将自动关闭。

  • 所有 Aurora Serverless v1 数据库集群都有以下限制:

    • 您无法将 Aurora Serverless v1 快照导出到 Amazon S3 存储桶。

    • AWS Database Migration Service 数据库集群无法使用 Aurora Serverless v1 和更改数据捕获 (CDC)。只有预置的 Aurora 数据库集群支持将 CDC 和 AWS DMS 作为源。

    • 您无法将数据保存到 Amazon S3 中的文本文件,也无法从 S3 中将文本文件数据加载到 Aurora Serverless v1。

    • 您无法将 IAM 角色附加到 Aurora Serverless v1 数据库集群。但是,您可以通过将 Aurora Serverless v1 扩展与 aws_s3 函数和 aws_s3.table_import_from_s3 参数一起使用,将数据从 Amazon S3 加载到 credentials。有关更多信息,请参阅 将 Amazon S3 中的数据导入到 Aurora PostgreSQL 数据库集群

    • 使用查询编辑器时,会为数据库凭证创建一个 Secrets Manager 密钥来访问数据库。如果您从查询编辑器中删除凭证,则也会从 Secrets Manager 中删除关联的密钥。删除密钥后将无法恢复。

  • 运行 Aurora Serverless v1 的基于 Aurora MySQL 的数据库集群不支持以下内容:

    • 从 Aurora MySQL 数据库集群中调用 AWS Lambda 函数。但是,AWS Lambda 函数可以调用 Aurora Serverless v1 数据库集群。

    • 从非 Aurora MySQL 或 RDS for MySQL 数据库实例还原快照。

    • 使用基于二进制日志 (binlog) 的复制来复制数据。无论您基于 Aurora MySQL 的数据库集群 Aurora Serverless v1 是复制的源还是目标,都存在此限制。要将数据从 Aurora 之外的 MySQL 数据库实例(例如在 Amazon EC2 上运行的实例)复制到 Aurora Serverless v1 数据库集群,建议您考虑使用 AWS Database Migration Service。有关更多信息,请参阅 AWS Database Migration Service 用户指南

    • 创建具有基于主机的访问权限的用户('username'@'IP_address')。这是因为 Aurora Serverless v1 在客户端和数据库主机之间使用路由器队列进行无缝扩展。Aurora Serverless 数据库集群看到的 IP 地址是路由器主机(而不是您的客户端)的 IP 地址。有关更多信息,请参阅 Aurora Serverless v1 架构

      而是使用通配符('username'@'%')。

  • 运行 Aurora Serverless v1 的基于 Aurora PostgreSQL 的数据库集群具有以下限制:

    • Aurora PostgreSQL 查询计划管理(apg_plan_management 扩展)不受支持。

    • 不支持 Amazon RDS PostgreSQL 和 Aurora PostgreSQL 中可用的逻辑复制功能。

    • 不支持出站通信(例如 Amazon RDS for PostgreSQL 扩展启用的出站通信)。例如,您无法通过 postgres_fdw/dblink 扩展访问外部数据。有关 RDS PostgreSQL 扩展的更多信息,请参阅 RDS 用户指南中的 Amazon RDS 上的 PostgreSQL

    • 目前,不推荐使用某些 SQL 查询和命令。这些包括会话级别的咨询锁、临时关系、异步通知 (LISTEN) 和带有保留 (DECLARE name ... CURSOR WITH HOLD FOR query) 的游标。此外,NOTIFY 命令会阻止缩放,因此不推荐使用。

      有关更多信息,请参阅 Aurora Serverless v1 的自动扩展

  • 您无法为 Aurora Serverless v1 数据库集群设置首选的自动备份时段。

  • 您可以为 Aurora Serverless v1 数据库集群设置维护时段。有关更多信息,请参阅 调整首选数据库集群维护时段

Aurora Serverless v1 的配置要求

创建 Aurora Serverless v1 数据库集群时,请注意以下要求:

  • 为每个数据库引擎使用以下特定端口号:

    • Aurora MySQL – 3306

    • Aurora PostgreSQL – 5432

  • 在 Virtual Private Cloud (VPC) 中基于 Amazon VPC 服务创建 Aurora Serverless v1 数据库集群。在 VPC 中创建 Aurora Serverless v1 数据库集群时,您将使用分配给 VPC 的五十 (50) 个接口和网关负载均衡器终端节点中的两 (2) 个。这些终端节点是自动为您创建的。要增加配额,您可以联系 AWS Support。有关更多信息,请参阅 Amazon VPC 配额

  • 您无法为 Aurora Serverless v1 数据库集群提供公有 IP 地址。您只能从 VPC 内部访问 Aurora Serverless v1 数据库集群。

  • 在不同的可用区中为用于 Aurora Serverless v1 数据库集群的数据库子网组创建子网。换句话说,同一可用区内不能有多于一个的子网。

  • 对 Aurora Serverless v1 数据库集群使用的子网组的更改不会应用于集群。

  • 您可以从 Aurora Serverless v1 中访问 AWS Lambda 数据库集群。为此,您必须将 Lambda 函数配置为与 Aurora Serverless v1 数据库集群在相同的 VPC 中运行。有关使用 AWS Lambda 的更多信息,请参阅 AWS Lambda 开发人员指南中的配置 Lambda 函数以访问 Amazon VPC 中的资源

将 TLS/SSL 与 Aurora Serverless v1 结合使用

默认情况下,Aurora Serverless v1 使用传输层安全性/安全套接字层 (TLS/SSL) 协议来加密客户端和 Aurora Serverless v1 数据库集群之间的通信。它支持 TLS/SSL 1.0、1.1 和 1.2 版本。您无需将 Aurora Serverless v1 数据库集群配置为使用 TLS/SSL。

但是,以下限制适用:

  • 中国(北京)AWS 区域目前不提供针对 Aurora Serverless v1 数据库集群的 TLS/SSL 支持。

  • 为基于 Aurora MySQL 的 Aurora Serverless v1 数据库集群创建数据库用户时,请勿使用 REQUIRE 子句获取 SSL 权限。这样做会阻止用户连接到 Aurora 数据库实例。

  • 对于 MySQL Client 和 PostgreSQL 客户端实用程序,在客户端和 Aurora Serverless v1 之间使用 TLS/SSL 时,您可能在其他环境中使用的会话变量不起作用。

  • 对于 MySQL 客户端,当使用 TLS/SSL 的 VERIFY_IDENTITY 模式进行连接时,您目前需要使用兼容 MySQL 8.0 的 mysql 命令。有关更多信息,请参阅连接到运行 MySQL 数据库引擎的数据库实例

根据用于连接到 Aurora Serverless v1 数据库集群的客户端,您可能无需指定 TLS/SSL 即可获取加密连接。例如,要使用 PostgreSQL 客户端连接到运行 Aurora PostgreSQL 兼容版的 Aurora Serverless v1 数据库集群,请像平常一样进行连接。

psql -h endpoint -U user

输入密码后,PostgreSQL 客户端会显示您看到连接详细信息,包括 TLS/SSL 版本和密码。

psql (12.5 (Ubuntu 12.5-0ubuntu0.20.04.1), server 10.12) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help.
重要

默认情况下,Aurora Serverless v1 使用传输层安全性/安全套接字层(TLS/SSL)协议来加密连接,除非客户端应用程序禁用了 SSL/TLS。TLS/SSL 连接在路由器队列中终止。路由器队列与 Aurora Serverless v1 数据库集群之间的通信发生在服务的内部网络边界内。

您可以检查客户端连接的状态,以检查与 Aurora Serverless v1 的连接是否为 TLS/SSL 加密。对于客户端应用程序和 Aurora Serverless v1 之间的通信,PostgreSQL pg_stat_sslpg_stat_activity 表及其 ssl_is_used 函数不显示 TLS/SSL 状态。同样,TLS/SSL 状态也不能通过 MySQL status 语句派生。

force_ssl for PostgreSQL 和 require_secure_transport for MySQL 的 Aurora 集群参数以前在 Aurora Serverless v1 中不支持。这些参数现在可用于 Aurora Serverless v1。有关 Aurora Serverless v1 支持的参数的完整列表,请调用 DescribeEngineDefaultClusterParameters API 操作。有关参数组和 Aurora Serverless v1 的更多信息,请参阅 Aurora Serverless v1 的参数组

要使用 MySQL 客户端连接到运行 Aurora MySQL 兼容版的 Aurora Serverless v1 数据库集群,请在请求中指定 TLS/SSL。以下示例包括从 Amazon Trust Services 下载的 Amazon root CA 1 信任存储,这是成功连接所必需的。

mysql -h endpoint -P 3306 -u user -p --ssl-ca=amazon-root-CA-1.pem --ssl-mode=REQUIRED

出现提示时请输入密码。MySQL 显示器将很快打开。您可以使用 status 命令确认会话是否已加密。

mysql> status -------------- mysql Ver 14.14 Distrib 5.5.62, for Linux (x86_64) using readline 5.1 Connection id: 19 Current database: Current user: ***@******* SSL: Cipher in use is ECDHE-RSA-AES256-SHA ...

要了解有关使用 MySQL 客户端连接到 Aurora MySQL 数据库的更多信息,请参阅连接到运行 MySQL 数据库引擎的数据库实例

Aurora Serverless v1 支持 MySQL 客户端 (mysql)和 PostgreSQL 客户端(psql)可用的所有 TLS/SSL 模式,包括下表中列出的模式。

TLS/SSL 模式的说明 mysql psql

不使用 TLS/SSL 进行连接。

DISABLED

disable

首先尝试使用 TLS/SSL 进行连接,但如有必要,请回退到非 SSL。

PREFERRED

首选(默认)

使用 TLS/SSL 强制执行。

REQUIRED

require

强制执行 TLS/SSL 并验证 CA。

VERIFY_CA

verify-ca

强制执行 TLS/SSL,验证 CA 并验证 CA 主机名。

VERIFY_IDENTITY

verify-full

Aurora Serverless v1 使用通配符证书。如果您在使用 TLS/SSL 时指定“验证 CA”或“验证 CA 和 CA 主机名”选项,请首先从 Amazon Trust Services 下载 Amazon root CA 1 信任存储。完成此操作后,您可以在客户端命令中识别此 PEM 格式的文件。要使用 PostgreSQL 客户端执行此操作:

对于 Linux、macOS 或 Unix:

psql 'host=endpoint user=user sslmode=require sslrootcert=amazon-root-CA-1.pem dbname=db-name'

要了解有关通过 Postgres 客户端使用 Aurora PostgreSQL 数据库的更多信息,请参阅连接到运行 PostgreSQL 数据库引擎的数据库实例

有关更多连接到 Aurora 数据库集群的一般信息,请参阅 连接到 Amazon Aurora 数据库集群

支持的用于 Aurora Serverless v1 数据库集群连接的密码套件

通过使用可配置的密码套件,您可以更好地控制数据库连接的安全性。您可以指定想要允许保护客户端与数据库的 TLS/SSL 连接的密码套件列表。使用可配置的密码套件,您现在可以控制数据库服务器接受的连接加密。这样做可以防止使用不安全或不再使用的密码。

基于 Aurora MySQL 的 Aurora Serverless v1 数据库集群支持与 Aurora MySQL 预配的数据库集群相同的密码套件。有关这些密码套件的信息,请参阅 配置密码套件以连接到 Aurora MySQL 数据库集群

基于 Aurora PostgreSQL 的 Aurora Serverless v1 数据库集群不支持密码套件。