解决阿里云数据库MySQL实例空间满自动锁问题
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访问您的云资源信息页面单击确定,并在弹出的云资源访问授权页面单击同意授权。
4.在库表空间 > 空间概况中找到空间变化趋势图,查看具体的空间占用情况。
我有话说: