Blog personnel d'Alex Sbille sur les technologies, et autres de mes centres d’intérêts.

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 4 avril 2014

Mettre le tmpdir de Mysql / Mariadb dans la ram / tmpfs

Sur les disque dur mécaniques, les écritures de mysql sont parfois vraiement mauvaises, même en améiorant sensiblement le my.cnf, j'avais besoin d'aller plus loin.

Alors j'ai mis en place un disque tmpfs réservé au sockage du tmpdir:

Préparation de la config de mysql avec seulement une ligne à changer pour modifier la valeur de tmpdir:

nano /etc/mysql/my.cnf

Ajouter ou remplacer la ligne suivante avec le nouveau chemin:

tmpdir          = /var/lib/mysqltmp

Récupérer les privilèges de mysql qu'il puisse exploiter le tmpfs :

id mysql
uid=110(mysql) gid=113(mysql) groupes=113(mysql)

Ajout de la ligne dans le /etc/fstab

nano /etc/fstab

For 500 MB space:

tmpfs   /var/lib/mysqltmp   tmpfs   rw,gid=113,uid=110,size=500m,mode=0750,noatime   0 0

Pas besoin de rebooter, juste:

mount -a && service mysql restart
[ ok ] Stopping MariaDB database server: mysqld.
[ ok ] Starting MariaDB database server: mysqld . ..
[info] Checking for corrupt, not cleanly closed and upgrade needing tables..
df -h
tmpfs                                                    500M     0  500M   0% /var/lib/mysqltmp

Partage

Mysql / Mariadb tmpdir on tmpfs

On spinning disks, write is dramatically slow for some applications, after tweaking my.cnf, I needed more.

So I'm setting up a tmpfs disk an put mysql tmpdir in it:

Prepare mysql config with only replace the tmpdir value with the future path:

nano /etc/mysql/my.cnf

Add or replace tmpdir value with

tmpdir          = /var/lib/mysqltmp

Create the tmpfs with privileges:

Get uid and gid of mysql / mariadb

id mysql
uid=110(mysql) gid=113(mysql) groupes=113(mysql)

Add a line in the /etc/fstab

nano /etc/fstab

For 500 MB space:

tmpfs   /var/lib/mysqltmp   tmpfs   rw,gid=113,uid=110,size=500m,mode=0750,noatime   0 0

No need to restart, just

mount -a && service mysql restart
[ ok ] Stopping MariaDB database server: mysqld.
[ ok ] Starting MariaDB database server: mysqld . ..
[info] Checking for corrupt, not cleanly closed and upgrade needing tables..
df -h
tmpfs                                                    500M     0  500M   0% /var/lib/mysqltmp

Partage