排查并解决磁盘满了问题

问题出现背景

  当磁盘上存储大量数据的时候,很容易就会造成磁盘使用率高,影响进程的正常执行

问题解决办法

 1.在可能导致磁盘满的根路径执行du --max-depth=1,查看该目录下各文件(夹)的磁盘占用情况
 2.进入占比高的目录,继续执行du --max-depth=1,依次直到找到造成磁盘满了的原因
 3.既然找到了原因,那么肯定是需要进行处理的,一般我们都会选择一些可以删除的数据进行删除操作。如果是一些无法删除的数据,可以先在hdfs或者其他系统上做一个备份,然后进行删除
 4.删除之后,使用du -sh查看磁盘占用情况。
如果降下来了,再使用df -h进行查看。如果两个命令执行完之后磁盘占用都降下来了,那么就说明问题已解决
 5.如果执行du -sh的时候磁盘使用率低。但是使用df -h的时候,磁盘的使用率高。那就说明是刚刚删除的文件中,有的被进程所引用,虽然文件被删除,但是实际占用的磁盘仍然还是占用。这里可能会疑惑du和df之间的不同表现,可以看下面的知识点部分
 6.当出现第5步的情况的时候,可以考虑一下刚刚删除的文件被哪个进程引用了,可以试着重启服务

涉及知识点

  1. 上面使用到了du 和df的相关命令
  2. du --max-depth=1:输出当前目录下各文件(目录)的大小,仅限于当前目录下,不递归
  3. du -sh:以合适的单位(K,M,G)显示当前目录的总计大小
  4. df -h:以合适的单位(K,M,G)显示当前目录在文件系统中的使用大小
  5. du和df的区别:
    du统计的是指定目录下子目录大小的累计和,可以理解统计的只是当前状态下可以看得到的,那么如果一个文件被删掉了,就不会被统计到
    df是从文件系统的角度进行统计,即统计的是inode的使用率。当删除文件的时候,如果这个文件是被其他进程打开文件句柄的话,那么就表示该inode就是被引用状态。根据系统的引用清除规则,并不会删除对应磁盘数据。所以一个文件句柄引用了被删除的文件,状态会是deleted。使用df进行统计的时候,依然可以看得到
当MySQL数据库的磁盘空间时,会导致数据库无法写入新的数据,进而影响应用的正常运行。以下是排查解决MySQL数据库磁盘问题的步骤: 1. **检查磁盘使用情况**: 使用命令`df -h`查看磁盘的使用情况,确认是哪个分区了。 ```sh df -h ``` 2. **查看MySQL数据目录**: 确认MySQL的数据目录所在分区是否了。使用以下命令查看MySQL的数据目录: ```sql SHOW VARIABLES LIKE 'datadir'; ``` 3. **检查数据库大小**: 使用以下命令查看各个数据库的大小: ```sql SELECT table_schema AS 'Database', SUM(data_length + index_length) AS 'Total' FROM information_schema.TABLES GROUP BY table_schema; ``` 4. **查看具体表的大小**: 使用以下命令查看具体表的大小: ```sql SELECT table_name AS 'Table', table_schema AS 'Database', ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)' FROM information_schema.TABLES WHERE table_schema = 'your_database_name' ORDER BY (data_length + index_length) DESC; ``` 5. **清理无用的数据**: 清理无用的数据表、删除不需要的记录,或者归档旧数据到其他存储介质。 6. **优化表**: 使用`OPTIMIZE TABLE`命令优化表,释放未使用的空间。 ```sql OPTIMIZE TABLE your_table_name; ``` 7. **增加磁盘空间**: 如果以上方法无法解决问题,可以考虑增加磁盘空间,或者将数据目录迁移到更大的分区。 8. **配置MySQL日志**: 检查MySQL的日志文件(如二进制日志、错误日志等),根据需要清理或配置日志轮转。 ```sh # 查看二进制日志文件 SHOW BINARY LOGS; # 清理二进制日志 RESET MASTER; ``` 9. **定期维护**: 定期进行数据库维护,包括清理无用的数据、优化表结构、配置日志轮转等,以防止磁盘空间再次。 通过以上步骤,可以有效排查解决MySQL数据库磁盘问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值