帮你快速理解、总结文档立即下载

存储超用锁定如何解决

最近更新时间:2026-09-03 16:50:01
我的收藏
在使用云数据库 MySQL 实例的过程中,随着数据文件越来越多,存储空间也逐渐占满,为避免数据丢失,系统会对云数据库 MySQL 实例进行自动锁定,锁定之后,将无法进行写入操作。

问题描述

云数据库 MySQL 实例的数据文件占满当前实例的存储空间,导致出现存储超用锁定问题,实例运行状态为“锁定中(容量超限)”。

问题原因

云数据库 MySQL 实例存储空间占满,为避免数据丢失,系统对云数据库 MySQL 实例进行了自动锁定,锁定之后将无法进行写入操作。

解决思路

1. 对实例的硬盘进行扩容。在创建云数据库 MySQL 实例时,为实例选择了一定的硬盘空间,后续可通过扩容增加硬盘的容量,操作参见 扩容实例硬盘空间
2. 清理无用的数据。定期清理不需要的历史数据,操作参见 清理无用的数据

解决方法

一、扩容实例硬盘空间

1. 登录 MySQL 控制台
2. 在实例列表,单击实例 ID 或操作列的管理进入实例管理页。
3. 实例详情 > 实例配置后单击调整配置

4. 在跳转页面对硬盘进行扩容。

二、清理无用的数据或无用表

注意:
对于数据的清理请您谨慎操作,如非必要,不推荐清理数据,请采用扩容方式解除锁定,如果必须清理,请在清理前对数据库进行备份,避免数据丢失
云数据库 MySQL 中 delete 命令是无法释放存储空间的,推荐使用 droptruncate 命令释放存储空间。
当 MySQL 表数据量较大时,通过 DELETE 语句清理数据并不会直接释放磁盘空间,仅会将数据库记录或数据页标记为可重用。若需要真正回收表空间并减少磁盘占用,可通过 OPTIMIZE TABLE 实现。参考:使用 OPTIMIZE TABLE 命令释放 MySQL 实例的表空间。
清理数据文件可能有延迟,请耐心等待实例已使用空间的下降。
如需使用异步大表删除能力,需检查内核小版本是否支持,详情可参考 异步删除大表,不满足内核小版本要求时可以先升级内核小版本,然后再执行,升级操作请参见 升级内核小版本
1. 连接云数据库 MySQL 实例,连接方法可参考 连接 MySQL 实例
2. 执行以下命令,查看数据库的表大小,确认其中可以删除的历史数据或无用数据。
SELECT file_name, concat(TOTAL_EXTENTS,'M') as 'FIle_size' FROM INFORMATION_SCHEMA.FILES order by TOTAL_EXTENTS DESC
3. 使用 droptruncate 命令清理数据。
drop 命令:
drop table <数据库名>.<表名>;
truncate 命令:
truncate table <数据库名>.<表名>;

后续维护

实例运行状态由“锁定中(容量超限)”恢复为“运行中”,则表示存储空间超用锁已解除,在后续的使用中,您可注意以下几点,定期维护数据库实例,避免再次出现硬盘空间超用锁定情况。
1. 设置存储空间超用锁定事件告警,系统实时关注实例存储空间使用情况,可推送预警通知,便于您掌握存储情况,设置方法参见 如何设置硬盘超用锁定事件告警
2. 设置合适的自动备份文件保留时长,设置方法参见 备份数据库
3. 定期删除不需要的历史手动备份,操作方法参见 删除备份
4. 注意订阅监控指标告警(方法参见 告警策略),及时清理数据或进行数据拆分,使磁盘利用率不超过80%,您可通过控制台,在实例管理 > 实例监控中查看。
5. 对于临时文件较大的场景,应优化 SQL 语句,避免频繁使用 ORDER BYGROUP BY 操作。

附录:如何查看实例的硬盘空间(存储空间)使用情况

1. 登录 MySQL 控制台
2. 在实例列表,单击实例 ID 或操作列的管理进入实例管理页。
3. 实例详情 > 磁盘用量中,查看存储使用情况。