
# Binlog未清理导致磁盘占用高
#### 场景描述
只读实例或主实例磁盘占用高，通过执行**SHOW BINARY LOGS** 或**SHOW MASTER LOGS**，和其他实例对比发现，大量老的Binlog文件未被清理，导致磁盘占用很高。
#### 原因分析
正常情况下，设置了[Binlog过期时间](https://support.huaweicloud.com/usermanual-rds-mysql/rds_05_0037.html)，当Binlog备份至OBS，且超过过期时间后，会自动清理，如果长时间未清理，需考虑是否有其他复制异常因素导致。
排查思路：
1. [查看MySQL的错误日志](https://support.huaweicloud.com/usermanual-rds-mysql/rds_mysql_error_log.html)，查找是否有类似无法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拉取任务。
 
