Назад | Перейти на главную страницу

mysql: Должен ли я изменить mysql tmpdir с / tmp на / var / lib / mysql / tmp

Недавно на одном из серверов производства мы увидели, что репликация останавливается из-за нехватки места на /tmp диск, на котором выделено меньше места.

Я хотел бы переместить tmpdir из /tmp[default] к /var/lib/mysql/tmp

Вот что, я думаю, мне следует сделать.

  1. остановить mysql
  2. создать каталог с именем tmp в месте /var/lib/mysql/
  3. Добавить tmpdir = /var/lib/mysql/tmp/
  4. запустить mysql

Есть ли что-нибудь, о чем нужно позаботиться для уровня разрешения /var/lib/mysql/tmp/ ?

Below are what I guess I should do.

 1. stop mysql
 2. create directory called `tmp` in the location `/var/lib/mysql/`
 3. add `tmpdir = /var/lib/mysql/tmp/`
 4. start mysql

Вы можете комбинировать 1. с 4. перезапуском MySQL после внесения изменений.

Насчет 2., вы должны поставить tmpdir вне datadir.

Есть ли что-то, о чем нужно позаботиться для уровня разрешения /var/lib/mysql/tmp/?

chown mysql:mysql /path/to/tmp/dir достаточно.

Посетите этот блог, чтобы получить подробные инструкции по настройке apparmor и my.cnf, http://sharadchhetri.com/2014/12/27/change-path-tmpdir-mysql-server-ubuntu/

Сначала проверьте папку tmp dir

SHOW VARIABLES LIKE 'tmpdir';

Создайте резервную копию my.cnf

sudo cp -pv /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%F`.bak

Создайте новый каталог для хранения файлов

sudo mkdir /mysql_tmp_dir

Сделайте пользователя mysql владельцем каталога sudo chown mysql: mysql / mysql_tmp_dir

отредактировать my.cnf

заменить,

 sudo vim /etc/mysql/my.cnf
 tmpdir = /tmp 

с участием

 tmpdir = /mysql_tmp_dir

редактировать конфигурацию apparmor для mysqld

sudo vi /etc/apparmor.d/usr.sbin.mysqld

добавить строки,

/mysql_tmp_dir r,  
/mysql_tmp_dir rw

перезапустите apparmor и mysql

sudo service apparmor restart
sudo service mysql restart

Чтобы проверить, правильно ли сработали изменения,

SHOW VARIABLES LIKE 'tmpdir';

Бинго! И это должно отобразить путь к новому tmpdir

Это не рекомендуется. По умолчанию / tmp будет смонтирован из tmpfs, и mysql будет использовать его для очень больших запросов и т. Д. Находясь в tmpfs, IOPS попадает в оперативную память, а не на жесткий диск или SSD. Это улучшает производительность и нет реальных недостатков, потому что данные, хранящиеся в tmpdir, подходят для энергозависимого хранилища. Если вы увеличиваете размер / tmp до максимума, я бы порекомендовал вам написать свои запросы, чтобы они были более эффективными, или увеличьте размер вашего / tmp с помощью fstab, если у вас есть свободная ОЗУ. Если это решение не работает, не стесняйтесь определять свое собственное расположение tmpdir и указывать его на диск с большим размером раздела.

Если вы сделаете tmp в / var / lib / mysql, mysqld подумает, что это база данных ...