使用 Amazon RDS 数据库实例的存储 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon RDS 数据库实例的存储

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

增加数据库实例存储容量

如果需要空间来存储更多数据,则可以扩展现有数据库实例的存储。为此,您可以使用 Amazon RDS 控制台、Amazon RDS API 或 Amazon Command Line Interface(Amazon CLI)。有关存储限制的信息,请参阅Amazon RDS 数据库实例存储

注意

仅通用型 SSD 或预配置 IOPS SSD 存储类型支持扩展 Amazon RDS for Microsoft SQL Server 数据库实例的存储。

要监控数据库实例的可用存储量以便您能够在需要时做出响应,我们建议您创建 Amazon CloudWatch 警报。有关设置 CloudWatch 警报的更多信息,请参阅使用 CloudWatch 警报

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

注意

存储优化可能耗时数小时。六(6)小时后或在实例上完成存储优化后,您才能进行进一步的存储修改。

但是,特殊情况是,如果您有一个 SQL Server 数据库实例,并且自 2017 年 11 月以来未修改存储配置。在此情况下,在修改数据库实例以增加分配的存储时,可能会遇到几分钟的短暂中断。在停机之后,数据库实例恢复联机,但处于 storage-optimization 状态。在存储优化期间,性能可能会下降。

注意

您无法在已分配数据库实例的存储后减少存储量。当您增加分配的存储空间时,必须至少增加 10%。如果您尝试将该值增加不到 10%,则会得到错误。

增加数据库实例的存储

  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

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

  4. 选择修改

  5. Allocated Storage (分配的存储) 输入新值。它必须大于当前值。

    
								修改数据库实例的存储量
  6. 选择继续,进入下一个屏幕。

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

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

  8. 根据需要设置完毕后,选择修改数据库实例

要增加数据库实例的存储,请使用 Amazon CLI 命令 modify-db-instance。设置以下参数:

  • --allocated-storage – 要为数据库实例分配的存储量(以 GiB 为单位)。

  • --apply-immediately – 使用 --apply-immediately 可立即应用存储更改。

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

有关存储的更多信息,请参阅Amazon RDS 数据库实例存储

要增加数据库实例的存储,请使用 Amazon RDS API 操作 ModifyDBInstance。设置以下参数:

  • AllocatedStorage – 要为数据库实例分配的存储量(以 GiB 为单位)。

  • ApplyImmediately – 将此选项设置为 True 可立即应用存储更改。将此选项设置为 False (原定设置) 可在下一个维护时段内应用更改。在应用更改时,将会立即发生中断。

有关存储的更多信息,请参阅 Amazon RDS 数据库实例存储

使用 Amazon RDS 存储自动扩展功能自动管理容量

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

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

如果启用了存储自动扩展,在 Amazon RDS 检测到可用数据库空间不足时,则会自动扩展存储。在以下因素适用时,Amazon RDS 会为启用了自动扩展的数据库实例启动存储修改:

  • 可用空间小于分配的存储空间的 10%。

  • 存储空间不足状态至少持续 5 分钟。

  • 自上次存储修改以来,至少已过去 6 小时;或在实例上完成存储优化后,至少已过去 6 小时。

附加存储的增量采用下面的较大值:

  • 5 GiB

  • 10% 的当前分配的存储空间

  • 基于过去一小时内 FreeStorageSpace 指标变化的 7 个小时的存储增长预测。有关指标的更多信息,请参阅使用 Amazon CloudWatch 进行监控

最大存储阈值是您为数据库实例自动扩展设置的限制。它具有以下限制:

  • 您必须将最大存储阈值设置为比当前分配的存储空间多至少 10%。我们建议将其设置为至少多 26%,以避免收到有关存储大小接近最大存储阈值的事件通知

    例如,如果您的数据库实例分配了 1000 GiB 的存储空间,则应将最大存储阈值设置为至少 1100 GiB。如果不这样设置,您会收到错误提示消息,例如 Invalid max storage size for engine_name(engine_name 的最大存储空间大小无效)。但是,我们建议您将最大存储阈值设置为至少 1260GiB,以避免出现事件通知。

  • 对于使用预置 IOPS 存储的数据库实例,在 RDS for SQL Server 上,IOPS 与最大存储阈值(以 GiB 为单位)的比率必须为 1–50,而在其他 RDS 数据库引擎上必须为 0.5–50。

  • 对于启用了自动扩展的实例,您为其设置的最大存储阈值不得大于数据库引擎和数据库实例类的最大分配存储。

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

注意

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

限制

以下限制适用于存储自动扩展:

  • 如果存储增量等于或超出最大存储阈值,则不会进行自动扩展。

  • 自动扩展时,RDS 会预测后续自动扩展操作的存储大小。如果预计后续操作将超过最大存储阈值,则 RDS 将自动扩展到比最大存储阈值少 1GiB。

  • 自动缩放无法完全防止大量数据加载导致存储已满的情况。这是因为,在六 (6) 小时后或在实例上完成存储优化后 (以较长者为准),您才能进行进一步的存储修改。

    如果执行大型数据加载,并且自动扩展不能提供足够的空间,则数据库可能会保持存储已满状态几小时。这会损害数据库。

  • 如果您在 Amazon RDS 启动自动扩展操作的同时启动存储扩展操作,则您的存储修改优先。将取消自动扩展操作。

  • 自动扩展功能不能与磁性存储一起使用。

  • 自动扩展功能不能与以下可排序存储空间小于 6 TiB 的上一代实例类别一起使用:db.m3.large、db.m3.xlarge 和 db.m3.2xlarge。

  • Amazon CloudTrail 不记录自动扩展操作。有关 CloudTrail 的更多信息,请参阅 监控 Amazon CloudTrail 中的 Amazon RDS API 调用

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

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

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

注意

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

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

  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

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

  3. 在导航窗格中,选择 Databases (数据库)

  4. 选择创建数据库。在选择引擎页面上,选择您的数据库引擎并指定数据库实例信息,如开始使用 Amazon RDS中所述。

  5. 存储自动扩展部分中,设置数据库实例的最大存储阈值值。

  6. 指定其余的数据库实例信息,如开始使用 Amazon RDS中所述。

要为新的数据库实例启用存储自动扩展功能,请使用 Amazon CLI 命令 create-db-instance。设置以下参数:

  • --max-allocated-storage – 打开存储自动扩展功能,并设置存储大小的上限(以 GiB 为单位)。

要验证 Amazon RDS 存储自动扩展功能是否适用于数据库实例,请使用 Amazon CLI describe-valid-db-instance-modifications 命令。要在创建实例前基于实例类进行检查,请使用 describe-orderable-db-instance-options 命令。检查返回值中的以下字段:

  • SupportsStorageAutoscaling – 指示数据库实例或实例类是否支持存储自动扩展功能。

有关存储的更多信息,请参阅Amazon RDS 数据库实例存储

要为新的数据库实例启用存储自动扩展,请使用 Amazon RDS API 操作 CreateDBInstance。设置以下参数:

  • MaxAllocatedStorage – 打开 Amazon RDS 存储自动扩展功能,并设置存储大小的上限(以 GiB 为单位)。

要验证 Amazon RDS 存储自动扩展功能是否适用于数据库实例,请对现有实例使用 Amazon RDS API DescribeValidDbInstanceModifications 操作或在创建实例前使用 DescribeOrderableDBInstanceOptions 操作。检查返回值中的以下字段:

  • SupportsStorageAutoscaling – 指示数据库实例是否支持存储自动扩展功能。

有关存储的更多信息,请参阅Amazon RDS 数据库实例存储

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

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

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

  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

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

  4. Autoscaling (自动扩展) 部分中,更改存储限制。有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。

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

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

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

要更改数据库实例的存储自动扩展设置,请使用 Amazon CLI 命令 modify-db-instance。设置以下参数:

  • --max-allocated-storage – 设置存储大小的上限(以 GiB 为单位)。如果该值大于 --allocated-storage 参数,则打开存储自动扩展功能。如果该值与 --allocated-storage 参数相等,则关闭存储自动扩展功能。

要验证 Amazon RDS 存储自动扩展功能是否适用于数据库实例,请使用 Amazon CLI describe-valid-db-instance-modifications 命令。要在创建实例前基于实例类进行检查,请使用 describe-orderable-db-instance-options 命令。检查返回值中的以下字段:

  • SupportsStorageAutoscaling – 指示数据库实例是否支持存储自动扩展功能。

有关存储的更多信息,请参阅Amazon RDS 数据库实例存储

要更改数据库实例的存储自动扩展设置,请使用 Amazon RDS API 操作 ModifyDBInstance。设置以下参数:

  • MaxAllocatedStorage – 设置存储大小的上限(以 GiB 为单位)。

要验证 Amazon RDS 存储自动扩展功能是否适用于数据库实例,请对现有实例使用 Amazon RDS API DescribeValidDbInstanceModifications 操作或在创建实例前使用 DescribeOrderableDBInstanceOptions 操作。检查返回值中的以下字段:

  • SupportsStorageAutoscaling – 指示数据库实例是否支持存储自动扩展功能。

有关存储的更多信息,请参阅Amazon RDS 数据库实例存储

为数据库实例禁用存储自动扩展功能

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

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

  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

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

  4. 清除存储自动扩展部分中的启用存储自动扩展复选框。有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。

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

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

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

要为数据库实例关闭存储自动扩展功能,请使用 Amazon CLI 命令 modify-db-instance 和以下参数:

  • --max-allocated-storage – 指定一个与 --allocated-storage 设置相等的值可进一步防止指定数据库实例的 Amazon RDS 存储自动扩展。

有关存储的更多信息,请参阅Amazon RDS 数据库实例存储

要为数据库实例关闭存储自动扩展,请使用 Amazon RDS API 操作 ModifyDBInstance。设置以下参数:

  • MaxAllocatedStorage – 指定一个与 AllocatedStorage 设置相等的值可进一步防止指定数据库实例的 Amazon RDS 存储自动扩展。

有关存储的更多信息,请参阅Amazon RDS 数据库实例存储

修改预置 IOPS 的 SSD 存储设置

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

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

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

注意

存储优化可能耗时数小时。六(6)小时后或在实例上完成存储优化后,您才能进行进一步的存储修改。

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

  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

    注意

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

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

  4. 选择修改

  5. Modify DB instance(修改数据库实例)页上,为 Storage type(存储类型)选择预调配 IOPS,然后提供预调配 IOPS 值。

    
						Console Tags (控制台标签) 选项卡

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

  6. 选择 Continue (继续)

  7. 要立即将更改应用于数据库实例,请选中修改计划部分中的立即应用。或选择 Apply during the next scheduled maintenance window (在下一个计划的维护时段内应用) 以在下一个维护时段内应用更改。

    在存储类型发生更改时,将会立即发生中断。有关存储的更多信息,请参阅Amazon RDS 数据库实例存储

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

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

要更改数据库实例的预置 IOPS 设置,请使用 Amazon CLI 命令 modify-db-instance。设置以下参数:

  • --storage-type – 将预置 IOPS 设置为 io1

  • --allocated-storage – 要为数据库实例分配的存储量(以 GiB 为单位)。

  • --iops – 数据库实例预置 IOPS 的新数量,以每秒的输入/输出操作数量表示。

  • --apply-immediately – 使用 --apply-immediately 可立即应用更改。使用 --no-apply-immediately(默认值)可在下一个维护时段内应用更改。

要更改数据库实例的预配置 IOPS 设置,请使用 Amazon RDS API 操作 ModifyDBInstance。设置以下参数:

  • StorageType – 将预置 IOPS 设置为 io1

  • AllocatedStorage – 要为数据库实例分配的存储量(以 GiB 为单位)。

  • Iops – 数据库实例的新 IOPS 速率,以每秒的输入/输出操作数量表示。

  • ApplyImmediately – 将此选项设置为 True 可立即应用更改。将此选项设置为 False(默认值)可在下一个维护时段内应用更改。

I/O 密集型存储修改

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 控制台中查看操作系统指标

  • 修改请求的目标大小对于 RDS for MariaDB、MySQL 和 PostgreSQL 实例将分配的存储空间增加到 400GiB 以上,而对于 RDS for Oracle 则增加到 200GiB 以上。当存储自动扩展操作将数据库实例的分配存储大小增加到超过这些阈值时,其效果相同。

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

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

有关更多信息,请参阅当我尝试增加分配的存储时,为什么 Amazon RDS 数据库实例卡在修改状态?