清理前后比对
清理前占用 86%
:
清理后占用 29%
:
排查占用磁盘较大的文件
检测磁盘空间占用 TOP 10
# 检测磁盘空间占用 TOP 10
$ sudo du -S /var/log/ |
> sort -rn | # -n选项允许按数字排序。-r选项会先列出最大数字(逆序)
> sed '{11,$D; =}' | # = 加入行号;11,$D:删除11行之后的内容
> sed 'N; s/\n/ /' | # N 让行号和磁盘空间文本位于同一行
> gawk '{printf $1 ":" "\t" $2 "\t" $3 "\n"}'
可以看到/var/lib/mysql
目录占用较大,该文件用于存储 MySQL 数据文件。
[root@hostname ~]# du -S / | sort -rn | sed '{11,$D; =}' | sed 'N; s/\n/ /' | gawk '{printf $1 ":" "\t" $2 "\t" $3 "\n"}'
1: 21181696 /var/lib/mysql
2: 2609180 /var/lib/mysql/gvm
3: 719736 /usr/sbin
4: 572516 /usr/bin
5: 328404 /usr/lib64/mysql
6: 251264 /var/cache/yum/x86_64/7/updates/gen
7: 149844 /root/tomcat/upload/assetVul/testReport
8: 149844 /root/20230712bak_tomcat/upload/assetVul/testReport
9: 132532 /usr/lib/firmware
10: 131284 /usr/lib64
再查看下/var/lib/mysql
目录中mysql-bin.0*
文件比较多,而且占用很多磁盘空间。
这些文件是用于记录 MySQL 数据库的操作行为,用于数据恢复和主从数据同步。
在机器的磁盘空间不足,而又不考虑 MySQL 历史数据恢复的情况下可以删除;
[root@hostname ~]# du -sh /var/lib/mysql/* | sort -rn | sed '{11,$D; =}' | sed 'N; s/\n/ /' | gawk '{printf $1 ":" "\t" $2 "\t" $3 "\n"}'
1: 831M /var/lib/mysql/mysql-bin.000005
2: 799M /var/lib/mysql/mysql-bin.000004
3: 786M /var/lib/mysql/mysql-bin.000022
4: 680K /var/lib/mysql/sys
5: 647M /var/lib/mysql/mysql-bin.000009
6: 571M /var/lib/mysql/mysql-bin.000017
7: 492K /var/lib/mysql/mysql-bin.000001
8: 480K /var/lib/mysql/mysql-bin.000002
9: 217M /var/lib/mysql/mysql-bin.000027
10: 182M /var/lib/mysql/mysql-bin.000031
mysql-bin
开头的文件是 MySQL 二进制日志文件的一部分,它们会按照一定的命名规则和序号进行存储,如mysql-bin.000001
、mysql-bin.000002
等。这些文件在 MySQL 数据库运行过程中会不断增长,记录数据库的操作历史。
清理数据
# service mysqld stop
# cd /var/lib/mysql
# rm -rf mysql-bin.0*
# echo > mysql-bin.index # 将删除了的文件名从该文件中删除
# service mysqld start
假如删除的mysql日志文件(mysql-bin.00000*)后,发现mysql启动不了。那么就将mysql-bin.index也删除,然后就可以正常启动了。
如果想不考虑 MySQL 历史数据恢复,可以永久禁止生产二进制日志文件:
# vim /etc/my.cnf
# 注释掉 log-bin=mysql-bin
# service mysqld start
my.cnf
文件所在目录可能不一样,如果不知道my.cnf
文件位置:# find / -name "my.cnf"