关于purge master logs的一个小实验

本文详细介绍了MariaDB中Binlog的Purge机制过程,包括如何检查、创建及更新相关文件来确保安全删除不再使用的Binlog文件。此外,通过实验验证了在从库正在读取Binlog的情况下,主库无法完全清理Binlog。

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

原理部分来自《MariaDB原理与实现》 Page109-111


purge删除binlog的过程如下:

1、检查to_log在mysql-bin.index中是否存在,避免非法的purge操作

2、创建一个purge_index_file,用于保存待删除的binlog文件名称

3、遍历index文件,将可删除的binlog添加到purge_index_file中(purge删除时候,只会把未使用到的binlog之前的文件删除掉)

4、将purge_index_file的内容写入到磁盘

5、更新mysql-bin.index文件,将待删除的binlog文件名从index文件中删除掉

6、删除所有待删除的binlog文件

7、删除purge_index_file文件



实验在主库上能否删除从库正在读取的binlog:

1、在从库上stop slave 暂停复制。

2、主库上造几个大的binlog,并多次flush logs切割下binlog。

3、在从库上start  slave 开启复制。

4、在主库上执行purge master logs 操作清理掉全部的binlog(如下图):

7576132b6ac11c0294ad62bf1db6e449.png

上图中间部分,我们可以看到purge操作有一个warning。并且最终清理掉的binlog没有我们预期的效果。


下图是主库中记录的关于purge的警告信息:

c32925ac341618454fbc9dd8555c262a.png

可以清楚的看到:从库的IO线程正在读取文件的情况下,主库purge master 不会全部清理binlog。










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1978555,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值