MySQL/Writing file error (Errcode 28)
Use the perror
command:
$ perror 28
OS error code 28: No space left on device
Unless error codes are different on your system, your file system is full.
We have experienced similar issue, and the problem was MySQL used /tmp directory for its needs (it's default configuration). And /tmp was located on its own partition, that had too few space for big MySQL requests.
For more details take a look for this answer: https://stackoverflow.com/a/3716778/994302
I had same problem but disk space was okay (only 40% full). Problem were inodes, I had too many small files and my inodes were full.
You can check inode status with df -i
The error means that you dont have enough space to create temp files needed by MySQL.
The first thing you can try is to expand the size of your /tmp/
partition. If you are under LVM, check the lvextend
command.
If you are not able to increase the size of your partition /tmp/
you can work in the MySQL configuration, edit the my.cnf
(typically on /etc/mysql/my.cnf
) file and look for this line:
tmpdir = /tmp/
Change it for whatever you want (example /var/tmp/
). Just be sure to have space and assign write permission for the mysql user in the new directory.
Hope this helps!
Run the following code:
du -sh /var/log/mysql
Perhaps mysql binary logs filled the memory, If so, follow the removal of old logs and restart the server. Also add in my.cnf:
expire_logs_days = 3