MySQL binlog日志清理 保存时效

本文详细介绍了如何通过修改my.cnf配置永久设置MySQL binlog日志清理策略,包括设置最大大小和过期天数,以及临时情况下手动清理的方法,涉及变量设置、查看与刷新步骤。同时涵盖过期删除机制及其检查流程。

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

日志清理方法

一:永久策略,自动清理

  • 修改my.cnf配置文件,设置清理策略,binlog日志大小
# 编辑my.cnf配置,加入下面的内容
max_binlog_size = 277M           # 设置binlog日志的大小为500M
expire_logs_days = 30            # 设置日期的过期时间,大于30天的日志自动清理
  • 重启mysql服务

二:临时策略,手动清理

  • 进入mysql进行清理
mysql -u root -p

-- mysql8.0 以下版本
show variables like 'expire_logs_days';
# 默认为0,表示永不过期; 此参数最大值为90Days
set global expire_logs_days = 60;

-- mysql8.0 以上版本
# 以秒为单位,默认2592000 30天   14400   4小时;86400  1天;259200  3天
show variables like '%binlog_expire_logs_seconds%;
set global binlog_expire_logs_seconds=259200;

-- 刷新logs日志
flush logs;

过期删除的策略

MySQL_binlog过期删除策略

  • MySQL是根据binlog文件的操作系统最近修改时间,来判断binlog是否过期
  • 在触发MySQL过期删除时,MySQL先检查bin.index文件,找到目前最老的binlog*,然后检查该文件的系统时间,会有如下两种情况:
    • 如果发现该文件未过期,则认为目前没有binlog日志过期,不进行删除,即使此时有其他binlog已过期。
    • 如果发现该文件已经过期,则会找下一个binlog,判断是否过期,同样存在两种情况(过期或者未过期),如此往复,直到找到第一个过期的binlog 即停止继续查找,并删除该binlog及所有该binlog之前的所有日志

用到的数据库命令汇总

-- 查看binlog列表
show binary logs;

-- mysql 8.0 版本以上
show variables like '%binlog_expire_logs_seconds%';
set global binlog_expire_logs_seconds=259200;

-- mysql 8.0 版本以下
show variables like 'expire_logs_days';
set global expire_logs_days = 90;

-- 刷新logs日志
flush logs;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Richie-Hao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值