前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于purge master logs的一个小实验

关于purge master logs的一个小实验

作者头像
保持热爱奔赴山海
发布2019-09-17 11:24:43
9800
发布2019-09-17 11:24:43
举报
文章被收录于专栏:数据库相关

原理部分来自《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
7576132b6ac11c0294ad62bf1db6e449.png

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

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

c32925ac341618454fbc9dd8555c262a.png
c32925ac341618454fbc9dd8555c262a.png

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档