MySQL 日志文件 **-bin.** 文件的来源和清理方法

由于某种原因,查看磁盘使用情况,居然写满了,查询大文件 find / -type f -size +10M | xargs ls -lh,发现有几个 iZ2zeas5yzkwntw819wx2mZ-bin.000013、iZ2zeas5yzkwntw819wx2mZ-bin.000014等类似数据库文件,每个文件大小都在1.1G,那么些文件是干吗的?这是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。

这样文件做主要有以下两个作用:

  1. 数据恢复

    如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。

  2. 主从服务器之间同步数据

    主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。

处理此类文件方法:

  1. 如果只有一个mysql服务器,那么在my.cnf配置文件中把log-bin这一行注释掉即可
1
#log-bin

然后重启mysql service mysqld restart (重启的方法其中一种)

  1. 如果需要mysql主从服务器,最好控制一下这些日志文件保留的天数,在my.cnf修改
1
expire_logs_days = 7

表示保留7天的日志,这样老日志会自动被清理掉。然后重启mysql

清理日志方法为:

1
2
PURGE MASTER LOGS TO 'iZ2zeas5yzkwntw819wx2mZ-bin.000013';
PURGE MASTER LOGS BEFORE '2020-10-28 22:00:00';

如果你确定从服务器已经同步过了,跟主服务器一样了,那么可以直接RESET MASTER将这些文件删除。

1
2
3
4
mysql> reset master;
Query OK, 0 rows affected

mysql>

好了,我们再来查看下mysql文件夹占用多少空间

1
2
3
4
5
6
7
8
9
[root@iZm5eae8wzyq0xrh8j2i1eZ ~]# du -h --max-depth=1 /data/mysql/3306/
4.0K /data/mysql/3306/test
41M /data/mysql/3306/powermedia
16M /data/mysql/3306/dlcm
51M /data/mysql/3306/weizan_jiawo
51M /data/mysql/3306/weizan112
636K /data/mysql/3306/performance_schema
25M /data/mysql/3306/mysql
3G /data/mysql/3306/

整个数据库目录占用3G左右,加上跑了很久和有不少项目的数据库,也差不多了。

坚持原创技术分享,您的支持将鼓励我继续创作!
0%