我在一个项目上工作,我需要为每个想要查看演示应用程序的用户创建一个具有300个表的数据库。它工作得很好,但今天当我用一个新用户测试看演示时,它向我显示了这个错误消息

1030 Got error 28 from storage engine

在花了一些时间谷歌后,我发现这是一个与数据库或临时文件空间有关的错误。我试着修好它,但失败了。现在我连mysql都启动不了。我怎么能解决这个问题,我也想增加大小到最大,这样我就不会一次又一次地面对同样的问题。


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


扩展一下这个问题(尽管这是一个老问题);它可能不是关于MySQL空间本身,而是关于一般的空间,假设是tmp文件或类似的文件。 我的mysql数据目录不是满的,/(根)分区是


Mysql错误“28从存储引擎”-意味着“没有足够的磁盘空间”。

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

myServer# df -h

结果一定是这样的。

Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/vdisk     13G     13G     46M   100%    /
devfs         1.0k    1.0k      0B   100%    /dev

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


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

echo "clear" > access.log

etc.


我也有类似的问题,因为我的复制二进制日志。

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

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

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

我找到了这个解。


一个简单的: 使用$ sth - >完成(); 这样你就不用再担心这个了。Mysql使用系统的tmp空间而不是它自己的空间。


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


sudo su


cd /var/log/mysql

最后输入:> mysql-slow.log

这对我很有效


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


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

请参阅选项:tokudb_fs_reserve_percent