208

我正在做一个项目,我需要为每个想要查看演示应用程序的用户创建一个包含 300 个表的数据库。它工作正常,但是今天当我与新用户一起测试以查看演示时,它向我显示了此错误消息

1030 Got error 28 from storage engine

花一些时间谷歌搜索后,我发现这是一个与数据库空间或临时文件有关的错误。我试图修复它,但我失败了。现在我什至无法启动mysql。我该如何解决这个问题,我也想将尺寸增加到最大,这样我就不会一次又一次地面临同样的问题。

4

11 回答 11

417

Mysql 错误“ 28 from storage engine ”——意思是“没有足够的磁盘空间”。

要显示下面的磁盘空间使用命令。

myServer# df -h

结果一定是这样的。

Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/vdisk     13G     13G     46M   100%    /
devfs         1.0k    1.0k      0B   100%    /dev
于 2012-12-05T17:01:10.233 回答
34

对此进行扩展(即使这是一个较老的问题);它可能不是关于 MySQL 空间本身,而是关于一般空间,假设用于 tmp 文件或类似的东西。我的 mysql 数据目录未满,/(根)分区是

于 2012-10-26T13:29:43.253 回答
10

我在 AWS RDS 中遇到了同样的问题。这是由于 Freeable Space(硬盘存储空间)已满。您需要增加空间,或删除一些数据。

于 2012-09-25T13:48:26.723 回答
9

我的 /tmp 是 %100。删除所有文件并重新启动mysql后一切正常。

于 2013-12-26T10:09:07.207 回答
2

我的 /var/log/apache2 文件夹是 35g,而 /var/log 中的一些日志总计是我 40g 硬盘的另外 5g。我清除了所有 *.gz 日志,并在确保其他日志如果我弄乱它们不会做坏事之后,我也只是清除了它们。

echo "clear" > access.log

等等

于 2014-05-01T08:08:34.603 回答
2

检查您的 /backup 以查看是否可以删除旧的不需要的备份。

于 2016-01-12T18:31:20.690 回答
1

由于我的复制二进制日志,我遇到了类似的问题。

如果是这种情况,只需创建一个 cronjob 来每天运行此查询:

PURGE BINARY LOGS BEFORE DATE_SUB( NOW(), INTERVAL 2 DAY );

这将删除所有超过 2 天的二进制日志。

我在这里找到了这个解决方案。

于 2014-06-26T16:23:39.410 回答
0

一个简单的:$sth->finish(); 可能会让你不用担心这个。Mysql 使用系统的 tmp 空间而不是它自己的空间。

于 2015-02-18T23:04:35.130 回答
0
sudo su


cd /var/log/mysql

最后输入:> mysql-slow.log

这对我有用

于 2016-06-22T09:40:43.833 回答
0

删除问题数据库,然后重新启动 mysql 服务(sudo service mysql restart例如)。

于 2019-10-24T18:29:13.427 回答
0

如果您想使用 tokudb 插件 如果您的可用空间少于 5%(默认情况下),就会发生这种情况。

查看选项:tokudb_fs_reserve_percent

于 2021-01-20T13:55:11.000 回答