清理前后比对
清理前占用 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"