Aurora Serverless v2 的要求和限制
创建要在其中使用 Aurora Serverless v2 数据库实例的集群时,请注意以下要求和限制:
区域和版本可用性
功能可用性和支持因每个 Aurora 数据库引擎的特定版本以及 AWS 区域 而异。有关 Aurora 和 Aurora Serverless v2 的版本和区域可用性的更多信息,请参阅 支持 Aurora Serverless v2 的区域和 Aurora 数据库引擎。
以下示例显示的 AWS CLI 命令用于确认您可为特定 AWS 区域与 Aurora Serverless v2 配合使用的确切数据库引擎值。Aurora Serverless v2 的 --db-instance-class 参数始终为 db.serverless。--engine 参数可以是 aurora-mysql 或 aurora-postgresql。替换相应的 --region 和 --engine 值,以便确认您可以使用的 --engine-version 值。如果该命令不生成任何输出,则 Aurora Serverless v2 不适用于 AWS 区域和数据库引擎的这一组合。
aws rds describe-orderable-db-instance-options --engine aurora-mysql --db-instance-class db.serverless \ --regionmy_region--query 'OrderableDBInstanceOptions[].[EngineVersion]' --output text aws rds describe-orderable-db-instance-options --engine aurora-postgresql --db-instance-class db.serverless \ --regionmy_region--query 'OrderableDBInstanceOptions[].[EngineVersion]' --output text
使用 Aurora Serverless v2 的集群必须已指定容量范围
Aurora 集群必须有 ServerlessV2ScalingConfiguration 属性,然后才可以添加使用 db.serverless 数据库实例类的数据库实例。此属性指定容量范围。Aurora Serverless v2 容量范围从最少 0 个 Aurora 容量单位(ACU)至最多 256 个 ACU,增量为 0.5 ACU。允许的最小值取决于 Aurora 版本。每个 ACU 提供相当于约 2 GiB 的 RAM 以及相关的 CPU 和网络。有关 Aurora Serverless v2 如何使用容量范围设置的详细信息,请参阅 Aurora Serverless v2 的工作原理。
有关各种数据库引擎版本和平台版本支持的容量范围,请参阅 Aurora Serverless v2 容量。给定集群的可用扩展范围同时受引擎版本和硬件(平台版本)的影响。
在创建集群和关联的 Aurora Serverless v2 数据库实例时,您可以在 AWS 管理控制台 中指定最小和最大 ACU 值。您也可以在 AWS CLI 中指定 --serverless-v2-scaling-configuration 选项。或者您可以使用 Amazon RDS API 指定 ServerlessV2ScalingConfiguration 参数。您可以在创建集群或修改现有集群时指定此属性。有关设置容量范围的步骤,请参阅为集群设置 Aurora Serverless v2 容量范围。有关如何选择最小和最大容量值以及这些设置如何影响某些数据库参数的详细说明,请参阅选择 Aurora 集群的 Aurora Serverless v2 容量范围。
扩展配置不兼容
当您使用较低的最大容量修改您的 Aurora PostgreSQL 集群时,每个实例都将缩减,以与新的配置匹配。如果 Aurora 检测到您的任何实例在缩减时遇到问题,它可能会取消并回滚扩展配置更新。因此,这些实例将纵向扩展回到其先前的配置。如果新的最大容量不足以处理当前工作负载,或者应用于集群或实例的数据库参数组的自定义参数设置得过高,则可能会出现此问题。
回滚开始时,将通过 Amazon RDS 事件通知您,其中包含有关无法应用所需扩展配置的实例的信息。回滚完成后,扩展配置的最大容量将回到其原始更高的值。由于回滚,您可能会观察到集群的所有实例的 Aurora Serverless 数据库容量也可能增加,从而导致成本更高。
例如,您有一个带有单个实例的 Aurora PostgreSQL Aurora Serverless 集群,而扩展配置设置为 minCapacity=0.5、maxCapacity=128 和 secondsUntilAutopause=null。此外,数据库参数 track_activity_query_size 设置为自定义值 40960。如果您随后将集群的扩展配置修改为最大容量为 1 ACU,您可能会注意到,经过几个小时后,修改仍未完成。track_activity_query_size 参数的高值所需的资源超过了新的最大容量所能提供的资源。因此,即使没有工作负载,实例的 ServerlessDatabaseCapacity 也无法缩减以匹配新的最大容量 1 ACU。然后,Aurora Serverless v2 将取消对扩展配置的修改,并将重新应用之前的扩展配置 minCapacity=0.5、maxCapacity=128、secondsUntilAutopause=null。然后,该实例将纵向扩展以匹配之前的扩展配置,从而结束集群的修改。将发布一个 Amazon RDS 事件,通知您检测到不兼容的扩展配置更新,该更新已取消并回滚到之前的配置。
问题和补救措施
- 新的扩展配置与工作负载不兼容
-
新的 Aurora Serverless v2 扩展配置的最大容量过低,无法处理当前的工作负载。
建议:
-
在重新应用较低的最大容量之前,请先减少工作负载。
-
如果无法减少工作负载,请重新评估所需的最大容量。要挑选适当的最大容量,请在取消并回滚扩展配置更新之前,检查您的 Aurora PostgreSQL 集群的最大
ServerlessDatabaseCapacityCloudWatch 指标。然后,将新扩展配置的最大容量设置为至少为观测到的 ServerlessDatabaseCapacity 值。有关选择最大容量的更多指导,请参阅选择 Aurora 集群的 Aurora Serverless v2 容量范围。
-
- 新的扩展配置与自定义数据库参数不兼容
-
您的集群或实例的自定义数据库参数组需要超出新扩展配置的最大容量的额外资源。
可能不兼容的 Aurora PostgreSQL 数据库参数:
-
max_connections
-
track_activity_query_size
-
min_dynamic_shared_memory
建议:
-
要挑选适当的数据库参数值,请检查上面列出的每个参数的默认参数值。如果您的配置值超过默认值,请先将参数降低至默认值,然后再使用这一降低后的最大容量修改扩展配置。
-
如果无法减小数据库参数,请按照上述新的扩展配置与工作负载不兼容中概括的相同步骤来挑选适当的最大容量。
-
在 Aurora Serverless v2 中不支持某些预置功能
Amazon Aurora Serverless v2 目前未提供 Aurora 预置数据库实例的以下功能:
-
数据库活动流(DAS)。
-
Aurora PostgreSQL 的集群缓存管理。
apg_ccm_enabled配置参数不适用于 Aurora Serverless v2 数据库实例。
有一些 Aurora 功能适用于 Aurora Serverless v2,但如果您的容量范围低于特定工作负载下的这些功能的内存需求所需的容量,则可能会导致问题。在这种情况下,数据库可能无法像往常一样运行,或者可能会遇到内存不足错误。有关设置适当容量范围的建议,请参阅选择 Aurora 集群的 Aurora Serverless v2 容量范围。如果您的数据库因容量范围配置错误而遇到内存不足错误,如需故障排除信息,请参阅避免内存不足错误。
不支持 Aurora Auto Scaling。这种类型的扩展会根据 CPU 利用率添加新的读取器来处理额外的读取密集型工作负载。但是,基于 CPU 利用率进行扩展对 Aurora Serverless v2 没有意义。作为替代方法,您可以提前创建 Aurora Serverless v2 读取器数据库实例并将其缩减至低容量。与动态添加新数据库实例相比,这是速度更快且中断更少的扩缩集群读取容量的方法。