

# 使用 Amazon RDS 数据库实例的存储
<a name="USER_PIOPS.StorageTypes"></a>

要指定在 Amazon RDS 中存储数据的方式，请在创建或修改数据库实例时选择存储类型并提供存储大小。以后，您可以通过修改数据库实例来增加存储量或更改存储类型。有关将哪些个存储类型用于工作负载的更多信息，请参阅[Amazon RDS 存储类型](CHAP_Storage.md#Concepts.Storage)。

如果您的实例运行 RDS for Oracle 或 RDS for SQL Server，则您最多可以向每个数据库实例添加三个附加卷。您可以选择 gp3 或 io2 作为卷类型，从而可以根据自己的数据访问模式优化成本和性能。使用附加卷的数据库实例的最大存储容量为 256 TiB。

**Topics**
+ [

# 查看数据库实例的存储卷详细信息
](rds-storage-viewing.md)
+ [

# 增加数据库实例存储容量
](USER_PIOPS.ModifyingExisting.md)
+ [

# 移除附加存储卷
](USER_PIOPS.RemovingAdditionalVolumes.md)
+ [

# 使用 Amazon RDS 存储自动扩展功能自动管理容量
](USER_PIOPS.Autoscaling.md)
+ [

# 升级数据库实例的存储文件系统
](USER_PIOPS.UpgradeFileSystem.md)
+ [

# 修改预调配 IOPS SSD 存储的设置
](User_PIOPS.Increase.md)
+ [

# I/O 密集型存储修改
](USER_PIOPS.IOIntensive.md)
+ [

# 修改通用型 SSD（gp3）存储的设置
](USER_PIOPS.gp3.md)
+ [

# 使用专用日志卷（DLV）
](USER_PIOPS.dlv.md)

# 查看数据库实例的存储卷详细信息
<a name="rds-storage-viewing"></a>

您可以通过 AWS 管理控制台或 AWS CLI 查看存储卷配置。这包括有关主存储卷和连接到数据库实例的任何附加存储卷的详细信息。

# 控制台
<a name="rds-storage-viewing.console"></a>

从控制台查看存储卷配置：

1. 在 AWS 管理控制台https://console.aws.amazon.com/rds/[ 登录](https://console.aws.amazon.com/rds/)。

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

1. 选择您的数据库实例。

1. 选择**配置**选项卡以查看有关存储卷的详细信息。存储信息位于以下部分中：
   + **主存储**
   + **附加存储卷**

   在**附加存储卷**中，您可以选择**添加存储卷**来添加另一个卷。

# CLI
<a name="rds-storage-viewing.cli"></a>

要从 AWS CLI 中查看存储卷配置，请使用 `describe-db-instances` 命令。

```
aws rds describe-db-instances --db-instance-identifier my-database
```

在输出中，找到 `AdditionalStorageVolumes` 数组以查看已添加卷的详细信息。

```
    "AdditionalStorageVolumes": [
        {
            "VolumeName": "rdsdbdata2",
            "StorageVolumeStatus": "Not-in-use",
            "AllocatedStorage": 5000,
            "IOPS": 25000,
            "StorageThroughput": 500,
            "StorageType": "gp3"
        }
    ]
```

`StorageVolumeStatus` 字段指示数据库当前是否正在使用该卷。状态为 `Not-in-use` 表示该卷已连接，但未被数据库引擎或 RDS 功能使用。

# 增加数据库实例存储容量
<a name="USER_PIOPS.ModifyingExisting"></a>

要增加数据库实例的存储容量，请使用以下任一方法：

**纵向扩展存储卷**  
每个数据库实例都有一个最大容量为 64 TiB 的主存储卷。您可以将存储卷上的已分配空间至少增加 10%。您无法取消分配空间。

**最多添加三个存储卷（io2 或 gp3）**  
您可以通过向每个数据库实例添加最多三个卷，来增加 RDS for Oracle 或 RDS for SQL Server 实例的总存储容量。每个附加卷最多分配 64 TiB 的存储空间，每个实例最大为 256 TiB。  
对于 RDS for Oracle 数据库实例，您可以添加一个最小存储大小为 200 GiB 的存储卷。

您可以使用 Amazon RDS 管理控制台、Amazon RDS API 或 AWS Command Line Interface（AWS CLI）来使用上述任一方法。有关存储限制的信息，请参阅[Amazon RDS 数据库实例存储](CHAP_Storage.md)。

# 纵向扩展数据库实例存储
<a name="USER_PIOPS.ModifyingExisting.ScalingUp"></a>

通过增加为主卷分配的存储，则可以纵向扩展现有数据库实例的存储。当您增加分配的存储时，必须至少增加 10%。如果您尝试将该值增加不到 10％，则会得到错误。为卷分配存储后，无法减少卷上的存储量。

**注意**  
对于 RDS for SQL Server 数据库实例，仅可以对通用型 SSD 和预调配 IOPS SSD 存储类型扩展存储。

要监控数据库实例的可用存储量以便您能够在需要时做出响应，我们建议您创建 Amazon CloudWatch 警报。有关设置 CloudWatch 警报的更多信息，请参阅[使用 CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/AlarmThatSendsEmail.html)。

扩展存储通常不会导致数据库实例的任何中断或性能下降。在修改数据库实例的存储大小后，数据库实例的状态为 **storage-optimization**。

存储优化可能耗时数小时。六（6）小时后或在实例上完成存储优化后，您才能进行进一步的存储修改。您可以在 AWS 管理控制台中或使用 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 命令查看存储优化进度。

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

**增加数据库实例的存储**

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

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

1. 选择要修改的数据库实例。

1. 选择**修改**。

1. 为 **Allocated Storage (分配的存储)** 输入新值。它必须至少比当前值大 10%。  
![\[修改数据库实例的存储量\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/scale-gs2.png)

1. 选择**继续**。

1. 选中**修改计划**部分中的**立即应用**来立即将存储更改应用于数据库实例。

   或选择 **Apply during the next scheduled maintenance window (在下一个计划的维护时段内应用)** 以在下一个维护时段内应用更改。

1. 根据需要设置完毕后，选择**修改数据库实例**。

## AWS CLI
<a name="USER_PIOPS.ModifyingExisting.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)。设置以下参数：
+ `--allocated-storage` – 要为数据库实例分配的存储量（以 GiB 为单位）。
+ `--apply-immediately` – 使用 `--apply-immediately` 可立即应用存储更改。

  或使用 `--no-apply-immediately` (原定设置) 以在下一个维护时段内应用更改。在应用更改时，将会立即发生中断。

以下示例将 `mydbinstance` 的存储纵向扩展到 1000 GiB，并立即应用更改。该命令还会将存储卷迁移到 gp3，并将预调配 IOPS 设置为 6000。

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --allocated-storage 1000 \
    --storage-type gp3 \
    --iops 6000 \
    --apply-immediately
```

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

## RDS API
<a name="USER_PIOPS.ModifyingExisting.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)。设置以下参数：
+ `AllocatedStorage` – 要为数据库实例分配的存储量（以 GiB 为单位）。
+ `ApplyImmediately` – 将此选项设置为 `True` 可立即应用存储更改。将此选项设置为 `False` (原定设置) 可在下一个维护时段内应用更改。在应用更改时，将会立即发生中断。

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

# 添加存储卷
<a name="USER_PIOPS.ModifyingExisting.AdditionalVolumes"></a>

对于 RDS for Oracle 和 RDS for SQL Server 数据库实例，您最多可以添加三个存储卷，来将每个实例的总存储容量增加到多达 256 TiB。附加存储卷可让您使用不同的存储类型（gp3 和 io2），根据您的数据访问模式优化成本和性能。

**注意**  
对于 RDS for Oracle 数据库实例，您可以添加一个最小存储大小为 200 GiB 的存储卷。

您可以使用 AWS 管理控制台或 AWS CLI 来添加、修改或移除附加存储卷。您可以使用不同的已分配存储、IOPS 和吞吐量设置来配置卷。例如，您可以将高性能数据放在 io2 卷上，而将历史数据放在 gp3 卷上。

附加卷必须使用下表中显示的卷名称。


| RDS for Oracle 卷名称 | RDS for SQL Server 卷名称 | 
| --- | --- | 
| rdsdbdata2 | H: | 
| rdsdbdata3 | I: | 
| rdsdbdata4 | J: | 

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

**向数据库实例添加附加存储卷**

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

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

1. 选择要修改的数据库实例。

1. 选择**修改**。

1. 在**存储**部分中，选择**添加附加存储卷**。

1. 配置附加存储卷：
   + **卷名称**：选择 `rdsdbdata2`、`rdsdbdata3` 或 `rdsdbdata4`。
   + **存储类型**：选择**通用型 SSD（gp3）**或**预调配 IOPS SSD（io2）**。
   + **分配的存储**：以 GiB 为单位输入存储大小（最小 200 GiB）。
   + 对于 io2 存储，配置**预调配 IOPS**。
   + 对于 gp3 存储，可以选择配置**存储吞吐量**。

1. 选择**继续**。

1. 根据需要设置完毕后，选择**修改数据库实例**。

**重要**  
当您使用 `modify-db-instance` 操作添加附加存储卷时，无论 `--no-apply-immediately` 参数如何，RDS 都会立即添加存储卷。如果您在请求中还有其它修改，RDS 会根据计划修改应用这些修改。请参阅[使用计划修改设置](USER_ModifyInstance.ApplyImmediately.md)。

## AWS CLI
<a name="USER_PIOPS.ModifyingExisting.AdditionalVolumes.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)。将 `--additional-storage-volumes` 设置为 JSON 数组，以指定要添加或修改的附加存储卷。

以下示例向 `mydbinstance` 添加了一个附加存储卷，其名称为 `rdsdbdata2`，具有 5000 GiB 的 gp3 存储空间。

当您添加附加存储卷时，无论 `--no-apply-immediately` 参数如何，RDS 都会立即应用更改。

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --additional-storage-volumes '[
        {
            "VolumeName": "rdsdbdata2",
            "StorageType": "gp3",
            "AllocatedStorage": 5000,
            "StorageThroughput": 725
        }
    ]'
```

## RDS API
<a name="USER_PIOPS.ModifyingExisting.AdditionalVolumes.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)。将 `AdditionalStorageVolumes` 参数设置为附加存储卷规格的数组。

当您使用 ModifyDBInstance API 操作添加附加存储卷时，无论 `ApplyImmediately` 选项为 True 还是 False，RDS 都会立即添加该存储卷。

# 移除附加存储卷
<a name="USER_PIOPS.RemovingAdditionalVolumes"></a>

当不再需要时，您可以从 RDS for Oracle 和 RDS for SQL Server 数据库实例中移除附加存储卷。在移除卷之前，请确保已将所有数据库文件从该卷中移出，并且没有数据库对象正在引用该卷。验证卷状态是否为 `Not-in-use`。

**重要**  
您无法移除主存储卷。您只能移除附加存储卷。

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

**从数据库实例中移除附加存储卷**

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

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

1. 选择包含要移除的卷的数据库实例。

1. 选择 **Modify**(修改)。

1. 在**存储**部分中，找到要移除的附加存储卷。

1. 对于要删除的标签，选择**移除卷**。
**注意**  
您只能移除状态为 `Not-in-use` 的卷。如果该卷仍在使用中，请将所有数据库文件移出该卷。

1. 选择**继续**。

1. 根据需要设置完毕后，选择**修改数据库实例**。

## AWS CLI
<a name="USER_PIOPS.RemovingAdditionalVolumes.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)。设置以下参数：
+ `--additional-storage-volumes`：指定剩余附加存储卷的 JSON 数组。忽略要从该数组中移除的卷。

以下示例通过仅指定剩余卷来从 `mydbinstance` 中移除名为 `rdsdbdata3` 的附加存储卷，并立即应用更改。

```
aws rds modify-db-instance \
	--db-instance-identifier mydbinstance \
	--additional-storage-volumes '[{ \
		"VolumeName": "rdsdbdata3", \
		"SetForDelete": true
	}]'
```

## RDS API
<a name="USER_PIOPS.RemovingAdditionalVolumes.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)。设置以下参数：
+ `AdditionalStorageVolumes`：您要保留的卷的附加存储卷规格的数组。忽略要从该数组中移除的卷。
+ `ApplyImmediately` – 将此选项设置为 `True` 可立即应用存储更改。将此选项设置为 `False` (原定设置) 可在下一个维护时段内应用更改。

# 使用 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)。

# 升级数据库实例的存储文件系统
<a name="USER_PIOPS.UpgradeFileSystem"></a>

大多数 RDS 数据库实例为 RDS for MariaDB、MySQL 和 PostgreSQL 数据库提供的最大存储大小为 64 TiB。但是，一些较旧的 32 位文件系统的存储容量较低。要确定数据库实例的存储容量，请使用 [describe-valid-db-instance-modifications](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-valid-db-instance-modifications.html) AWS CLI 命令。

RDS 检查存储系统是否具有 16 TiB 的存储大小、2 TiB 的文件大小限制或未优化的写入。如果数据库实例满足这些条件，RDS 会提醒您文件系统配置符合升级条件。您可以在数据库实例详细信息页面的**存储**面板上检查数据库实例的升级资格。

![\[检查数据库实例的存储配置升级资格。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/upgrade-storage-config.png)


如果数据库实例符合文件系统升级的条件，请使用以下任一方法：
+ 创建蓝绿部署并指定**升级存储文件系统配置**。

  此选项将绿色环境中的文件系统升级到首选配置。然后，您可以切换蓝绿部署，以将绿色环境升级为新的生产环境。有关详细说明，请参阅[在 Amazon RDS 中创建蓝绿部署](blue-green-deployments-creating.md)。
+ 创建数据库实例只读副本并指定**升级存储文件系统配置**。

  此选项将只读副本的文件系统升级到首选配置。您可以将只读副本升级为独立的数据库实例。有关详细说明，请参阅[创建只读副本](USER_ReadRepl.Create.md)。

在存储升级期间，数据库引擎不可用。升级存储配置是一项 I/O 密集型操作，会导致只读副本和蓝绿部署的创建时间更长。当满足以下两个条件时，存储升级过程会更快：
+ 源数据库实例使用预调配 IOPS 固态硬盘（io1 或 io2 Block Express）存储。
+ 您为绿色环境或只读副本预调配的实例大小为 4xlarge 或更大。

涉及通用 SSD（gp2）存储的存储升级可能会耗尽您的 I/O 积分余额，从而导致升级时间更长。有关更多信息，请参阅 [Amazon RDS 数据库实例存储](CHAP_Storage.md)。

在存储升级期间，当同时满足以下两个条件时，RDS 会将为绿色实例或只读副本分配的存储大小增加 10%：
+ 源数据库实例的存储消耗量大于或等于已分配存储大小的 90%。
+ 存储自动扩缩已启用。

当新的存储大小大于或等于为实例设置的最大分配存储时，RDS 会关闭自动扩缩。如果在存储升级开始之前禁用了存储自动扩缩，则存储大小在升级过程中不会增加。

# 修改预调配 IOPS SSD 存储的设置
<a name="User_PIOPS.Increase"></a>

可利用 Amazon RDS 控制台、AWS CLI 或 Amazon RDS API 修改使用预置 IOPS SSD 存储的数据库实例的设置。指定存储类型、分配的存储和需要的预调配 IOPS 的数量。该范围取决于数据库引擎和实例类型。

尽管您可以减少为实例预调配的 IOPS 数量，但无法减小存储大小。

在大多数情况下，扩展存储无需停机，也不会降低服务器的性能。在修改数据库实例的存储 IOPS 后，数据库实例的状态为 **storage-optimization**。

**注意**  
存储优化可能耗时数小时。六（6）小时后或在实例上完成存储优化后，您才能进行进一步的存储修改。

有关每个数据库引擎可用的分配存储空间和预调配 IOPS 范围的信息，请参阅 [预置 IOPS SSD 存储](CHAP_Storage.md#USER_PIOPS)。

## 控制台
<a name="User_PIOPS.Increase.con"></a>

**更改数据库实例的预置 IOPS 设置**

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

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

   要筛选数据库实例的列表，对于 **Filter databases (筛选数据库)**，请输入 Amazon RDS 用于筛选结果的文本字符串。将仅显示其名称包含该字符串的数据库实例。

1. 选择具有要修改的预置 IOPS 的数据库实例。

1. 选择**修改**。

1. 在**修改数据库实例**页面上，为**存储类型**选择**预调配 IOPS SSD（io1）**或**预调配 IOPS SSD（io2）**。

1. 对于 **Provisioned IOPS**（预调配 IOPS），输入一个值。

   如果为 **Allocated storage**（分配的存储）或 **Provisioned IOPS**（预调配 IOPS）指定的值超过其他参数支持的上限，则会显示一条警告消息。此消息提供了其他参数所需的值范围。

1. 选择 **Continue (继续)**。

1. 在 **Scheduling of modifications**（修改计划）部分中选择 **Apply immediately**（立即应用），以立即将存储更改应用于数据库实例。或选择 **Apply during the next scheduled maintenance window (在下一个计划的维护时段内应用)** 以在下一个维护时段内应用更改。

1. 检查将更改的参数，然后选择**修改数据库实例**以完成修改。

   分配的存储空间或预置 IOPS 的新值会显示在**状态**列中。

## AWS CLI
<a name="User_PIOPS.Increase.cli"></a>

要更改数据库实例的预置 IOPS 设置，请使用 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)。设置以下参数：
+ `--storage-type` – 对于预调配 IOPS，设置为 `io1` 或 `io2`。
+ `--allocated-storage` – 要为数据库实例分配的存储量（以 GiB 为单位）。
+ `--iops` – 数据库实例预置 IOPS 的新数量，以每秒的输入/输出操作数量表示。
+ `--apply-immediately` – 使用 `--apply-immediately` 可立即应用更改。使用 `--no-apply-immediately`（默认值）可在下一个维护时段内应用更改。

## RDS API
<a name="User_PIOPS.Increase.api"></a>

要更改数据库实例的预调配 IOPS 设置，请使用 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)。设置以下参数：
+ `StorageType` – 对于预调配 IOPS，设置为 `io1` 或 `io2`。
+ `AllocatedStorage` – 要为数据库实例分配的存储量（以 GiB 为单位）。
+ `Iops` – 数据库实例的新 IOPS 速率，以每秒的输入/输出操作数量表示。
+ `ApplyImmediately` – 将此选项设置为 `True` 可立即应用更改。将此选项设置为 `False`（默认值）可在下一个维护时段内应用更改。

# I/O 密集型存储修改
<a name="USER_PIOPS.IOIntensive"></a>

Amazon RDS 数据库实例使用 Amazon Elastic Block Store（EBS）卷进行数据库和日志存储。根据所请求的存储量，RDS（RDS for SQL Server 除外）自动跨多个 Amazon EBS 卷进行*条带化*以增强性能。具有 SSD 存储类型的 RDS 数据库实例由 RAID 0 配置中的一个或四个条带化 Amazon EBS 卷提供支持。根据设计，RDS 数据库实例的存储修改操作对正在进行的数据库操作的影响极小。

在大多数情况下，存储扩展修改完全卸载到 Amazon EBS 层，并且对于数据库是透明的。该过程通常在几分钟内完成。但是，一些较旧的 RDS 存储卷需要不同的过程来修改大小、预调配 IOPS 或存储类型。这涉及使用潜在 I/O 密集型操作制作数据的完整副本。

如果以下任何因素适用，则存储修改将使用 I/O 密集型操作：
+ 源存储类型是磁性的。磁性存储不支持弹性卷修改。
+ RDS 数据库实例不在单卷或四卷的 Amazon EBS 布局上。您可以使用增强监控指标查看 RDS 数据库实例上正在使用的 Amazon EBS 卷的数量。有关更多信息，请参阅 [在 RDS 控制台中查看操作系统指标](USER_Monitoring.OS.Viewing.md)。
+ 修改请求的目标大小对于 RDS for MariaDB、MySQL 和 PostgreSQL 实例将分配的存储空间增加到 400GiB 以上，而对于 RDS for Oracle 则增加到 200GiB 以上。当存储自动扩展操作将数据库实例的分配存储大小增加到超过这些阈值时，其效果相同。

如果您的存储修改涉及 I/O 密集型操作，则会消耗 I/O 资源并增加数据库实例的负载。如果使用涉及通用 SSD（gp2）存储的 I/O 密集型操作进行存储修改，则可能会耗尽 I/O 积分余额，从而导致转换时间更长。

作为最佳做法，我们建议将这些存储修改请求安排在高峰时段以外，以帮助减少完成存储修改操作所需的时间。或者，您可以创建数据库实例的只读副本，并在只读副本上执行存储修改。然后，将只读副本提升为主数据库实例。有关更多信息，请参阅 [使用数据库实例只读副本](USER_ReadRepl.md)。

有关更多信息，请参阅[当我尝试增加分配的存储时，为什么 Amazon RDS 数据库实例卡在修改状态？](https://aws.amazon.com/premiumsupport/knowledge-center/rds-stuck-modifying/)

# 修改通用型 SSD（gp3）存储的设置
<a name="USER_PIOPS.gp3"></a>

可以利用 Amazon RDS 控制台、AWS CLI 或 Amazon RDS API 修改使用通用型 SSD（gp3）存储的数据库实例的设置。指定所需的存储类型、分配的存储、预调配 IOPS 数量以及存储吞吐量。

尽管您可以减少数据库实例的预调配 IOPS 数量和存储吞吐量，但无法减小存储大小。

在大多数情况下，扩展存储无需任何停机。在修改数据库实例的存储 IOPS 后，数据库实例的状态为 **storage-optimization**。在存储优化期间，您可以预期延迟会增加，但仍处于个位数毫秒范围内。在修改存储后，数据库实例可以完全正常运行。

**注意**  
在实例上完成存储优化的六 (6) 小时后，您才能进行进一步的存储修改。

有关每个数据库引擎可用的已分配存储、预调配 IOPS 和存储吞吐量范围的信息，请参阅 [gp3 存储（推荐）](CHAP_Storage.md#gp3-storage)。

## 控制台
<a name="USER_PIOPS.gp3.Console"></a>

**更改数据库实例的存储性能设置**

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

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

   要筛选数据库实例的列表，对于 **Filter databases (筛选数据库)**，请输入 Amazon RDS 用于筛选结果的文本字符串。将仅显示其名称包含该字符串的数据库实例。

1. 选择具有要修改的 gp3 存储的数据库实例。

1. 选择**修改**。

1. 在**修改数据库实例**页面上，对于**存储类型**选择**通用型 SSD（gp3）**，然后执行以下操作：

   1. 对于 **Provisioned IOPS**（预调配 IOPS），选择一个值。

      如果为 **Allocated storage**（分配的存储）或 **Provisioned IOPS**（预调配 IOPS）指定的值超过其他参数支持的上限，则会显示一条警告消息。此消息提供了其他参数所需的值范围。

   1. 对于 **Storage throughput**（存储吞吐量），选择一个值。

      如果为 **Provisioned IOPS**（预调配 IOPS）或 **Storage throughput**（存储吞吐量）指定的值超过其他参数支持的上限，则会显示一条警告消息。此消息提供了其他参数所需的值范围。

1. 选择 **Continue (继续)**。

1. 在 **Scheduling of modifications**（修改计划）部分中选择 **Apply immediately**（立即应用），以立即将存储更改应用于数据库实例。或选择 **Apply during the next scheduled maintenance window (在下一个计划的维护时段内应用)** 以在下一个维护时段内应用更改。

1. 检查将更改的参数，然后选择**修改数据库实例**以完成修改。

   预调配 IOPS 的新值会显示在 **Status**（状态）列中。

## AWS CLI
<a name="USER_PIOPS.gp3.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)。设置以下参数：
+ `--storage-type` – 对于通用型 SSD（gp3），设置为 `gp3`。
+ `--allocated-storage` – 要为数据库实例分配的存储量（以 GiB 为单位）。
+ `--iops` – 数据库实例预置 IOPS 的新数量，以每秒的输入/输出操作数量表示。
+ `--storage-throughput` – 数据库实例新的存储吞吐量，以 MiBps 表示。
+ `--apply-immediately` – 使用 `--apply-immediately` 可立即应用更改。使用 `--no-apply-immediately`（默认值）可在下一个维护时段内应用更改。

## RDS API
<a name="USER_PIOPS.gp3.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)。设置以下参数：
+ `StorageType` – 对于通用型 SSD（gp3），设置为 `gp3`。
+ `AllocatedStorage` – 要为数据库实例分配的存储量（以 GiB 为单位）。
+ `Iops` – 数据库实例的新 IOPS 速率，以每秒的输入/输出操作数量表示。
+ `StorageThroughput` – 数据库实例新的存储吞吐量，以 MiBps 表示。
+ `ApplyImmediately` – 将此选项设置为 `True` 可立即应用更改。将此选项设置为 `False`（默认值）可在下一个维护时段内应用更改。

# 使用专用日志卷（DLV）
<a name="USER_PIOPS.dlv"></a>

您可以将专用日志卷（DLV）用于使用预调配 IOPS（PIOPS）存储的数据库实例。DLV 将 PostgreSQL 数据库事务日志、MySQL/MariaDB 重做日志和二进制日志移动到与包含数据库表的卷不同的存储卷中。DLV 可以提高事务写入日志的效率和一致性。DLV 非常适合分配了较大存储空间、每秒 I/O（IOPS）要求较高或工作负载对延迟敏感的数据库。

DLV 支持 PIOPS 存储（io1 和 io2 Block Express），创建它们时的固定大小为 1,024 GiB，预调配 IOPS 为 3000。

对于以下版本，Amazon RDS 在所有 AWS 区域都支持 DLV：
+ MariaDB 10.6.7 及更高的 10 版本
+ MySQL 8.0.28 及更高的 8.0 版本，MySQL 8.4.3 及更高的 8.4 版本
+ PostgreSQL 13.10 及更高的 13 版本、14.7 及更高的 14 版本，以及 15.2 及更高的 15 版本

RDS 对多可用区部署支持 DLV。修改或创建多可用区实例时，会同时为主实例和辅助实例创建 DLV。

RDS 对于只读副本支持 DLV。如果主数据库实例启用了 DLV，则启用 DLV 后创建的所有只读副本也将具有 DLV。除非经过明确修改，否则在切换到 DLV 之前创建的任何只读副本都不会启用 DLV。我们建议在启用 DLV 之前连接到主实例的所有只读副本也要手动修改为具有 DLV。

**注意**  
对于 5 TiB 或更大的数据库配置，建议使用 DLV。

有关 DLV 的好处的更多信息，请参阅以下博客文章：
+ [使用 Amazon RDS 专用日志卷提高数据库性能](https://aws.amazon.com/blogs/database/enhance-database-performance-with-amazon-rds-dedicated-log-volumes/)
+ [使用专用日志卷对 Amazon RDS for PostgreSQL 进行基准测试](https://aws.amazon.com/blogs/database/benchmark-amazon-rds-for-postgresql-with-dedicated-log-volumes/)
+ Percona 文档中的 [Maximizing performance of AWS RDS for MySQL with dedicated log volumes](https://www.percona.com/blog/maximizing-performance-of-aws-rds-for-mysql-with-dedicated-log-volumes/)

有关每个数据库引擎可用的已分配存储、预调配 IOPS 和存储吞吐量范围的信息，请参阅 [预置 IOPS SSD 存储](CHAP_Storage.md#USER_PIOPS)。

**Topics**
+ [

## 启用和禁用 DLV 时的注意事项
](#USER_PIOPS.dlv.considerations)
+ [

## 创建数据库实例时启用 DLV
](#USER_PIOPS.create-dlv)
+ [

## 在现有数据库实例上启用 DLV
](#USER_PIOPS.modify-dlv)
+ [

## 监控 DLV 存储
](#USER_PIOPS.dlv.monitoring)

## 启用和禁用 DLV 时的注意事项
<a name="USER_PIOPS.dlv.considerations"></a>

启用和禁用 DLV 可能很耗时并导致停机。该过程包括在启用时将所有事务日志或重做和二进制日志（具体取决于数据库引擎）复制到新卷，或者在禁用时复制回原始存储。此操作的持续时间受多个因素影响：
+ 事务日志数量：
  + 具有更多事务的较大数据库会生成更多日志，从而增加复制所需的时间。
  + 如果复制插槽处于非活动状态或复制正处于滞后状态，则事务日志可能会在主数据库实例上累积，从而增加复制所需的时间。确保复制是最新的，并移除所有不必要的插槽。
+ 存储配置：
  + 数据库实例 EBS 带宽 – 带宽越高，则支持的数据传输速度越快。
  + 预调配 IOPS 数 – 每秒进行读写操作的次数（IOPS）越多，复制过程就越快。
+ 数据库活动 - 配置期间的高水平数据库活动可能会减慢此过程。

为了显著缩短停机时间，建议您将此过程计划和安排在活动较少的期间或维护时段进行。

## 创建数据库实例时启用 DLV
<a name="USER_PIOPS.create-dlv"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 创建启用了 DLV 的数据库实例。

### 控制台
<a name="USER_PIOPS.create-dlv.CON"></a>

**在新数据库实例上启用 DLV**

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

1. 选择**创建数据库**。

1. 在**创建数据库实例**页面上，选择支持 DLV 的数据库引擎。

1. 对于**存储**：

   1. 选择**预调配 IOPS SSD（io1）**或**预调配 IOPS SSD（io2）**。

   1. 输入所需的**分配的存储空间**和**预调配 IOPS**。

   1. 展开**专用日志卷**，然后选择**开启专用日志卷**。  
![\[在新数据库实例上启用 DLV。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/enable-dlv.png)

1. 根据需要选择其它设置。

1. 选择**创建数据库**。

创建数据库后，专用日志卷的值将显示在数据库详细信息页面的**配置**选项卡上。

### CLI
<a name="USER_PIOPS.create-dlv.CLI"></a>

要在创建数据库实例时使用预调配 IOPS 存储启用 DLV，请使用 AWS CLI 命令 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)。设置以下参数：
+ `--dedicated-log-volume` – 启用专用日志卷。
+ `--storage-type` – 对于预调配 IOPS，设置为 `io1` 或 `io2`。
+ `--allocated-storage` – 要为数据库实例分配的存储量（以 GiB 为单位）。
+ `--iops` – 数据库实例的预调配 IOPS 的数量，以每秒的 I/O 操作数量表示。

### RDS API
<a name="USER_PIOPS.create-dlv.API"></a>

要在创建数据库实例时使用预调配 IOPS 存储启用 DLV，请使用 Amazon RDS API 操作 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CretaeDBInstance.html)。设置以下参数：
+ `DedicatedLogVolume` – 要启用专用日志卷，请设置为 `true`。
+ `StorageType` – 对于预调配 IOPS，设置为 `io1` 或 `io2`。
+ `AllocatedStorage` – 要为数据库实例分配的存储量（以 GiB 为单位）。
+ `Iops` – 数据库实例的 IOPS 速率，以每秒的 I/O 操作数量表示。

## 在现有数据库实例上启用 DLV
<a name="USER_PIOPS.modify-dlv"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 修改数据库实例来启用 DLV。

在修改数据库实例的 DLV 设置后，必须重启数据库实例。

### 控制台
<a name="USER_PIOPS.modify-dlv.CON"></a>

**在现有数据库实例上启用 DLV**

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

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

   要筛选数据库实例的列表，对于 **Filter databases (筛选数据库)**，请输入 Amazon RDS 用于筛选结果的文本字符串。将仅显示其名称包含该字符串的数据库实例。

1. 选择具有要修改的预调配 IOPS 存储的数据库实例。

1. 选择 **Modify**(修改)。

1. 在**修改数据库实例**页面上：

   1. 对于**存储**，展开**专用日志卷**，然后选择**开启专用日志卷**。

1. 选择**继续**。

1. 选择**立即应用**可立即将更改应用到数据库实例。或选择 **Apply during the next scheduled maintenance window (在下一个计划的维护时段内应用)** 以在下一个维护时段内应用更改。

1. 检查将更改的参数，然后选择**修改数据库实例**以完成修改。

专用日志卷的新值将显示在数据库详细信息页面的**配置**选项卡上。

### CLI
<a name="USER_PIOPS.modify-dlv.CLI"></a>

要使用预调配 IOPS 存储在现有数据库实例上启用或禁用 DLV，请使用 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)。设置以下参数：
+ `--dedicated-log-volume` – 启用专用日志卷。

  使用 `--no-dedicated-log-volume`（默认值）将禁用专用日志卷。
+ `--apply-immediately` – 使用 `--apply-immediately` 可立即应用更改。

  使用 `--no-apply-immediately`（默认值）可在下一个维护时段内应用更改。

### RDS API
<a name="USER_PIOPS.modify-dlv.API"></a>

要使用预调配 IOPS 存储在现有数据库实例上启用或禁用 DLV，请使用 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)。设置以下参数：
+ `DedicatedLogVolume` – 将此选项设置为 `true` 可启用专用日志卷。

  将此选项设置为 `false` 可禁用专用日志卷。这是默认值。
+ `ApplyImmediately` – 将此选项设置为 `True` 可立即应用更改。

  将此选项设置为 `False`（默认值）可在下一个维护时段内应用更改。

## 监控 DLV 存储
<a name="USER_PIOPS.dlv.monitoring"></a>

可以使用 CloudWatch 中的 `FreeStorageSpaceLogVolume` 指标来监控 DLV 存储使用情况。

可以对 RDS for PostgreSQL 使用以下查询来查找事务日志占用的大小：

```
SELECT pg_size_pretty(COALESCE(sum(size), 0)) AS total_wal_generated_size
FROM pg_catalog.pg_ls_waldir();
```

如果 DLV 的存储空间用完，则数据库实例将进入 `storage-full` 状态，从而导致停机。