software:mysql:mysql-tmpfs

Различия

Показаны различия между двумя версиями страницы.


software:mysql:mysql-tmpfs [2017/05/09 18:34] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Ускоряем MySQL при помощи tmpfs ======
 +
 +===== Зачем =====
 +В процессе работы MySQL время от времени создает временные таблицы, место хранения которых задается переменной tmpdir. Если таких файликов создается много (не хватает памяти или еще куча причин), то начинается активный i/o, что создает нагрузку на систему.
 +
 +Один из способов избежать данной проблемы - смонтировать папку временных файлов на RAM-диск, в данном случае tmpfs.
 +
 +===== Правим fstab =====
 +
 +Добавляем в /etc/fstab следующее
 +<code>
 +# Temporary filesystem for MySQL
 +tmpfs /dev/shm tmpfs rw,defaults,noexec,nosuid,size=512m 0 0
 +</code>
 +
 +Размер можно изменять в параметре size
 +
 +Монтируем свежедобавленный раздел
 +<code>
 +# mount -a
 +</code>
 +
 +===== Правим my.cnf =====
 +
 +Добавляем
 +<code>
 +tmpdir = /dev/shm
 +</code>
 +
 +и закомментариваем старое значение tmpdir, перезапускаем mysqld
 +<code>
 +$ sudo service mysql restart
 +</code>
 +
 +===== Вы используете apparmor? =====
 +
 +Если используется appamor, то в логах mysql будут сообщения вида
 +<code>
 +/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
 +</code>
 +
 +Все просто - в профиле настроек mysql запрещено писать в новое месторасположение временных файлов.
 +
 +Вносим изменения в файл /etc/apparmor.d/usr.sbin.mysqld, добавляем в самый конец строки так, чтобы получилось следующее:
 +<code>
 +  /sys/devices/system/cpu/ r,
 +  /dev/shm/** rw,
 +}
 +</code>
 +
 +и перечитываем правила
 +<code>
 +$ sudo service apparmor restart
 +</code>
 +
 +{{tag>mysql tmpfs ускоряем_mysql apparmor}}