更新时间:2023-07-05 GMT+08:00
Binlog未清理导致磁盘占用高
场景描述
只读实例或主实例磁盘占用高,通过执行SHOW BINARY LOGS或SHOW MASTER LOGS,和其他实例对比发现,大量老的Binlog文件未被清理,导致磁盘占用很高。
原因分析
正常情况下,设置了Binlog过期时间,当Binlog备份至OBS,且超过过期时间后,会自动清理,如果长时间未清理,需考虑是否有其他复制异常因素导致。
排查思路:
- 查看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
- 分析是否有本地搭建复制关系、使用canal等工具监听该实例的Binlog,当主库未收到对应Binlog已被从库或工具获取的信息,会导致对应Binlog不被删除,导致Binlog积压。
- 结合1中的异常binlog purge记录,分析本地从库或canal工具相应日志,排查网络状况等原因确认Binlog未被清理的原因。
解决方案
- 暂时停止该实例的其他Binlog监听任务,让该实例自动清理Binlog。
- 如果有本地从库,重新搭建复制关系。
- 如果使用canal等工具,重新建立Binlog拉取任务。
父主题: 性能资源类