问题描述

MySQL实例可能会由于SQL语句、外部攻击等原因导致实例空间满,为避免数据丢失,RDS会对实例进行自动锁定,磁盘锁定之后,将无法进行写入操作。可在控制台的 基本信息 > 运行状态 页面确认实例是否已自动锁定。 

如何排查MySQL实例空间满后自动锁定的原因_性能/空间/内存_常见问题_云数据库 RDS 版 阿里云技术文档 第1张

 

问题原因

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

  • 数据文件占用高。
  • Binlog文件占用高。在没有正确设置本地日志设置或不希望Binlog日志被强制删除时,可能会由于大事务导致Binlog日志暴增。
  • 临时文件占用高。通常导致临时文件占用高的原因是由于查询语句的排序、分组、关联表产生的临时表文件,或者大事务未提交前产生的Binlog缓存文件。
  • 系统文件占用高。系统文件涉及到ibdata1系统表的空间文件和ib_logfile0、ib_logfile1日志文件。InnoDB引擎表由于支持多版本并发控制(MVCC),因此会将查询所需的Undo信息保存在ibdata1系统文件中。如果存在对一个InnoDB表长时间不结束的查询,而且在查询过程中表有大量的数据变化,则会生成大量的Undo信息,导致ibdata1文件体积增加。
    注:由于MySQL内部机制的限制,ibdata1文件目前是不支持收缩的。ib_logfile0和ib_logfile1日志文件保存InnoDB引擎表的事务日志信息,其文件大小体积固定,不可以改变。

 

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

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

  1. 通过DMS登录数据库
  2. 选择 性能 > 空间,跳转到混合云数据库管理平台(Hybrid Cloud Database Management,HDM)。
  3. 授权HDM访问您的云资源信息页面单击 确定,并在弹出的云资源访问授权页面单击 同意授权
    注:对于第一次进入的用户需要对HDM进行授权,若已授权,请跳到第4步。
    如何排查MySQL实例空间满后自动锁定的原因_性能/空间/内存_常见问题_云数据库 RDS 版 阿里云技术文档 第2张
    如何排查MySQL实例空间满后自动锁定的原因_性能/空间/内存_常见问题_云数据库 RDS 版 阿里云技术文档 第3张
  4. 选择 库表空间 > 空间概况找到 空间变化趋势,查看具体的空间占用情况。
    如何排查MySQL实例空间满后自动锁定的原因_性能/空间/内存_常见问题_云数据库 RDS 版 阿里云技术文档 第4张

 

解决方法

根据上述的排查方法,确认问题原因,选择对应的解决方法。

 

适用于

  • 云数据库 RDS MySQL 版

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。