如何解决 Amazon RDS 数据库实例用尽存储空间时出现的问题?

上次更新时间:2021 年 9 月 17 日

我的 Amazon Relational Database Servic(Amazon RDS)数据库实例存储用尽,我无法停止、重新启动或连接到该实例。如何解决此问题?

简短描述

要避免 STORAGE_FULL(存储已满)状态,请考虑使用以下一种或多种预防措施:

解决方法

处于 STORAGE_FULL 状态的 Amazon RDS 数据库实例没有足够的可用空间来执行基本操作,例如连接或重新启动实例。要解决此问题,请执行以下步骤:

  1. 确认数据库实例状态STORAGE_FULL
  2. 向实例添加更多存储空间
  3. 增加数据库实例的分配的存储属性。如果数据库实例处于 STORAGE_FULL 状态,则该实例仅接受对分配的存储进行的修改。对其他任何值的修改将被拒绝。
    注意:您必须至少增加 10% 的分配的存储。如果增加的分配的存储低于 10%,则会出错。

当数据库实例处于 storage-optimization(存储优化)状态时,该实例将会正常运行。但是,在至少六个小时内或在数据库实例的状态不再为 storage-optimization 之前,您不能进行其他存储修改。在大多数情况下,稍微增加 Allocated Storage(分配的存储),即可重新连接到实例,以便您执行其他问题排查操作。如果您的 Amazon RDS 数据库实例未处于 STORAGE_FULL 状态,请参阅无法连接到 Amazon RDS 数据库实例,以了解其他问题排查步骤。

Amazon RDS for SQL Server

某些数据库实例存在修改存储限制。在 Amazon RDS 控制台中,如果数据库实例不符合修改条件,则系统会停用 Allocated Storage(分配的存储)选项。如果您想扩展存储 Amazon RDS for SQL Server 实例,但修改存储大小的选项不可用,则可以使用原生备份和还原功能迁移数据。您还可以使用数据迁移工具将数据迁移到具有预置 IOPS 或通用型(SSD)存储类型的新实例。有关更多信息,请参阅修改 Amazon RDS 数据库实例

您可以使用以下 AWS Command Line Interface(AWS CLI)命令检查资格条件,以返回数据库实例的有效存储选项:

describe-valid-db-instance-modifications

您可以通过执行以下操作,减少 Amazon RDS SQL Server 实例中使用的空间:

  • 如果您的 Amazon RDS 实例出现 storage full(存储已满)情况,或者您需要控制数据库日志的大小,请运行 DBCC SQLPERF(LOGSPACE) TSQL 查询以查看 SQL Server 事务日志的大小和使用的日志空间百分比。有关此查询的更多信息,请参阅有关 DBCC SQLPERF (Transact-SQL) 的 Microsoft 文档。如果使用的日志空间百分比较低,但事务日志文件大小较大,则缩小事务日志文件以恢复磁盘空间。有关更多信息,请参阅连接到运行 Microsoft SQL Server 数据库引擎的数据库实例
  • 如果 tempdb 正在使用大量可用存储,请缩减 tempdb 数据库的大小。由于 SQL Server tempdb 在启用 auto-growth 时会自动增长,加上 maxsize 中未指定限制,因此 tempdb 会消耗可用储空间。