Mysql binlog目录满导致mysql hang住处理

Mysql binlog目录满导致mysql hang住处理

背景介绍:
某系统是非交易型做考核统计,使用mysql 5.7 两个物理机做HA数据库放共享存储上面,binlog日志保留7天。
相关目录大小如下:
/data 1.8T
/binlog 148G
架构如下:
在这里插入图片描述
binlog目录使用率100%:
上线一段时间后,某天系统管理员反应说mysql binlog目录满了,系统没有前端系统没有响应了。

处理过程:

登录系统
df -h
/binlog 使用率达到了100%。原因是系统最近临时跑批处理了一个月的批处理,导致binlog目录使用率迅速增长。

通过mysql 高权登录到数据库中,想通过purge命令清除binlog日志。
执行
show master logs;
没有响应…

想通过purge命令清理不行,此时数据库已经hang住。

因为已经接入nbu备份每天全量备份数据库,同时相关的binlog也备份。
通过mysql 命令清除日志不行,尝试通过系统命令先把几个binlog 日志mv 到/tmp目录下面。
cd /binlog
ls -lrt
将现有最早的几个日志
mv mysql-bin.0000108 /tmp
mv mysql-bin.0000109 /tmp
mv mysql-bin.0000110 /tmp

df -h
发现/binlog 释放了1.5G空间

此时再登录到数据库
执行
show master logs;
瞬间结果就出来
Log_name File_size
mysql-bin.0000… …

此时已经可以执行mysql 命令,保留最近10个binlog日志,其余全部删除。
PURGE BINARY LOGS TO ‘mysql-bin.0000***’;

此时再df -h,/binlog日志目录已经释放。

注意事项:
请用mysql purge清理日志,因为通过purge清理了binlog日志文件同时也更新了binlog索引文件mysql-bin.index,如果
用系统命令清理binlog但不会更新mysql-bin.index,所以遇到上述情况可先使用系统命令,释放部分空间
然后务必再使用mysql purge命令清除日志,清除的范围包括使用系统命令移除的日志。

后续处理:
先扩容,后续经讨论将binlog 日志保留天数调整为3天。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值