В процессе работы MySQL время от времени создает временные таблицы, место хранения которых задается переменной tmpdir. Если таких файликов создается много (не хватает памяти или еще куча причин), то начинается активный i/o, что создает нагрузку на систему.
Один из способов избежать данной проблемы – смонтировать папку временных файлов на RAM-диск, в данном случае tmpfs.
Правим fstab
Добавляем в /etc/fstab следующее
# Temporary filesystem for MySQL tmpfs /dev/shm tmpfs rw,defaults,noexec,nosuid,size=512m 0 0
Размер можно изменять в параметре size
Монтируем свежедобавленный раздел
# mount -a
Правим my.cnf
Добавляем
tmpdir = /dev/shm
и закомментариваем старое значение tmpdir, перезапускаем mysqld
$ sudo service mysql restart
Вы используете apparmor?
Если используется appamor, то в логах mysql будут сообщения вида
/usr/sbin/mysqld: Can't create/write to file '/dev/shm/ibMoIFzB' (Errcode: 13) 120805 22:22:14 InnoDB: Error: unable to create temporary file; errno: 13
Все просто – в профиле настроек mysql запрещено писать в новое месторасположение временных файлов.
Вносим изменения в файл /etc/apparmor.d/usr.sbin.mysqld, добавляем в самый конец строки так, чтобы получилось следующее:
/sys/devices/system/cpu/ r, /dev/shm/** rw, }
и перечитываем правила
$ sudo service apparmor restart