mysql binlog日志清理
young / / / 阅读量

简介:

如果你的 Mysql 搭建了主从同步 , 或者数据库开启了 log-bin 日志 , 那么随着时间的推移 , 你的数据库 data 目录下会产生大量的日志文件

-rw-r----- 1 sddx sddx 1.1G Nov  2 11:36 mysql1-bin.000381
-rw-r----- 1 sddx sddx 1.1G Nov  2 18:27 mysql1-bin.000382
-rw-r----- 1 sddx sddx 1.1G Nov  3 01:13 mysql1-bin.000383
-rw-r----- 1 sddx sddx 1.1G Nov  3 10:55 mysql1-bin.000384
-rw-r----- 1 sddx sddx 1.1G Nov  3 17:50 mysql1-bin.000385
-rw-r----- 1 sddx sddx 1.1G Nov  3 23:49 mysql1-bin.000386
-rw-r----- 1 sddx sddx 1.1G Nov  4 09:49 mysql1-bin.000387
-rw-r----- 1 sddx sddx 1.1G Nov  4 16:40 mysql1-bin.000388
-rw-r----- 1 sddx sddx 1.1G Nov  4 22:08 mysql1-bin.000389
-rw-r----- 1 sddx sddx 1.1G Nov  5 08:53 mysql1-bin.000390
-rw-r----- 1 sddx sddx 1.1G Nov  5 16:05 mysql1-bin.000391
-rw-r----- 1 sddx sddx 1.1G Nov  5 21:35 mysql1-bin.000392
-rw-r----- 1 sddx sddx 1.1G Nov  6 08:23 mysql1-bin.000393
-rw-r----- 1 sddx sddx 1.1G Nov  6 15:38 mysql1-bin.000394
-rw-r----- 1 sddx sddx 1.1G Nov  6 21:07 mysql1-bin.000395
-rw-r----- 1 sddx sddx 1.1G Nov  7 07:54 mysql1-bin.000396
-rw-r----- 1 sddx sddx 1.1G Nov  7 15:32 mysql1-bin.000397
-rw-r----- 1 sddx sddx 1.1G Nov  7 21:12 mysql1-bin.000398
-rw-r----- 1 sddx sddx 1.1G Nov  8 08:04 mysql1-bin.000399
-rw-r----- 1 sddx sddx 1.1G Nov  8 15:15 mysql1-bin.000400
-rw-r----- 1 sddx sddx 1.1G Nov  8 20:56 mysql1-bin.000401
-rw-r----- 1 sddx sddx 1.1G Nov  9 07:51 mysql1-bin.000402

清理

生产环境中这些文件如果不做处理的话,甚至会撑爆你的磁盘

下面来介绍几种解决方法:

没有主从

如果你的数据库没有搭建主从同步这样的服务 , binlog 日志也不用的情况下 , 你可以将 /etc/my.cnf 文件下面行删除或注释掉
log-bin=mysql-bin
如果你需要这样的文件 , 那么建议你在主配置文件 /etc/my.cnf 中添加如下行 , 来限制 binlog 日志文件存在时间 , 过期自动删除
expire_logs_days = 7 # 只保留 7 天的日志文件

如果你直接得到一台服务器 , 上面的 binlog 日志已经影响到了磁盘空间 , 那么你将使用下面命令清除

# 清空所有 binlog 文件
reset master; 

有主从

如果你的得到的服务器 , mysql 还做了主从同步 , 那么上面的命令就不适合你了 , 因为 binlog 文件删除过多的话 , 会导致数据不同步

# 你首先要来 slave 上查看从库读 binlog 到了哪里 
mysql> show slave status\G 
# 我们可以看到是 mysql-bin.000009
Master_Log_File: mysql-bin.000009 
# 我们可以在 master 中执行这条指令 , 将 binlog 文件删除至 mysql-bin.000009 前
mysql> purge master logs to 'mysql-bin.000009'; 
# 将 binlog 文件删除至此日期前
mysql> purge master logs before '2014-11-18 00:00:00'; 

修改保留天数

my.cnf需要重启才生效,配合动态修改使用

#设置清除日志时间
expire_logs_days=7

动态修改

# 不用重启即可生效,但重启后失效
mysql> set global expire_logs_days=10;
支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章