华为云云数据库rds数据库磁盘满导致被设置read_only_云淘科技

场景描述

业务侧出现如下报错:

The MySQL server is running with the --read-only option so it cannot execute this statement

原因分析

进入实例详情页面,查看磁盘空间是否已满。

登录数据库,查看read_only变量。

show variables like ‘read_only’;

分析原因为实例磁盘空间满,数据库状态变更为只读,导致SQL语句执行失败。
通过智能DBA助手查看磁盘空间占用分布,具体操作请参见容量预估。

图1 磁盘空间分布

解决方案

随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,建议用户扩容磁盘空间,确保磁盘空间足够。

如果原有规格的磁盘已是最大,请先升级规格。

云盘实例可以设置存储空间自动扩容,在实例存储空间达到阈值时,会触发自动扩容。

针对数据空间过大,可以删除无用的历史表数据。

如果实例变为只读状态,您需要先联系客服解除只读状态;如果实例非只读状态,则可以直接执行删除操作。
查看物理文件大小Top50库表,识别可以删除的历史表数据,具体操作请参见容量预估。
可在业务低峰期对碎片率高的表执行optimize优化,以便释放空间:

清理整张表使用DROPTRUNCATE操作;删除部分数据,使用DELETE操作,如果是执行DELETE操作,需要使用OPTIMIZE TABLE来释放空间。

如果是RDS for MySQL Binlog日志文件占用过多,可以清理本地Binlog日志,来释放磁盘空间。
针对大量排序查询导致的临时文件过大,建议优化SQL查询。

查询数据库慢SQL和Top SQL,分析数据量大,行数多,响应时间长的SQL语句,并进行优化。

您还可以订阅实例健康日报来获取SQL及性能分析结果,包括慢SQL分析、全量SQL分析、性能 & 磁盘分析、性能指标趋势图,当发生风险点时及时收到诊断报告。

具体操作请参见诊断日报。

父主题: 性能资源类

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家