我正在做一个项目,我需要为每个想要查看演示应用程序的用户创建一个包含 300 个表的数据库。它工作正常,但是今天当我与新用户一起测试以查看演示时,它向我显示了此错误消息
1030 Got error 28 from storage engine
花一些时间谷歌搜索后,我发现这是一个与数据库空间或临时文件有关的错误。我试图修复它,但我失败了。现在我什至无法启动mysql。我该如何解决这个问题,我也想将尺寸增加到最大,这样我就不会一次又一次地面临同样的问题。
我正在做一个项目,我需要为每个想要查看演示应用程序的用户创建一个包含 300 个表的数据库。它工作正常,但是今天当我与新用户一起测试以查看演示时,它向我显示了此错误消息
1030 Got error 28 from storage engine
花一些时间谷歌搜索后,我发现这是一个与数据库空间或临时文件有关的错误。我试图修复它,但我失败了。现在我什至无法启动mysql。我该如何解决这个问题,我也想将尺寸增加到最大,这样我就不会一次又一次地面临同样的问题。
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
对此进行扩展(即使这是一个较老的问题);它可能不是关于 MySQL 空间本身,而是关于一般空间,假设用于 tmp 文件或类似的东西。我的 mysql 数据目录未满,/(根)分区是
我在 AWS RDS 中遇到了同样的问题。这是由于 Freeable Space(硬盘存储空间)已满。您需要增加空间,或删除一些数据。
我的 /tmp 是 %100。删除所有文件并重新启动mysql后一切正常。
我的 /var/log/apache2 文件夹是 35g,而 /var/log 中的一些日志总计是我 40g 硬盘的另外 5g。我清除了所有 *.gz 日志,并在确保其他日志如果我弄乱它们不会做坏事之后,我也只是清除了它们。
echo "clear" > access.log
等等
检查您的 /backup 以查看是否可以删除旧的不需要的备份。
由于我的复制二进制日志,我遇到了类似的问题。
如果是这种情况,只需创建一个 cronjob 来每天运行此查询:
PURGE BINARY LOGS BEFORE DATE_SUB( NOW(), INTERVAL 2 DAY );
这将删除所有超过 2 天的二进制日志。
我在这里找到了这个解决方案。
一个简单的:$sth->finish(); 可能会让你不用担心这个。Mysql 使用系统的 tmp 空间而不是它自己的空间。
sudo su
cd /var/log/mysql
最后输入:> mysql-slow.log
这对我有用
删除问题数据库,然后重新启动 mysql 服务(sudo service mysql restart
例如)。
如果您想使用 tokudb 插件 如果您的可用空间少于 5%(默认情况下),就会发生这种情况。
查看选项:tokudb_fs_reserve_percent