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

问题描述

阿里云RDS MySQL版实例由于Binlog文件占满磁盘空间,会导致实例自动锁定,在实例详情页面的运行状态为“锁定中”。且在实例的监控与报警页面磁盘空间图中确认日志空间使用量较高,下图为示例图,具体值以实际环境为准。问题描述

问题原因

MySQL实例可能会由于大事务快速生成Binlog文件,导致实例空间满,为避免数据丢失,会对实例进行自动锁定,磁盘锁定之后,将无法进行写入操作。

解决方案

前提条件

对于RDS MySQL 5.5、5.6、5.7和8.0版本的实例,建议您提前扩容磁盘,保证磁盘使用率不超过80%,扩容方法请参见变更配置

注意事项

执行清理无用本地日志步骤前,请先查看以下注意事项:

  • Binlog文件记录实例的事务信息,是RDS实例高可用和可恢复性的基础,建议不要关闭。可以通过一键上传Binlog功能上传到OSS来释放磁盘空间或者修改本地Binlog设置,详情请参见本地Binlog设置

  • 清理Binlog文件有延迟,请耐心等待实例日志空间使用量的下降。

  • 一键上传Binlog会在后台异步提交清理任务,且清理任务会将已写入的Binlog上传到OSS(非用户购买的OSS)上,然后再从实例空间中删除Binlog文件,当前正在被写入的Binlog文件由于未完成写入,是不可以被清理的。因此,清理过程会有一定延迟,建议您单击一键上传Binlog后耐心等待一定时间,请勿多次单击该按钮,可以在基本信息页中查看磁盘空间是否增大。

  • 由于DML等操作(比如涉及大字段的DML操作)会快速生成Binlog,可能会导致上传Binlog文件到备份空间并且从实例空间中删除的处理速度跟不上实例生成Binlog文件的速度,在这种情况下,建议您考虑升级磁盘空间,并且排查Binlog快速生成的原因。

一键上传Binlog

  1. 登录RDS管理控制台,在页面左上角,选择实例所在地域。

  2. 找到目标实例,单击实例ID。

  3. 在左侧导航栏中单击备份恢复

  4. 在右上角单击一键上传Binlog,在弹出的对话框中单击确定

    说明
    • 一键上传Binlog功能会有一定延迟,请耐心等待15分钟左右。

    • 本操作会删除除最新的两个本地日志文件外的所有日志文件,如果只有两个日志文件,本操作不会删除任何文件。

    • 基础系列实例不支持一键上传Binlog功能,建议您参见后续修改本地日志(Binlog)文件设置删除本地日志。

    一键上传

修改本地日志(Binlog)文件设置

  1. 登录RDS管理控制台,在页面左上角,选择实例所在地域。

  2. 找到目标实例,单击实例ID。

  3. 在左侧导航栏中单击备份恢复

  4. 选择备份设置页签,单击本地日志保留策略后的编辑,根据您的实际情况,设置对应的值。

    说明

    保留时长若设置为0,表示本地不保存Binlog日志,直接上传至OSS。

    修改本地日志

后续维护

若锁定问题已解决,为了预防再次出现锁定问题,建议设置在资源不足时,实例自动扩容存储空间的功能,详情请参见设置存储空间自动扩容

更多信息

更多实例空间满的解决方法请参见如下链接: