文档首页/ 云数据库 RDS/ 用户指南/ RDS for SQL Server用户指南/ 性能调优/ RDS for SQL Server实例磁盘满的处理方法
更新时间:2024-09-05 GMT+08:00

RDS for SQL Server实例磁盘满的处理方法

当实例由于各种原因磁盘使用率达到97%及以上时,出于保护磁盘的目的(完全打满会导致磁盘异常),系统会设置数据库为只读状态,查看实例的运行状态为“存储空间满”。

可能原因

  • 业务量增大导致磁盘满。
  • 部分库ldf文件过大导致的磁盘满。
  • tempdb满导致的磁盘满。

解决方法

  • 推荐用户扩容磁盘。
    1. 在实例列表,选择“更多 > 磁盘扩容”。
    2. 在扩容磁盘页面,系统会自动判断需要扩容的最小空间。
      图1 扩容磁盘
    3. 扩容成功后,实例运行状态恢复正常,只读状态解除,请检查业务。
      图2 查看实例运行状态
  • 对于部分库ldf文件过大导致的磁盘满的场景。

    请参考收缩数据库处理。

    图3 查看ldf文件大小
  • 对于tempdb占用空间多导致的磁盘满的场景。
    1. tempdb大小通过SQL语句查询。
      SELECT name AS FileName,
      size*1.0/128 AS FileSizeInMB,
      CASE max_size
      WHEN 0 THEN 'Autogrowth is off.'
      WHEN -1 THEN 'Autogrowth is on.'
      ELSE 'Log file grows to a maximum size of 2 TB.'
      END,
      growth AS 'GrowthValue',
      'GrowthIncrement' =
      CASE
      WHEN growth = 0 THEN 'Size is fixed.'
      WHEN growth > 0 AND is_percent_growth = 0
      THEN 'Growth value is in 8-KB pages.'
      ELSE 'Growth value is a percentage.'
      END
      FROM tempdb.sys.database_files;
    2. 参考收缩数据库收缩tempdb,如果tempdb当前使用频繁,将无法有效降低磁盘使用率。
    3. 在实例列表,选择“更多 > 重启实例”,重启数据库实例,该方式会释放tempdb空闲空间。
      重启后,实例的磁盘满状态会恢复正常。

      下发重启实例后,由于tempdb导致的磁盘满状态会恢复,但是由于业务库ldf文件过大导致的磁盘满不能恢复,还会导致事务日志大的业务库处于inRecovery状态,无法正常访问(持续时间比较久)。因此,推荐使用扩容磁盘的解决方法,安全性更高。