Недавно на одном из серверов производства мы увидели, что репликация останавливается из-за нехватки места на /tmp
диск, на котором выделено меньше места.
Я хотел бы переместить tmpdir
из /tmp[default]
к /var/lib/mysql/tmp
Вот что, я думаю, мне следует сделать.
tmp
в месте /var/lib/mysql/
tmpdir = /var/lib/mysql/tmp/
Есть ли что-нибудь, о чем нужно позаботиться для уровня разрешения /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 подумает, что это база данных ...