Recently I was working on a script that is doing parallel operations and working with large amount of data records, counted in millions.
After building it I did some tests with smaller amount of data and all was fine and working smoothly. I was happy that after lot of hard work and spent hours my script was doing what is was supposed to do.
I uploaded the script on dedicated server, modified to use the large data and then BUM! Nothing happened, the script was not working. It was working few minutes before hmm.. After debug on the code I got
error writing file /tmp (errcode 28). This error was causing my sql commands not to work properly and that's why the script was broken.
On server /tmp partition was 2GB of space but it seems, that was little space for the information that my parallel script was allocating during execution. If you want to learn more about Linux partition read
this nice tutorial that will give u briefly information to understand how everything works.
How To Fix error writing file /tmp
If you are working on already live system place your site in maintenance mode.
Click here to find out more how you can do this using .htaccess
This fix that I'm going to explain below is only if your error is caused because allocated MySQL data.
There are 2 ways how you can fix this error:
Re-arrange your server space (Not Recommended)
If you use dedicated server contact your hosting company and ask them to create larger /tmp partition and rearrange your server space. This is not recommended because there will be server downtime and add the time that your support should answer and execute the request then u will wait for 2 days this to be completed.
Create new directory on other bigger partition for mysqltmp (Recommended)
This is the way I solved this error and it was instant solution. Follow below steps to create new directory for temporary mysql information. I have chosen /home directory because in 99% of the servers it is located in the biggest partition:
Step 1 - Login to your server using SSH, you can use Putty
Step 2 - Enter below commands to create a directory:
mkdir /home/mysqltmp
chown mysql:mysql /home/mysqltmp
Step 3 - Open /etc/my.cnf using nano or pico and add following under [mysqld]
tmpdir=/home/mysqltmp
Step 4 - Now restart MySQL
Confirm that you have solved this error
After completing steps above enter:
mysqladmin variables|grep tmpdir
You should see this:
# mysqladmin variables|grep tmpdir
| tmpdir | /home/mysqltmp |
#
That's it, the issue Error writing file /tmp has been solved.
Other Posts You Might Like