更新时间:2024-09-05 GMT+08:00
RDS for SQL Server实例磁盘满的处理方法
当实例由于各种原因磁盘使用率达到97%及以上时,出于保护磁盘的目的(完全打满会导致磁盘异常),系统会设置数据库为只读状态,查看实例的运行状态为“存储空间满”。
可能原因
- 业务量增大导致磁盘满。
- 部分库ldf文件过大导致的磁盘满。
- tempdb满导致的磁盘满。
解决方法
- 推荐用户扩容磁盘。
- 在实例列表,选择“更多 > 磁盘扩容”。
- 在扩容磁盘页面,系统会自动判断需要扩容的最小空间。
图1 扩容磁盘
- 扩容成功后,实例运行状态恢复正常,只读状态解除,请检查业务。
图2 查看实例运行状态
- 对于部分库ldf文件过大导致的磁盘满的场景。
请参考收缩数据库处理。
图3 查看ldf文件大小
- 对于tempdb占用空间多导致的磁盘满的场景。
- 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;
- 参考收缩数据库收缩tempdb,如果tempdb当前使用频繁,将无法有效降低磁盘使用率。
- 在实例列表,选择“更多 > 重启实例”,重启数据库实例,该方式会释放tempdb空闲空间。
- tempdb大小通过SQL语句查询。