我的服务器因为硬盘爆满挂掉了,记录一些排查硬盘占用的方法。
NCurses Disk Usage
简称 ncdu
,图形化命令行工具,肥肠滴好用
截图
安装方法从官网下载二进制文件并放到 /usr/bin
文件夹
清理 MySQL 日志文件
在处理MySQL的日志文件时,重要的是要先理解你正在处理的日志类型。MySQL主要有几种类型的日志文件,包括错误日志、查询日志、慢查询日志、二进制日志等。每种类型的日志都有其特定的处理方式。下面是一些基本的方法来清理这些日志文件:
错误日志
错误日志记录了MySQL启动、运行或停止时遇到的问题。通常,清理错误日志并不会在运行时释放磁盘空间,因为它不是循环使用的。你可以删除老的错误日志文件,但首先要确保不再需要它们来调试问题。
查询日志和慢查询日志
查询日志记录了所有MySQL服务器接收到的SQL语句。慢查询日志记录了执行时间超过指定阈值的查询。这些日志文件可以通过设置MySQL配置文件来管理。例如,你可以设置expire_logs_days
参数来自动删除旧的日志文件。对于慢查询日志,可以定期手动清理旧文件。
二进制日志
二进制日志记录了所有更改数据或可能更改数据的语句,主要用于复制和数据恢复。你可以使用PURGE BINARY LOGS
命令来清理旧的二进制日志文件:
1 | PURGE BINARY LOGS BEFORE 'YYYY-MM-DD HH:MM:SS'; |
或者,如果你知道要删除的日志文件的名称:
1 | PURGE BINARY LOGS TO 'mysql-bin.010'; |
创建定时任务
虽然 expire_logs_days
参数设置了日志文件的过期时间,MariaDB 会根据这个设置定期清理过期的日志文件。这通常发生在二进制日志文件被刷新或者服务器重启时。如果需要立即手动触发清理过程,可以使用以下命令:
1 | FLUSH BINARY LOGS; |
可以配置一个 cron job 来每天自动进入 MySQL 或 MariaD B数据库执行 FLUSH BINARY LOGS
命令。
- 创建一个 shell 脚本:
touch flush_binlogs.sh
1 |
|
- 保存并赋予执行权限:
chmod +x flush_binlogs.sh
- 配置 crontab:
crontab -e
1 | 0 1 * * * /path/to/flush_binlogs.sh |
通用清理建议
- 定期清理:根据你的业务需求,制定日志文件的清理策略,避免磁盘空间被完全占用。
- 监控磁盘空间:使用工具监控磁盘空间的使用情况,及时发现问题。
- 优化日志配置:根据需要优化MySQL的日志配置,例如调整慢查询日志的阈值,或者完全关闭查询日志以节省磁盘空间。
- 使用外部工具:考虑使用外部日志管理工具或服务,帮助更有效地管理和分析日志文件。
在执行任何清理操作之前,请确保已经备份了重要的日志文件,以防万一需要它们来调试问题或恢复数据。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小鱼君的博客!
评论