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

背景信息

当实例由于实例空间满自动锁定时,控制台可以在 基本信息 > 运行状态看到如下信息:
实例空间满自动锁

本文将介绍造成实例空间满的常见原因及其相应的解决方法。

常见原因

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

  • 数据文件占用高。
  • Binlog 文件占用高。

    在没有正确设置本地日志设置或不希望Binlog日志被强制删除时,可能会由于大事务导致Binlog日志暴增。

  • 临时文件占用高。

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

  • 系统文件占用高。

    系统文件涉及到ibdata1系统表的空间文件和ib_logfile0、ib_logfile1日志文件。

    InnoDB 引擎表由于支持多版本并发控制(MVCC),因此会将查询所需的 Undo 信息保存在系统文件 ibdata1 中。如果存在对一个 InnoDB 表长时间不结束的查询,而且在查询过程中表有大量的数据变化,则会生成大量的 Undo 信息,导致 ibdata1 文件尺寸增加。由于 MySQL 内部机制的限制,ibdata1 文件目前是不支持收缩的。

    ib_logfile0和ib_logfile1日志文件保存InnoDB引擎表的事务日志信息,其文件大小尺寸固定,不可以改变。

查看空间使用状况

当发现实例空间满锁定时,首先您可以通过混合云数据库管理平台来查看实例空间的使用情况,了解具体是什么文件占用过大。

  1. 通过 DMS登录数据库
  2. 选择性能 > 空间,跳转到混合云数据库管理平台(Hybrid Cloud Database Management,HDM)。
    说明 对于第一次进入的用户需要对HDM进行授权,若已授权,请跳到第4步。
  3. 授权HDM访问您的云资源信息页面单击确定,并在弹出的云资源访问授权页面单击同意授权
    授权HDM访问云资源
    云资源访问授权
  4. 库表空间 > 空间概况中找到空间变化趋势图,查看具体的空间占用情况。
    空间变化趋势图

解决方法