MySQL实例可能会由于SQL语句、外部攻击等原因导致实例空间满,为避免数据丢失,RDS会对实例进行自动锁定,磁盘锁定之后,将无法进行写入操作。

问题描述

阿里云RDS MySQL版实例由于外部攻击、插入数据多等原因导致实例磁盘空间满,为避免数据丢失,实例会自动锁定,且无法进行写入操作,导致在实例详情页面的运行状态为“锁定中”。 锁定中

常见原因

造成实例空间满的主要原因有以下四种:

  • 数据文件磁盘空间占用高。
  • 日志文件磁盘空间占用高。

    在没有正确设置日志备份策略时,可能会由于大事务SQL导致日志增长较快。

  • 临时文件磁盘空间占用高。

    通常导致临时文件占用高的原因是由于查询语句的排序、分组、关联表产生的临时表文件,或者大事务未提交前产生的日志缓存文件。

  • 系统文件磁盘空间占用高。
    系统文件涉及到ibdata1系统表的空间文件和ib_logfile0、ib_logfile1日志文件。InnoDB引擎表由于支持多版本并发控制(MVCC),因此会将查询所需的Undo信息保存在ibdata1文件中。如果存在对一个InnoDB表长时间不结束的查询,而且在查询过程中表有大量的数据变化,则会生成大量的Undo信息,导致ibdata1文件体积增加。
    说明 由于MySQL内部机制的限制,ibdata1文件目前不支持收缩。ib_logfile0和ib_logfile1日志文件保存InnoDB引擎表的事务日志信息,其文件大小体积固定,不可以改变。

解决办法

执行以下步骤,定位问题并按照对应的解决方法处理:
  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏中单击监控与报警。查看占用存储空间的主要文件类型。jkbj
  3. 选择对应的解决方法:
    说明 清理磁盘空间后,需要耐心等待一段时间(5分钟左右),RDS实例才会解锁。