Mysql二进制日志清理

7 篇文章 0 订阅

背景

定期清理过大的binlog文件,释放磁盘空间

写在前面

本篇主要内容来自以下链接,次要内容来自博主 https://www.fordba.com/mysql%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%97%a5%e5%bf%97%e7%9a%84%e6%b8%85%e7%90%86.html

lnk

请不要随便reset master或是reset slave

清理binlog的方法

以下按照常用顺序排序

  1. PURGE MASTER LOGS
  2. expire_logs_days
  3. 手动删除
  4. reset master

PURGE LOGS

PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';
PURGE BINARY LOGS TO 'mysql-bin.010';
表示删除mysql-bin.010之前的binlog,
但是不包括mysql-bin.010
PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';

表示删除2008-04-02 22:46:26这个时间点以前的binlog
将时间点所在binlog以前的binlog文件删掉了
(也不包括时间点所在的binlog文件)
#(原作者举例的场景)
这种场景,我们的磁盘快满了,binlog占了绝大部分磁盘,
这时主库还有部分binlog没有发送给备库,如果莽撞的删除所有binlog
并不合适,会把从库搞坏,如果我们心中有数,一般主库不会积累两个小
时的binlog不发送从库,那么也就是说我们只要保留两个小时的binlog,
从库也就安全,这时,基于时间点的purge binlop作用就发挥出来了,
它可以自动帮我们找到时间点所在binlog文件,并帮我们做出安全的清理,
保证时间点以后的binlog都在。

expire_logs_days

指定过期天数,expire_logs_days参数可以指定保留binlog的天数。

1.这个参数只要保证binlog能够都发送到从库,
2.并且binlog要保留时间要大于两次备份时间。(空间允许可以适当增大保留时间)

触发mysql去自动清理expire_logs_days

A.重启mysql
B.手动执行flush logs;
C.当binlog的尺寸大到max_binlog_size,发生一次binlog切换

手动删除

需要删除binlog.000004号binlog。那我们在shell命令行删除即可:
rm -rf binlog.000004

编辑binlog的index文件
vim binlog.index

删掉binlog.000004这行
./binlog.000005

flush一下(如果不flush,信息不会更新)
flush logs;
show binary logs;

reset master

(最好不要使用)只适用:修复主从,或者带GTID的全库导入。

reset slave all; # 完全清空 slave 复制信息
reset master; # 清空本机上 master 的位置信息(给原主库同步此原从库做准备)

原作者博文首页
https://www.fordba.com/
link
本文说明,主要技术内容来自互联网技术大佬的分享,还有一些自我的加工(仅仅起到注释说明的作用)。如有相关疑问,请留言,将确认之后,执行侵权必删

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值