文档首页/ 云数据库 RDS/ 故障排除/ RDS for MySQL/ 性能资源类/ Binlog未清理导致磁盘占用高
更新时间:2022-10-26 GMT+08:00

Binlog未清理导致磁盘占用高

场景描述

只读实例或主实例磁盘占用高,通过执行SHOW BINARY LOGSSHOW MASTER LOGS,和其他实例对比发现,大量老的Binlog文件未被清理,导致磁盘占用很高。

原因分析

正常情况下,设置了Binlog过期时间,当Binlog备份至OBS,且超过过期时间后,会自动清理,如果长时间未清理,需考虑是否有其他复制异常因素导致。

排查思路:

  1. 查看MySQL的错误日志,查找是否有类似无法purge binlog的日志记录。
    2022-01-18T05:39:03.139207+08:00 29 [Warning] file ./mysql-bin.106259 was not purged because it was being readby thread number 27490757 
  2. 分析是否有本地搭建复制关系、使用canal等工具监听该实例的Binlog,当主库未收到对应Binlog已被从库或工具获取的信息,会导致对应Binlog不被删除,导致Binlog积压。
  3. 结合1中的异常binlog purge记录,分析本地从库或canal工具相应日志,排查网络状况等原因确认Binlog未被清理的原因。

解决方案

  • 暂时停止该实例的其他Binlog监听任务,让该实例自动清理Binlog。
  • 如果有本地从库,重新搭建复制关系。
  • 如果使用canal等工具,重新建立Binlog拉取任务。