我只有一个数据库,大约 40G。我之前在复制方面确实遇到了一些问题……可能是某种日志/文件占用了空间?
如何检查空间被占用的原因?
我使用的是 Ubuntu,最新版本。我没有 GUI。一切都是命令行。唯一运行的是 mysql。
答案1
是的,您的 binlog 占用了大量空间 - 特别是在设置复制之后。
您可以使用 /etc/mysql/my.cnf 配置这些内容的保存时间,expire_log_days
请注意,如果您的 binlog 索引文件有问题,此设置似乎不起作用。我相信您可以手动确保索引文件的内容与所有现有的 binlog 文件名匹配以解决这个问题。
答案2
这往往效果更好(如果你是root,则从/开始):
du -sm * | sort -nr
这样,您就可以将最主要的违规者放在列表顶部。然后,您可以先深入研究明显的违规者,并找到导致磁盘满问题的真正根源。
总的来说,使用它来设置 cron 脚本来审计诸如 home 和 share 目录树之类的内容确实非常方便。在 home 中运行它,您可以轻松识别文件占用者的登录信息...
运行 find 之类的操作是可以的,但是如果你有一个应用程序每天都在轮换(但不删除)日志,没有人知道这件事,而且已经过去了 3 年,会发生什么情况?小文件也会累积起来……
答案3
du(磁盘使用情况)命令是您的好帮手。尝试以下操作:
du -h --max-depth=1 /home
...其中 -h 是“人类可读的”,并且 -max-depth 控制您想要进入的子目录深度。
答案4
我将针对整个分区上的所有内容运行一份报告:
find /foo -mount -type f -print0 | xargs -0 du -sk | sort -rn | less
这将为您提供所有文件的排序列表,从最大的文件开始,以 KB 为单位,不会跨越其他已安装的驱动器。如果您只有一个很大的 / 分区,则将“/foo”替换为“/”。通常情况下,您有少量占用空间的大文件,例如日志文件、核心文件或崩溃转储。
它会严重影响服务器,因此要么让它保持良好状态,要么在机器可以处理额外负载时运行它。