关于purge master logs的一个小实验

原理部分来自《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(如下图):

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

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

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

时间: 2024-08-30 15:33:47

关于purge master logs的一个小实验的相关文章

关于rownum的一个小实验

以前一直有个疑惑,例如sql:select * from test where object_name='YANG' and rownum=1;那么该sql是把所有的object_name='YANG'全部都找出来显示一行给我呢,还是只找到一行了就停止再找?话不多说,做个小实验: 1.构造一张表create table test as select * from dba_objects; 2.将表的第一行作个更改update test set object_name='YANG' where o

json小实验

看了汤姆大叔的博客http://www.cnblogs.com/TomXu/archive/2012/01/11/2311956.html 博客原文: 我认为很多JavaScript开发人员都错误地把JavaScript对象字面量(Object Literals)称为JSON对象(JSON Objects),因为他的语法和JSON规范里描述的一样,但是该规范里也明确地说了JSON只是一个数据交换语言,只有我们将之用在string上下文的时候它才叫JSON. // 这是JSON字符串 var fo

一个电磁感应小实验

手头有一个坏的音响,测试放大电路没有什么问题,所以变改造了一下.做了一个电磁感应的小实验.图片如下:    原理简介: 音响本身就是一个信号放大器,所以这里我用电脑声卡输出正弦信号,经过放大到线圈输出.电磁感应,另外一个线圈便会产生电压,可以驱动一个发光二极管. 这里是 matlab 产生正弦声波的程序(来自网络): 1 Fs = 44100;%采样频率 2 T = 4; %时间长度 3 n = Fs*T;%采样点数 4 f = 40000;%声音频率 5 y = sin(2*pi*f*T*li

一个小软件练习了一下python

朋友用python写了一个小软件,刚好没有怎么认真用python编过程序,于是就改进一下 主要练习了一些知识: 1.python Tkinter 页面布局,这次软件用了用了grid 2.Event 事件绑定 3. 字符串的处理. 4.tkFileDialog 的使用 5.一点点面向对象的编程. 6.python编码的结构以及练习Code好习惯 后期改进: 1. 加滚动条 2. 加算法变换文件 3. 可以修改保存路径 4.强化错误处理 5.添加函数,根据类型,用office直接双击打开转换成功的文

DCDC纹波小实验

关于使用示波器测试纹波的注意事项 使用示波器的AC耦合方式测量 由于示波器的头套容易引人噪声,因此在测试前必需把探头的头套去掉 因为电源的高频噪声很容易通过小电感就可以滤掉,因此更关心的是中低频的噪声.测试时将示波器的带宽限制调到尽可能的低(20MHz),避免从表笔引入噪声(我之前就吃过这方面的亏) DCDC后端接LDO AMS1117-5V的Datasheet上要求的最低压差(VIN-VOUT)为1.1V到1.25V,这就要求输入要大于5V+1.1V=6.1V,如果输入不满足这个条件会怎么样呢

留言本小实验

实验目的: 利用PHP实现发布留言,并存在txt文本文件中,还可以从文本文件中读取留言,并显示在网页上. 实验代码: 先要用个表单提交留言,写一个简单的html如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2 <html xmlns="http://www

ES6小实验-let和const(2)

继续小实验,上次写到块级作用域,那么为什么需要块级作用域呢?书中给了两个场景: 1.没有块级作用域,内层变量可能会覆盖外层变量.举例: var tmp = new Date() function f() { console.log(tmp) if(false) { var tmp = "hello world" } } f();//undefined 内层的tmp变量把外层的tmp变量覆盖,所以输出结果为undefined 2.用来计数的循环变量泄露为全局变量,举例: var s =

关于用addr2line解析函数地址的一个小探索

最近知道用dmesg和addr2line配合能定位出段错误的具体行.于是自己做了个小实验,在试验中发现,这个办法有时候也是不灵光的,具体取决于段错误的类型. 我写的小程序: 编译之后运行出现段错误,先用dmesg命令找到出错的地址,再用addr2line定位行数,发现定位失败了.看来这种段错误用这种方法是不可行的. 以下是从网上找到的内容: Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名.函数名和源代码行数的工具. dm

Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决

原文:Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决 最近一直在开发XX的uwp版本,也是边摸索边做,最近遇到几个比较奇怪的问题,记录于此. 1.项目可用部署到PC,但无法部署到手机,提示以下错误: 错误 : DEP0001 : 意外错误: Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9 为了方便开发,我将常用的类库引用好.默认的几个页面做