Article / 文章中心

解决阿里云数据库MySQL实例空间满自动锁问题的方法

发布时间:2019-08-09 点击数:1854

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

背景信息

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

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

见原因

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

•数据文件占用高。

Binlog 文件占用高。

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

•临时文件占用高。

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

•系统文件占用高。

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

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

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

查看空间使用状况

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

1.通过 DMS登录数据库。

2.选择性能 > 空间,跳转到混合云数据库管理平台(Hybrid Cloud Database ManagementHDM)。

说明 对于第一次进入的用户需要对HDM进行授权,若已授权,请跳到第4步。

3.在授权HDM访问您的云资源信息页面单击确定,并在弹出的云资源访问授权页面单击同意授权。

4.在库表空间 > 空间概况中找到空间变化趋势图,查看具体的空间占用情况。


解决方法

数据文件导致实例空间满的解决办法

Binlog文件导致实例空间满的解决办法

临时文件导致实例空间满的解决办法

系统文件导致实例空间满的解决办法

阿里云服务器 阿里云代理商