我为我的 Amazon Relational Database Service (Amazon RDS) 数据库实例启用了存储自动扩缩,但可用存储空间不到 10%。或者,该实例处于存储已满状态。
简短描述
当您更改数据库实例的存储空间时,该数据库实例将进入 storage-optimization 状态。storage-optimization 通常需要几分钟才能完成,但也可能需要 24 小时以上。要监控该过程,请使用 Amazon Elastic Compute Cloud (Amazon EC2) 控制台。
**注意:**从上次修改存储空间起的六小时内,或者直到 storage-optimization 完成之前(以较长者为准),您都无法进行额外的存储空间修改。
在 storage-optimization 期间,即使可用存储空间不足 10%,自动扩缩也无法增加数据库实例的存储空间。
当您使用自动扩缩增加数据库实例的存储空间时,额外的存储空间将按以下增量之一增加,以较大者为准:
- 10GiB
- 当前分配空间的 10%
- 根据过去一小时的 FreeStorageSpace 指标对七小时的存储增长进行预测
如果要在不到一小时的时间内加载 50GB 的数据,增加 10% 的存储空间是不够的。由于先前的自动扩缩操作处于 storage-optimization 状态,因此在该过程完成之前,您无法对数据库实例进行存储修改。因此,您的数据库实例可能处于 storage-full 状态长达几个小时。
解决方法
如果您无法修改 RDS 数据库实例存储,请检查您的实例的状态。如果您的数据库实例处于 storage-full 或 available 状态,请检查最近六小时内是否发生了存储空间修改。要确认最近是否执行了存储空间增加操作,请检查数据库实例的事件中是否显示以下消息:
"Finished applying modification to allocated storage."
-or-
"Finished applying autoscaling-initiated modification to allocated storage."
如果您的数据库实例处于 storage-optimization 状态,则将数据库恢复到具有更多 Amazon Elastic Block Store (Amazon EBS) 存储空间的数据库实例。
**注意:**如果您的数据库实例处于 storage-full 状态,则必须先停止向该数据库实例加载任何数据。此过程可能需要几分钟到几小时才能使实例处于 storage-full 状态。
当您的数据库实例未处于 storage-full 状态时,使用以下选项之一修改数据库实例的存储大小:
- 选项 1: 创建和提升数据库实例的只读副本。
- 选项 2: 手动创建数据库快照并将数据库实例恢复到指定时间点。
- 选项 3: 由于您的 FreeStorageSpace 不足,请关闭自动扩缩。
**注意:**选项 1 和 2 会导致数据库停机。但是,选项 1 的停机时间比选项 2 少。MariaDB、Microsoft SQL Server、MySQL、Oracle 和 PostgreSQL 数据库引擎支持只读副本。
创建和提升 RDS 数据库实例的只读副本
完成以下步骤:
- 创建数据库实例的只读副本。
- 增加只读副本的存储容量。默认情况下,只读副本上的 Amazon RDS 存储自动扩缩处于停用状态。
- 将您的活动数据库实例重命名为其他名称。这会阻止传入流量。
- 将只读副本重命名为您用于活动数据库实例的名称。这会将只读副本端点更改为与活动数据库实例相同,并且您无需重新配置应用程序。
- 提升只读副本。
**注意:**对于应用程序或客户端,数据库停机发生在步骤 3-5 中。
手动创建数据库快照并将您的 RDS 数据库实例恢复到指定时间点
完成以下步骤:
- 重命名活动数据库实例以阻止传入流量并防止 storage-full 状态。如果您的数据库实例处于 storage-full 状态,则无法继续下一步。
- 创建数据库实例的数据库快照。
**注意:**快照可防止恢复的数据库实例发生 storage-optimization 存储修改事件。
- 要将数据库实例恢复到某个时间点,请选择最新的可恢复时间。对于实例标识符,输入您的活动数据库实例使用的名称。
**注意:**为避免自动扩缩增加导致 storage-optimization,请勿激活自动扩缩。
- (可选)修改恢复的数据库实例以包括自定义安全组。默认数据库安全组应用于新数据库实例。
- 增加新数据库实例的存储容量。
**注意:**对于应用程序或客户端,数据库停机发生在步骤 1-4 期间。
由于 FreeStorageSpace 不足,请关闭自动扩缩
如果您关闭自动扩缩,则不会自动分配额外的存储空间,您可以手动控制存储分配。例如,自动扩缩会将存储空间增加 10%,但您希望在自动扩缩事件启动之前增加超过 10% 的存储空间。对于这种情况,请关闭自动扩缩。
要关闭自动扩缩,请完成以下步骤:
- 打开 Amazon Aurora 和 RDS 控制台。
- 在导航窗格中,选择 Databases(数据库),然后选择您的数据库。
- 选择 Modify(修改)。
- 在 Storage(存储)的 Additional storage configuration(其他存储配置)下,取消选中 Enable storage autoscaling(启用存储自动扩缩)。
- 选择 Continue(继续)。
- 选择 Apply immediately(立即应用)或 Apply during the next scheduled maintenance window(在下一个计划维护时段内应用)。
- 选择 Modify DB instance(修改数据库实例)。
**注意:**当 FreeStorageSpace 指标在至少五分钟内低于 10% 时,自动扩缩将启动。自上次 storage-modification 起至少六个小时后,或者实例的 storage-optimization 已完成时(以较长者为准),自动扩缩也会启动。
相关信息
为什么我在 Amazon RDS for PostgreSQL 上收到 "No space left on device" 或 "DiskFull" 错误?
我的 Amazon RDS for Oracle 数据库实例的存储使用量为何超出预期?
我的 Amazon RDS for MySQL 数据库实例的存储使用量为何超出预期?
如何优化我的 Amazon RDS for SQL Server 数据库实例中的存储占用?