Another common MySQL server error message encountered by vBulletin forum owners, is the “mysql error: Got error 28 from storage engine – mysql error number: 1030” error message. This error translates into “Error code 28: No space left on device” – meaning a disk partition on your forum server’s hard disk ran out of free disk space.
Step 1. Is to immediately and I mean ASAP, close the forums via AdminCP to prevent further writing to the database to lessen chances of database corruption.
Step 2. Is to contact your web host to immediately report that MySQL server is throwing an error and complaining a disk partition on the server has ran out of disk space. Your web host would have to deal with this. If you own and run your own dedicated server and have full root user access to make the required changes, read further below for instructions on how to fix this MySQL error number 28 message.
MySQL data directory and tmpdir path
In most Linux based installs that use MySQL RPM binary installations i.e. WHM/Cpanel servers, MySQL data resides at /var/lib/mysql and the default MySQL temp directory is /tmp. Each folder directory listed at /var/lib/mysql will correspond to your database name(s).
Unfortunately, sometimes /tmp directory doesn’t have enough free disk space to handle MySQL server’s temporary file storage requirements. Other times it’s you ran out of free disk space for /var partition on which MySQL data resides.
In case of /tmp directory related free disk space issues, you need to change MySQL’s path and location it uses for MySQL temp file storage operations via the tmpdir variable option.
Bare minimum would be to have tmpdir path pointed at a location which has minimum 2x to 3x times the free disk space as your largest MySQL database table size. Most folks only have one hard disk installed on their server and most free disk space would be located at /home so that’s where I’d point it. Create a new directory at /home/mysqltmp and give it correct file ownership and file permissions as /tmp for your server. For performance though, I’d use a separate hard disk or fast SSD disk if possible. Some folks use memory based ramdisk or tmpfs but be careful, you don’t want to use memory based location if you use the server as a MySQL replication slave server as explained here.
Edit /etc/my.cnf and under [mysqld] group add
tmpdir = /home/mysqltmp
Restart MySQL server after saving changes in /etc/my.cnf
Now if the reason if lack of disk space in /var partition or wherever your MySQL data resides, then you’d need to upgrade your hard drive capacity. To find where your MySQL data resides:
via SSH telnet type:
mysqladmin -u mysqlusername -p var | grep datadir
mysqladmin -u mysqlusername -p var |grep datadir
| datadir |/var/lib/mysql/
In this case MySQL datadir is at /var/lib/mysql
Note: You can also find out MySQL datadir path set for MySQL variable options by going into your vB forum AdminCP to check:
For vBulletin 3.x:
Go to Import & Maintenance -> Diagnostic menu at very bottom of left frame and run MySQL Variables and MySQL Status output. There should be a datadir path value for MySQL Variables
For vBulletin 4.x
Go to Maintenance -> Diagnostic -> System Information menu at very bottom of left frame and run MySQL Variables and MySQL Status output. There should be a datadir path value for MySQL Variables