RDS MySQL实例内Binlog日志磁盘使用率过高

更新时间:

问题描述

RDS MySQL实例内Binlog日志磁盘使用率过高,磁盘空间已满导致实例被锁定,RDS无法进行读和写操作,从而影响业务。

问题原因

Binlog日志占用实例空间过高,主要为以下原因所导致:

  • 应用端存在大量的读和写请求,从而导致RDS数据库产生了大量的事务操作和Binlog日志文件。
  • 应用业务中存在大事务,产生了较多的Binlog日志。
  • 进程占用Binlog日志会导致清理程序异常,无法及时清理Binlog。

解决方案

  1. 登录RDS管理控制台,选择目标实例所在地域,单击目标实例ID,进入基本信息页面。
  2. 在左侧导航栏中,选择备份恢复 ,进入备份恢复页面。
  3. 选择一键上传Binlog,将Binlog日志上传到OSS中,待Binlog日志上传成功之后,将本地的Binlog日志删除。

更多信息

以下内容为Binlog日志的生成机制和清理规则。

实例内生成Binlog日志的规则

  • 通常情况下,当前Binlog大小超过500MB时会切换到下一个序号文件继续写入,即写满500MB就会生成新的Binlog日志文件。新的Binlog文件将继续写入,之前的Binlog文件并不会立刻上传到OSS中,会使用异步上传的方式上传到OSS中。
  • 如果Binlog文件大小不满500MB就不再写入,可能是由于命令的执行、系统重启等原因。
  • 当出现Binlog文件大小超过500MB的情况,例如在执行大事务,不断写入Binlog导致当前Binlog文件大小超过500MB。

实例内清理Binlog日志的规则

  • 实例内默认会保存最近18个小时内的Binlog文件。
  • 当实例空间小于70%时,系统会保存18小时内的Binlog,即使该Binlog文件已经上传到OSS中。
  • 当实例空间大于70%时,Binlog会在上传到OSS后,发起删除本地数据的请求,但是本地删除会有任务调度有一定延迟。
  • Binlog文件上传到OSS后,才可以在RDS管理控制台中显示。

如果由于磁盘空间满而导致RDS实例被锁定,无法进行数据库的读写操作,严重影响业务,可以提交工单,请阿里云技术支持解除对RDS实例的临时锁定,恢复业务的使用。然后客户通过在RDS控制台清理Binlog日志或删除无用的历史数据来释放磁盘空间。

适用于

  • 云数据库RDS MySQL版