由于某种原因,查看磁盘使用情况,居然写满了,查询大文件 find / -type f -size +10M | xargs ls -lh
,发现有几个 iZ2zeas5yzkwntw819wx2mZ-bin.000013、iZ2zeas5yzkwntw819wx2mZ-bin.000014等类似数据库文件,每个文件大小都在1.1G,那么些文件是干吗的?这是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。
这样文件做主要有以下两个作用:
数据恢复
如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。
主从服务器之间同步数据
主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。
处理此类文件方法:
- 如果只有一个mysql服务器,那么在
my.cnf
配置文件中把log-bin
这一行注释掉即可
1 | #log-bin |
然后重启mysql service mysqld restart
(重启的方法其中一种)
- 如果需要mysql主从服务器,最好控制一下这些日志文件保留的天数,在
my.cnf
修改
1 | expire_logs_days = 7 |
表示保留7天的日志,这样老日志会自动被清理掉。然后重启mysql
清理日志方法为:
1 | PURGE MASTER LOGS TO 'iZ2zeas5yzkwntw819wx2mZ-bin.000013'; |
如果你确定从服务器已经同步过了,跟主服务器一样了,那么可以直接RESET MASTER
将这些文件删除。
1 | mysql> reset master; |
好了,我们再来查看下mysql文件夹占用多少空间
1 | [root@iZm5eae8wzyq0xrh8j2i1eZ ~]# du -h --max-depth=1 /data/mysql/3306/ |
整个数据库目录占用3G左右,加上跑了很久和有不少项目的数据库,也差不多了。