关于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(如下图):

7576132b6ac11c0294ad62bf1db6e449.png

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


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

c32925ac341618454fbc9dd8555c262a.png

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










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1978555,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
SQL 监控 关系型数据库
Mysql主从同步报错解决:Error executing row event: Table zabbix.history-..
Mysql主从同步报错解决:Error executing row event: Table zabbix.history-..
|
4月前
|
关系型数据库 数据库
Harbor断电重启postgres报错 could not locate a valid checkpoint record
Harbor断电重启postgres报错 could not locate a valid checkpoint record
189 0
|
关系型数据库 MySQL 数据库
主从同步设置的重要参数log_slave_updates
说明:最近部署了mysql的集群环境,详细如下M01和M02为主主复制,M01和R01为主从复制;在测试的过程中发现了以下问题: 1、M01和M02的主主复制是没有问题的(从M01写入数据能同步到M02,从M02写入数据能够同步到M01); 2、主从同步的时...
1883 0
|
10月前
|
canal 关系型数据库 MySQL
Canal需要执行 `show master status` 命令来获取主库的binlog文件名和位置
Canal需要执行 `show master status` 命令来获取主库的binlog文件名和位置
265 1