一、问题描述
云数据库 MySQL 实例的数据文件占满当前实例的存储空间,导致出现存储超用锁定问题,实例运行状态为“锁定中(容量超限)”。
二、问题原因
云数据库 MySQL 实例存储空间占满,为避免数据丢失,系统对云数据库 MySQL 实例进行了自动锁定,锁定之后将无法进行写入操作。
三、解决思路
1. 对实例的硬盘进行扩容。在创建云数据库 MySQL 实例时,为实例选择了一定的硬盘空间,后续可通过扩容增加硬盘的容量,操作参见 扩容实例硬盘空间。
2. 清理无用的数据。定期清理不需要的历史数据,操作参见 清理无用的数据。
四、一、扩容实例硬盘空间
1. 登录 MySQL 控制台。
2. 在实例列表,单击实例 ID 或操作列的管理进入实例管理页。
3. 在实例详情 > 实例规格后单击调整配置。
4. 在跳转页面对硬盘进行扩容。
五、二、清理无用的数据或无用表
1. 连接云数据库 MySQL 实例,连接方法可参考 连接 MySQL 实例。
2. 执行以下命令,查看数据库的表大小,确认其中可以删除的历史数据或无用数据。
SELECT file_name, concat(TOTAL_EXTENTS,'M') as 'FIle_size' FROM INFORMATION_SCHEMA.FILES order by TOTAL_EXTENTS DESC
3. 使用 drop 或 truncate 命令清理数据。
drop 命令:
drop table <数据库名>.<表名>;
truncate 命令:
truncate table <数据库名>.<表名>;
六、后续维护
实例运行状态由“锁定中(容量超限)”恢复为“运行中”,则表示存储空间超用锁已解除,在后续的使用中,你可注意以下几点,定期维护数据库实例,避免再次出现硬盘空间超用锁定情况。
1. 设置存储空间超用锁定事件告警,系统实时关注实例存储空间使用情况,可推送预警通知,便于你掌握存储情况,设置方法参见 如何设置硬盘超用锁定事件告警。
2. 设置合适的自动备份文件保留时长,设置方法参见 备份数据库。
3. 定期删除不需要的历史手动备份,操作方法参见 删除备份。
4. 注意订阅监控指标告警(方法参见 告警策略),及时清理数据或进行数据拆分,使磁盘利用率不超过80%,你可通过控制台,在实例管理 > 实例监控中查看。
5. 对于临时文件较大的场景,应优化 SQL 语句,避免频繁使用 ORDER BY、GROUP BY 操作。
七、附录:如何查看实例的硬盘空间(存储空间)使用情况
1. 登录 MySQL 控制台。
2. 在实例列表,单击实例 ID 或操作列的管理进入实例管理页。
3. 在实例详情 > 磁盘用量中,查看存储使用情况。