我目前遇到了一个大问题。VPS 磁盘已满,mysql 数据库意外增长,并且无法从托管中购买更多空间,因为它已经达到最大容量。
由于存储空间不足,mysql 服务无法再启动。
有没有办法在服务关闭的情况下对数据库执行查询?但我猜这需要一些第三方工具,而服务器上的空间不允许这样做。如果我没记错的话,即使我从数据库中删除一些旧数据,它也不会缩小。
我甚至无法将整个数据库文件下载到我的电脑上并尝试在那里重建它,因为它太大了,我没有任何驱动器可以容纳它。
我现在有什么选择?有人知道我下一步该做什么吗?
答案1
MySQL 不以 root 身份运行,因此您可能仍有“保留”的可用空间。您可以回收这些空间:tune2fs -m 0 /dev/whatever
。
你没有说你使用的是哪种操作系统,但你可能在其他地方可以释放一些空间。如果你使用的是 Ubuntu,请尝试。从等apt clean
中删除日志文件。/var/log/*
如果您仍然可以安装某些内容,请安装ncdu
并执行ncdu -x /
此操作,以便轻松了解要删除的内容。
另外,我经常使用的一个技巧是,在某处放置一个几百 MB 的虚拟文件,如果遇到这种情况,可以将其删除。当然,还有监控。
一旦有空间,您就必须OPTIMIZE TABLE
在有问题的表上运行。但是,这将导致重新创建,因此您需要额外的空间。此外,它需要使用 运行innodb_file_per_table
,这是现在的默认设置。