Binlog日志清理

文章介绍了在遇到Mysql测试环境磁盘空间不足,由于binlog日志过大导致的问题。提出了三种处理方法:1)设置expire_logs_days参数自动删除旧日志;2)使用PurgeMasterLogs命令安全地手动删除;3)执行RESETMASTER清除所有binlog日志。在生产环境中,执行删除操作前需先备份数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景
近期发现测试环境的Mysql数据库一直磁盘爆满,查看数据目录发现binlog日志很多很大,特记录处理过程。

二、查看所有binlog日志

show binary logs;

三、3种处理方式
3.1 自动删除(永久配置)

cat /etc/my.cnf
expire_logs_days = 2		
#保留最近2天的binlog文件;expire_logs_days 为binlog过期时间,默认值为0,表示“永不过期”,重启数据库生效

临时生效:

show variables like 'expire_logs_days';
set global expire_logs_days=1;

设置之后不会立即清除,触发条件是:
1)binlog大小超过 max_binlog_size
2)手动执行flush logs
3)重新启动时(MySQL 将会new一个新文件用于记录binlog)

3.2 手动删除(安全处理)
purge会更新mysql-bin.index中的条目,而直接删除的话,mysql-bin.index文件不会更新。mysql-bin.index的作用是加快查找binlog文件的速度

#清除MySQL-bin.010日志
PURGE MASTER LOGS TO 'MySQL-bin.010';

#清除2008-06-22 13:00:00前binlog日志
PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';

#清除3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。
PURGE MASTER LOGS BEFORE DATE_SUB( NOW(), INTERVAL 3 DAY);

3.3 RESET MASTER; #该命令将删除所有BINLOG日志

注:生产环境需要先备份数据后再执行删除操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值