MySQL实例可能会由于SQL语句、外部攻击等原因导致实例空间满,为避免数据丢失,RDS会对实例进行自动锁定,磁盘锁定之后,将无法进行写入操作。
背景信息
当实例由于实例空间满自动锁定时,控制台可以在 基本信息 > 运行状态看到如下信息:
本文将介绍造成实例空间满的常见原因及其相应的解决方法。
常见原因
造成 MySQL实例空间满的主要有如下四种原因:
•数据文件占用高。
•Binlog 文件占用高。
在没有正确设置本地日志设置或不希望Binlog日志被强制删除时,可能会由于大事务导致Binlog日志暴增。
•临时文件占用高。
通常导致临时文件占用高的原因是由于查询语句的排序、分组、关联表产生的临时表文件,或者大事务未提交前产生的binlog cache文件。
•系统文件占用高。
系统文件涉及到ibdata1系统表的空间文件和ib_logfile0、ib_logfile1日志文件。
InnoDB 引擎表由于支持多版本并发控制(MVCC),因此会将查询所需的 Undo 信息保存在系统文件 ibdata1 中。如果存在对一个 InnoDB 表长时间不结束的查询,而且在查询过程中表有大量的数据变化,则会生成大量的 Undo 信息,导致 ibdata1 文件尺寸增加。由于 MySQL 内部机制的限制,ibdata1 文件目前是不支持收缩的。
ib_lo