

# 使用 Amazon RDS 存储自动扩展功能自动管理容量
<a name="USER_PIOPS.Autoscaling"></a>

如果您的工作负载是不可预测的，则可以为 Amazon RDS 数据库实例启用存储自动扩展。为此，您可以使用 Amazon RDS 控制台、Amazon RDS API 或 AWS CLI。

**注意**  
附加存储卷不支持存储自动扩缩。

例如，您可以将此功能用于用户快速采用的新的移动游戏应用程序。在这种情况下，快速增加的工作负载可能会超过可用的数据库存储。要避免必须手动扩展数据库存储，您可以使用 Amazon RDS 存储自动扩展。

如果启用了存储自动扩展，在 Amazon RDS 检测到可用数据库空间不足时，则会自动扩展存储。在以下因素适用时，Amazon RDS 会为启用了自动扩展的数据库实例启动存储修改：
+ 可用空间小于或等于所分配的存储空间的 10%。
+ 存储空间不足状态至少持续 5 分钟。
+ 自上次存储修改以来，至少已过去 6 小时；或在实例上完成存储优化后，至少已过去 6 小时。

附加存储的增量采用下面的较大值：
+ 10 GiB
+ 10% 的当前分配的存储空间
+ 根据过去一小时的 `FreeStorageSpace` 指标，在接下来的 7 小时内，预计存储空间增长将超过当前分配的存储空间大小。有关指标的更多信息，请参阅[使用 Amazon CloudWatch 进行监控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MonitoringOverview.html#monitoring-cloudwatch)。

最大存储阈值是您为数据库实例自动扩展设置的限制。它具有以下限制：
+ 您必须将最大存储阈值设置为比当前分配的存储空间多至少 10%。我们建议将其设置为至少多 26%，以避免收到有关存储大小接近最大存储阈值的[事件通知](USER_Events.Messages.md#RDS-EVENT-0225)。

  例如，如果您的数据库实例分配了 1000 GiB 的存储空间，则应将最大存储阈值设置为至少 1100 GiB。如果不这样设置，您会收到错误提示消息，例如 Invalid max storage size for *engine\$1name*（engine\$1name 的最大存储空间大小无效）。但是，我们建议您将最大存储阈值设置为至少 1260GiB，以避免出现事件通知。
+ 对于使用预调配 IOPS（io1 或 io2 Block Express）存储的数据库实例，IOPS 与最大存储阈值（以 GiB 为单位）的比率必须在一定范围内。有关更多信息，请参阅 [预置 IOPS SSD 存储](CHAP_Storage.md#USER_PIOPS)。
+ 对于启用了自动扩展的实例，您为其设置的最大存储阈值不得大于数据库引擎和数据库实例类的最大分配存储。

  例如，db.m5.xlarge 上的 SQL Server Standard Edition 为实例默认分配的存储为 20GiB（最小值），分配的最大存储为 16384GiB。自动扩展的默认最大存储阈值为 1000GiB。如果使用此默认值，则实例不会自动扩展到 1000GiB 以上。即使为实例分配的最大存储为 16384GiB，也是如此。

**注意**  
我们建议您根据使用模式和客户需求谨慎选择最大存储阈值。如果使用模式中存在任何偏差，则最大存储阈值可以防止在 Autoscaling 预测一个非常高的阈值时将存储扩展到一个意外的高值。自动扩展数据库实例后，无法减少其分配的存储空间。

**Topics**
+ [存储自动扩缩限制](#autoscaling-limitations)
+ [为新的数据库实例启用存储自动扩展功能](#USER_PIOPS.EnablingAutoscaling)
+ [更改数据库实例的存储自动扩展设置](#USER_PIOPS.ModifyingAutoscaling)
+ [手动纵向缩减或横向缩减数据库实例](#USER_PIOPS.ScalingDown)
+ [为数据库实例禁用存储自动扩展功能](#USER_PIOPS.DisablingAutoscaling)

## 存储自动扩缩限制
<a name="autoscaling-limitations"></a>

以下限制适用于存储自动扩展：
+ 如果存储增量超出最大存储阈值，则不会进行自动扩展。
+ 自动扩展时，RDS 会预测后续自动扩展操作的存储大小。如果预计后续操作将超过最大存储阈值，则 RDS 将自动扩展到最大存储阈值。
+ 自动缩放无法完全防止大量数据加载导致存储已满的情况。这是因为，在六 (6) 小时后或在实例上完成存储优化后 (以较长者为准)，您才能进行进一步的存储修改。

  如果执行大型数据加载，并且自动扩展不能提供足够的空间，则数据库可能会保持存储已满状态几小时。这会损害数据库。
+ 如果您在 Amazon RDS 启动自动扩展操作的同时启动存储扩展操作，则您的存储修改优先。将取消自动扩展操作。
+ 自动扩展无法减少分配的存储。您无法在已分配存储后减少数据库实例的存储量。
+ 自动扩展功能不能与磁性存储一起使用。
+ 自动扩展功能不能与以下可排序存储空间小于 6 TiB 的上一代实例类别一起使用：db.m3.large、db.m3.xlarge 和 db.m3.2xlarge。
+ AWS CloudTrail 不记录自动扩展操作。有关 CloudTrail 的更多信息，请参阅 [监控 AWS CloudTrail 中的 Amazon RDS API 调用](logging-using-cloudtrail.md)。
+ 附加存储卷不支持自动扩缩。有关附加存储卷的更多信息，请参阅[添加存储卷](USER_PIOPS.ModifyingExisting.AdditionalVolumes.md)。

虽然自动扩展可以帮助您动态增加 Amazon RDS 数据库实例上的存储空间，但您仍应将数据库实例的初始存储空间配置为适合典型工作负载的大小。

## 为新的数据库实例启用存储自动扩展功能
<a name="USER_PIOPS.EnablingAutoscaling"></a>

在创建新的 Amazon RDS 数据库实例时，可以选择是否启用存储自动扩展功能。您还可设置 Amazon RDS 可以为数据库实例分配的存储空间的上限。

启用存储自动扩缩不要求重启数据库，也不会导致任何停机。该功能立即生效，而不会中断数据库操作。

**注意**  
在克隆已启用存储自动扩展的 Amazon RDS 数据库实例时，克隆的实例不会自动继承该设置。新的数据库实例具有与原始实例相同的分配的存储空间量。如果克隆的实例继续增加其存储要求，则可以再次为新实例启用存储自动扩展功能。

### 控制台
<a name="USER_PIOPS.EnablingAutoscaling.console"></a>

**为新的数据库实例启用存储自动扩展功能**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1.  在 Amazon RDS 控制台的右上角，选择要在其中创建数据库实例的AWS区域。

1.  在导航窗格中，选择 **Databases (数据库)**。

1.  选择**创建数据库**。在**选择引擎**页面上，选择您的数据库引擎并指定数据库实例信息，如[开始使用 Amazon RDS](CHAP_GettingStarted.md)中所述。

1. 在**存储自动扩展**部分中，设置数据库实例的**最大存储阈值**值。

1. 指定其余的数据库实例信息，如[开始使用 Amazon RDS](CHAP_GettingStarted.md)中所述。

### AWS CLI
<a name="USER_PIOPS.EnablingAutoscaling.cli"></a>

要为新的数据库实例启用存储自动扩展功能，请使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)。设置以下参数：
+  `--max-allocated-storage` – 打开存储自动扩展功能，并设置存储大小的上限（以 GiB 为单位）。

 要验证 Amazon RDS 存储自动扩展功能是否适用于数据库实例，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-valid-db-instance-modifications.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-valid-db-instance-modifications.html) 命令。要在创建实例前基于实例类进行检查，请使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-orderable-db-instance-options.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-orderable-db-instance-options.html) 命令。检查返回值中的以下字段：
+  `SupportsStorageAutoscaling` – 指示数据库实例或实例类是否支持存储自动扩展功能。

有关存储的更多信息，请参阅[Amazon RDS 数据库实例存储](CHAP_Storage.md)。

### RDS API
<a name="USER_PIOPS.EnablingAutoscaling.api"></a>

要为新的数据库实例启用存储自动扩展，请使用 Amazon RDS API 操作 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)。设置以下参数：
+  `MaxAllocatedStorage` – 打开 Amazon RDS 存储自动扩展功能，并设置存储大小的上限（以 GiB 为单位）。

 要验证 Amazon RDS 存储自动扩展功能是否适用于数据库实例，请对现有实例使用 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeValidDbInstanceModifications.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeValidDbInstanceModifications.html) 操作或在创建实例前使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOrderableDBInstanceOptions.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOrderableDBInstanceOptions.html) 操作。检查返回值中的以下字段：
+  `SupportsStorageAutoscaling` – 指示数据库实例是否支持存储自动扩展功能。

有关存储的更多信息，请参阅[Amazon RDS 数据库实例存储](CHAP_Storage.md)。

## 更改数据库实例的存储自动扩展设置
<a name="USER_PIOPS.ModifyingAutoscaling"></a>

您可以为现有 Amazon RDS 数据库实例打开存储自动扩展功能。您还可以更改 Amazon RDS 为数据库实例分配的存储空间的上限。

更改存储自动扩缩设置不要求重启数据库，也不会导致任何停机。更改立即生效，而不会中断数据库操作。

### 控制台
<a name="USER_PIOPS.ModifyingAutoscaling.console"></a>

**更改数据库实例的存储自动扩展设置**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要修改的数据库实例，然后选择**修改**。将显示**修改数据库实例**页面。

1.  在 **Autoscaling (自动扩展)** 部分中，更改存储限制。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。

1.  当所有更改都达到您的要求时，选择 **Continue (继续)** 并查看修改。

1.  在确认页面上，检查您的更改。如果更改正确无误，请选择**修改数据库实例**以保存更改。如果更改错误，请选择 **Back (返回)** 以编辑您的更改，或者选择 **Cancel (取消)** 以取消更改。

   立即更改存储自动扩展限制。此设置忽略**立即应用**设置。

### AWS CLI
<a name="USER_PIOPS.ModifyingAutoscaling.cli"></a>

要更改数据库实例的存储自动扩展设置，请使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)。设置以下参数：
+  `--max-allocated-storage` – 设置存储大小的上限（以 GiB 为单位）。如果该值大于 `--allocated-storage` 参数，则打开存储自动扩展功能。如果该值与 `--allocated-storage` 参数相等，则关闭存储自动扩展功能。

 要验证 Amazon RDS 存储自动扩展功能是否适用于数据库实例，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-valid-db-instance-modifications.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-valid-db-instance-modifications.html) 命令。要在创建实例前基于实例类进行检查，请使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-orderable-db-instance-options.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-orderable-db-instance-options.html) 命令。检查返回值中的以下字段：
+  `SupportsStorageAutoscaling` – 指示数据库实例是否支持存储自动扩展功能。

有关存储的更多信息，请参阅[Amazon RDS 数据库实例存储](CHAP_Storage.md)。

### RDS API
<a name="USER_PIOPS.ModifyingAutoscaling.api"></a>

 要更改数据库实例的存储自动扩展设置，请使用 Amazon RDS API 操作 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)。设置以下参数：
+  `MaxAllocatedStorage` – 设置存储大小的上限（以 GiB 为单位）。

 要验证 Amazon RDS 存储自动扩展功能是否适用于数据库实例，请对现有实例使用 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeValidDbInstanceModifications.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeValidDbInstanceModifications.html) 操作或在创建实例前使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOrderableDBInstanceOptions.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeOrderableDBInstanceOptions.html) 操作。检查返回值中的以下字段：
+  `SupportsStorageAutoscaling` – 指示数据库实例是否支持存储自动扩展功能。

有关存储的更多信息，请参阅[Amazon RDS 数据库实例存储](CHAP_Storage.md)。

## 手动纵向缩减或横向缩减数据库实例
<a name="USER_PIOPS.ScalingDown"></a>

Amazon RDS 提供存储自动扩展功能，用来满足不断增长的需求。但是，在纵向缩减和横向缩减方面存在限制：
+ **RDS 存储**：虽然 RDS 支持在需求增加时自动纵向扩展存储，但它不会自动缩减。
+ **只读副本**：RDS 不支持自动横向扩展（添加）或横向缩减（删除）只读副本。您必须根据您的负载要求手动添加或移除只读副本。

要纵向缩减 RDS 资源，请执行以下手动操作：
+ 对于存储，您无法使用 `modify-db-instance` 命令手动减少为数据库实例分配的存储空间。而是选择以下方法之一：
  + 如果您的数据库引擎支持蓝绿部署，请使用蓝绿部署。创建存储容量较小的绿色数据库，然后将绿色数据库提升为蓝色数据库。有关更多信息，请参阅 [修改存储和性能设置](blue-green-deployments-creating.md#blue-green-deployments-resize)。
  + 使用分配的较低存储空间创建新的数据库实例，手动将数据从当前数据库迁移到新创建的数据库实例，然后切换数据库端点。
+ 对于只读副本，请通过 RDS 控制台或 AWS CLI 手动删除任何未使用的副本。

## 为数据库实例禁用存储自动扩展功能
<a name="USER_PIOPS.DisablingAutoscaling"></a>

 如果您不再需要 Amazon RDS 自动增加 Amazon RDS 数据库实例的存储空间，则可以关闭存储自动扩展功能。执行此操作后，您仍可以手动增加数据库实例的存储空间量。

### 控制台
<a name="USER_PIOPS.DisablingAutoscaling.console"></a>

**为数据库实例打开存储自动扩展功能**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要修改的数据库实例，然后选择**修改**。将显示**修改数据库实例**页面。

1.  清除**存储自动扩展**部分中的**启用存储自动扩展**复选框。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。

1.  当所有更改都达到您的要求时，选择 **Continue (继续)** 并查看修改。

1. 在确认页面上，检查您的更改。如果更改正确无误，请选择**修改数据库实例**以保存更改。如果更改错误，请选择 **Back (返回)** 以编辑您的更改，或者选择 **Cancel (取消)** 以取消更改。

立即更改存储自动扩展限制。此设置忽略**立即应用**设置。

### AWS CLI
<a name="USER_PIOPS.DisablingAutoscaling.cli"></a>

 要为数据库实例关闭存储自动扩展功能，请使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 和以下参数：
+  `--max-allocated-storage` – 指定一个与 `--allocated-storage` 设置相等的值可进一步防止指定数据库实例的 Amazon RDS 存储自动扩展。

有关存储的更多信息，请参阅[Amazon RDS 数据库实例存储](CHAP_Storage.md)。

### RDS API
<a name="USER_PIOPS.DisablingAutoscaling.api"></a>

 要为数据库实例关闭存储自动扩展，请使用 Amazon RDS API 操作 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)。设置以下参数：
+  `MaxAllocatedStorage` – 指定一个与 `AllocatedStorage` 设置相等的值可进一步防止指定数据库实例的 Amazon RDS 存储自动扩展。

有关存储的更多信息，请参阅[Amazon RDS 数据库实例存储](CHAP_Storage.md)。