web-dev-qa-db-fra.com

Changer le dossier tmp de mysql

Nos requêtes Mysql utilisent des tables temporaires qui créent des fichiers temporaires dans le processus. Actuellement, les fichiers sont écrits dans/tmp. Comment exactement le chemin du dossier temporaire dans lequel mysql écrit doit-il être changé?

25
Maxim Dsouza

Vous devez modifier votre my.cnf

tmpdir = /whatewer/you/want

et après cela, redémarrez mysql

P.S. N'oubliez pas d'accorder des autorisations d'écriture à /whatewer/you/want pour l'utilisateur mysql

47
CyberDem0n

Voici un exemple pour déplacer le tmpdir mysqld de/tmp vers/run/mysqld qui existe déjà sur Ubuntu 13.04 et qui est un tmpfs (mémoire/ram):

Sudo vim /etc/mysql/conf.d/local.cnf

Ajouter:

[mysqld]
tmpdir = /run/mysqld

Ensuite:

Sudo service mysql restart

Dernier:

SHOW VARIABLES LIKE 'tmpdir';

================================================== ================

Si vous obtenez une erreur au redémarrage de MySQL, vous pouvez avoir AppArmor activé:

Sudo vim /etc/apparmor.d/local/usr.sbin.mysqld

Ajouter:

# Site-specific additions and overrides for usr.sbin.mysqld.
# For more details, please see /etc/apparmor.d/local/README.
/run/mysqld/ r,
/run/mysqld/** rwk,

Ensuite:

Sudo service apparmor reload 

sources: http://2bits.com/articles/reduce-your-servers-resource-usage-moving-mysql-temporary-directory-ram-disk.html , https://blogs.Oracle.com/jsmyth/entry/apparmor_and_mysql

35
Elijah Lynn

Ceci est répondu dans la documentation:

Où MySQL stocke les fichiers temporaires

Sous Unix, MySQL utilise la valeur de la variable d'environnement TMPDIR comme nom de chemin du répertoire dans lequel stocker les fichiers temporaires. Si TMPDIR n'est pas défini, MySQL utilise la valeur par défaut du système, qui est généralement/tmp,/var/tmp ou/usr/tmp.

Sous Windows, Netware et OS2, MySQL vérifie dans l'ordre les valeurs des variables d'environnement TMPDIR, TEMP et TMP. Pour le premier trouvé, MySQL l'utilise et ne vérifie pas ceux qui restent. Si aucun TMPDIR, TEMP ou TMP n'est défini, MySQL utilise la valeur par défaut du système Windows, qui est généralement C:\windows\temp.

5
RedFilter

si vous n'avez pas de problèmes avec apparmor ou selinux, mais obtenez toujours le code d'erreur 13:

mysql doit pouvoir accéder au chemin complet. C'est à dire. tous les dossiers doivent être accessibles par mysql, pas seulement celui que vous souhaitez pointer.

par exemple, vous essayez d'utiliser ceci dans votre configuration mysql: tmp = /some/folder/on/disk

# will work, as user root:
mkdir -p /some/folder/on/disk
chown -R mysql:mysql /some

# will not work, also as user root:
mkdir -p /some/folder/on/disk
chown -R mysql:mysql /some/folder/on/disk
3
sjas