mysql二进制日志清除方法汇总

发布时间:2020-01-02编辑:脚本学堂
有关mysql二进制日志文件的清除方法,彻底删除mysql二进制日志文件如何做到,这里分享三种方法,reset master、purge master logs与指定自动清理日志的参数。

mysqlerjinzhirizhi/ target=_blank class=infotextkey>mysql二进制日志文件如何删除?

查看二进制日志列表:
 

mysql> SHOW MASTER LOGS;

有如下三种方法,可以彻底删除掉mysql二进制日志文件,注意二进制日志的安全删除方法。

一、RESET MASTER方法
验证首次配置主机备机是否成功、步骤如下:
1,启动master和 slave,开启replication (即 复制)
注:replication (复制) 也是mysql一个重要的技术

2,运行一些测试的语句看数据是否能够复制到 slave上面

3,复制运行正常时,stop slace,然后在slave上执行 reset slave,去掉不需要的数据

4,在master上执行reset master 去掉2中产生的数据

可以删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个新的二进制日志文件,当有slave正在运行的时候请不要执行这个语句。
和 PURGE MASTER LOGS 的区别有2点:

1,当执行 RESET MASTER 的时候 所有二进制日志 都重新设置为空 以 .000001 编号结尾的文件都被清空
而PURGE MASTER LOGS 却没有重置

2,RESET MASTER 有备机正在运行的时候不能执行 而 PURGE MASTER LOGS  是可以执行的。

注意:RESET 这个命令要慎用,只是在初始化环境,删除垃圾数据时使用。
正在运行的库,最好不要执行。

二、PURGE MASTER LOGS
语法
PURGE {MASTER | BINARY} LOGS TO 'log_name'   --用于删除指定的日志
PURGE {MASTER | BINARY} LOGS BEFORE 'date'  --用于删除日期之前的日志,BEFORE变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式
如:(MASTER 和BINARY 在这里都是等效的)
PURGE MASTER LOGS TO 'test-bin.000001';  
PURGE MASTER LOGS BEFORE '2011-01-0100:00:00';
如果有一个活性的slave,该slave当前正在读取您正在master试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误;
如果slave是停止的,同时碰巧要清理的日志是其想要读取的日志之一,则salve启动后不能复制这些日志;
当slave正在复制时,本语句可以安全运行。您不需要停止它们。

清理日志的步骤:
1、在slave上,使用show slave status来检查它正在读取哪个日志。
2、使用show master logs获得master上的一系列日志。
3、在所有的slave中判定最早的日志。这个是目标日志。如果所有的slave是更新的,这是清单上的最后一个日志。
4、将所有要删除日志的备份

三,指定自动清理日志的参数
my.cnf 配置文件中的参数  expire_logs_days  默认值为0,表示“不要自动删除”
启动时和二进制日志循环时可能删除
语法:mysql -u -p进去之后

执行:
 

set GLOBAL expire_logs_days=5;

注意,设置完成,并示生效,执行以下步骤:
1、执行

flush logs;
 

(关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。)

2、等待当前日志文件写满设定的大小(重启服务器可选)
 

expire_logs_days=5   --表示自动删除5天以前的日志

备注:存在备份数据库机器时,注意master对slave的影响。