Amazon Aurora
Aurora 用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Aurora Serverless 的工作方式

在没有 Aurora Serverless 的情况下使用 Amazon Aurora 时,您可以选择数据库实例类大小并创建 Aurora 副本以提高读取吞吐量。如果您的工作负载发生变化,您可以修改数据库实例类大小并更改 Aurora 副本的数量。此模型在数据库工作负载是可预测时运行良好,因为您可以根据预期工作负载手动调整容量。

不过,在某些环境中,工作负载可能是间歇性和不可预测的。可能存在可能仅持续几分钟或几小时的大量工作负载的时间段以及少量活动或甚至无活动的长时间段。例如,一些进行间歇性销售活动的零售网站、根据需要生成报告的报告数据库、开发和测试环境以及具有不确定要求的新应用程序。在这些情况及很多其他情况下,可能很难在正确的时间配置正确的容量。这还可能会在您为未使用的容量付费时产生更高的成本。

对于 Aurora Serverless,您可以创建数据库终端节点,而无需指定数据库实例类大小。可以设置最小容量和最大容量。对于 Aurora Serverless,数据库终端节点可以连接到代理队列,后者将工作负载路由到一组自动扩展的资源。借助代理队列,连接是持续存在的,这是因为 Aurora Serverless 自动根据最小和最大容量规范扩展资源。数据库客户端应用程序无需更改为使用代理队列。Aurora Serverless 会自动管理连接。扩展的速度非常快,因为它使用随时准备好为请求提供服务的“热”资源池。存储和处理是分开的,因此处理容量可以缩减至零(此时,您只需支付存储费用)。

Aurora Serverless 引入了适用于 Aurora 数据库集群的新 serverless 数据库引擎模式。非 Serverless 数据库集群使用 provisioned 数据库引擎模式。

Aurora Serverless 架构

下图提供了 Aurora Serverless 架构的概览。


                  Aurora Serverless 架构

您可指定 Aurora 容量单位 (ACU),而不是配置和管理数据库服务器。每个 ACU 是处理和内存容量的组合。数据库存储从 10 GiB 自动扩展到 64 TiB,标准 Aurora 数据库集群中的存储也是如此。

可以指定最小和最大 ACU。最小 Aurora 容量单位 是数据库集群可缩减到的最低 ACU。最大 Aurora 容量单位 是数据库集群可扩展到的最高 ACU。根据您的设置,Aurora Serverless 自动创建 CPU 使用率、连接和可用内存阈值的扩展规则。

Aurora Serverless 管理 AWS 区域中的热资源池以最大程度地减少扩展时间。在 Aurora Serverless 将新资源添加到 Aurora 数据库集群时,它使用代理队列将活动客户端连接切换到新资源。在任何给定时间,您都只需为您的 Aurora 数据库集群中正在主动使用的 ACU 付费。

对 Aurora Serverless 进行 Auto Scaling

分配给您的 Aurora Serverless 数据库集群的容量根据客户端应用程序生成的负载(CPU 使用率和连接数)进行扩展和缩减。它还在 5 分钟内没有任何连接时扩展到零容量。

在 CPU、连接或内存中存在容量限制时,Aurora Serverless 会纵向扩展。在检测到通过纵向扩展可解决的性能问题时,它也会纵向扩展。

纵向扩展后,需冷却 15 分钟才能进行纵向缩减。纵向缩减后,需冷却 310 秒才能再次进行纵向缩减。

注意

纵向扩展不需要冷却时间。Aurora Serverless 可在必要时随时纵向扩展,包括在纵向扩展或纵向缩减后立即进行纵向扩展。

扩展点 是数据库可安装启动扩展操作的时间点。在以下条件下,Aurora Serverless 可能无法找到扩展点:

  • 正在执行长时间运行的查询或事务

  • 正在使用临时表或表锁定

在这些情况下,Aurora Serverless 会继续尝试查找扩展点,以便可以开始执行扩展操作。只要它确定应该缩放数据库集群,就会执行此操作。

您可以在 AWS 管理控制台中详细查看数据库集群的扩展事件。您还可以使用 Amazon CloudWatch 的 ServerlessDatabaseCapacity 指标监控分配给数据库集群的当前容量。

自动暂停和恢复 Aurora Serverless

您可以选择在无任何活动的指定时间段内暂停 Aurora Serverless 数据库集群。在暂停数据库集群之前指定无任何活动的时间长度。默认值为 5 分钟。还可以禁用暂停数据库集群。

暂停数据库集群后,不会发生任何计算或内存活动,而且您只需支付存储费用。如果暂停 Aurora Serverless 数据库集群时请求数据库连接,数据库集群将自动恢复并处理连接请求。

注意

如果暂停数据库集群超过 7 天,则可能会使用快照对数据库集群进行备份。在这种情况下,数据库集群会在有请求连接到它时进行还原。

容量更改超时操作

您可以更改 Aurora Serverless 数据库集群的容量。在更改此容量时,Aurora Serverless 会因此更改尝试查找扩展点。如果 Aurora Serverless 找不到扩展点,则会超时。您可以指定在容量更改超时的情况下采取以下操作之一:

  • 强制执行容量更改 – 尽快将容量设置为指定值。

  • 回滚容量更改 – 取消容量更改。

重要

如果强制执行容量更改,则阻止 Aurora Serverless 查找扩展点的连接可能会中断。

有关更改容量的信息,请参阅修改 Aurora Serverless 数据库集群

Aurora Serverless 和参数组

与预配置数据库集群相比,Serverless 数据库集群的参数组的使用方式有所不同。具体而言,Aurora Serverless 集群中的数据库实例只有关联的数据库集群参数组,而没有关联的数据库参数组。Serverless 集群依赖于数据库集群参数组是因为数据库实例不能与 Aurora Serverless 集群永久关联。Aurora 会根据需要自动添加和移除数据库实例。

要自定义 Aurora Serverless 集群的配置设置,可以定义您自己的数据库集群参数组,然后修改其中包含的参数。您可以修改集群级参数和应用于其他类型 Aurora 集群的实例级参数。但是,在修改与 Aurora Serverless 数据库集群关联的数据库集群参数组时,应用的修改操作与其他数据库集群参数组的相关操作有所不同。

在为 Aurora Serverless 数据库集群保存数据库集群参数组更改内容后,系统会立即应用更改。因此,Aurora Serverless 会忽略以下设置:

Aurora Serverless 会忽略数据库集群参数组状态 pending-reboot。Aurora 会在不停机的情况下立即应用参数更改。

为将更改应用于数据库集群参数组,Aurora Serverless 将在数据库集群处于活动状态时为当前容量启动无缝扩展。如果数据库集群处于暂停状态,则会恢复此集群。

使用 Aurora Serverless 数据库集群,您可以仅修改以下参数:对于其他所有配置参数,Aurora Serverless 集群使用默认值。

  • character_set_server

  • collation_server

  • general_log。此设置以前仅用于数据库实例参数组。

  • innodb_file_format。此设置以前仅用于数据库实例参数组。

  • innodb_file_per_table

  • innodb_large_prefix。此设置以前仅用于数据库实例参数组。

  • innodb_lock_wait_timeout。此设置以前仅用于数据库实例参数组。

  • innodb_monitor_disable。此设置以前仅用于数据库实例参数组。

  • innodb_monitor_enable。此设置以前仅用于数据库实例参数组。

  • innodb_monitor_reset。此设置以前仅用于数据库实例参数组。

  • innodb_monitor_reset_all。此设置以前仅用于数据库实例参数组。

  • innodb_print_all_deadlocks。此设置以前仅用于数据库实例参数组。

  • lc_time_names

  • log_output。此设置以前仅用于数据库实例参数组。此设置的默认值为 FILE。您不能更改此值。

  • log_queries_not_using_indexes。此设置以前仅用于数据库实例参数组。

  • log_warnings。此设置以前仅用于数据库实例参数组。

  • long_query_time。此设置以前仅用于数据库实例参数组。

  • lower_case_table_names

  • net_read_timeout。此设置以前仅用于数据库实例参数组。

  • net_retry_count。此设置以前仅用于数据库实例参数组。

  • net_write_timeout。此设置以前仅用于数据库实例参数组。

  • server_audit_logging

  • server_audit_events

  • server_audit_excl_users

  • server_audit_incl_users

  • slow_query_log。此设置以前仅用于数据库实例参数组。

  • sql_mode。此设置以前仅用于数据库实例参数组。

  • time_zone

  • tx_isolation。此设置以前仅用于数据库实例参数组。

要查看集群级参数支持的引擎模式,请运行 describe-engine-default-cluster-parameters 命令或 RDS API 操作 DescribeEngineDefaultClusterParameters。例如,以下 Linux 命令从 aurora5.6 默认数据库集群参数组提取您为 Serverless 集群设置的参数的名称。

aws rds describe-engine-default-cluster-parameters \ --db-parameter-group-family aurora5.6 \ --query 'EngineDefaults.Parameters[*].{ParameterName:ParameterName, \ SupportedEngineModes:SupportedEngineModes} \ | [?contains(SupportedEngineModes, `serverless`) == `true`] \ | [*].{param:ParameterName}' \ --output text

例如,以下 Linux 命令从您创建的数据库集群参数组提取您为 Serverless 集群设置的参数的名称。

aws rds describe-db-cluster-parameters \ --db-cluster-parameter-group-name my_cluster_param_group_name \ --query 'Parameters[*].{ParameterName:ParameterName, SupportedEngineModes:SupportedEngineModes} | [?contains(SupportedEngineModes, `serverless`) == `true`] | [*].{param:ParameterName}' \ --output text

有关参数组的更多信息,请参阅 使用数据库参数组和数据库集群参数组

Aurora Serverless 和故障转移

目前,Aurora Serverless 数据库集群是在单个可用区 (AZ) 中创建的。如果该可用区变得不可用,Aurora 将在不同的可用区中重新创建该集群。

为快速故障转移配置的 Aurora 预配置集群将在大约 60 秒内恢复。虽然 Aurora Serverless 不支持快速故障转移,但它支持自动多可用区故障转移。Aurora Serverless 故障转移需要的时间比 Aurora 预配置集群长。当前未定义 Aurora Serverless 故障转移时间,因为它取决于给定 AWS 区域中的其他可用区的需求和容量可用性。

Aurora Serverless 和快照

Aurora Serverless 集群的集群卷始终是加密的。您可以选择加密密钥,但无法禁用加密。要复制或共享 Aurora Serverless 集群的快照,可使用您自己的 KMS 密钥对快照加密。