J’ai récemment installé un plugin qui met en cache les requêtes API Amazon mais dont la table SQL gonfle énormément – plus de 5 Go à l’heure où j’écris ces lignes.
Le problème, c’est que cela remplit la partition racine du serveur, qui est utilisée par défaut par MariaDB pour stocker les fichiers des bases de données.
Lorsque j’ai créé ce serveur, j’ai utilisé la configuration par défault d’OVH, ce qui est une erreur grossière : la partition racine (/) fait 10 Go alors que la partition /home fait 740 Go… même pour un desktop, on ne fait plus cela parce que cela laisse trop peu pour le système alors imaginez un peu pour un serveur !
Nous avons donc le choix entre re-partitionner le disque (autant vous dire que cela ne me tente que très moyennement) ou alors changer le dossier des bases SQL pour les mettre sous /home.
Ce tutoriel vous permet donc de délocaliser les bases de données MySQL/MariaDB sur une autre partition. Le serveur tourne sur la dernière version de Debian.
Vérification du chemin des bases MariaDB
Tout se passe via le terminal. Je vous conseille de faire une sauvegarde de vos bases avant de commencer.
Commençons par vérifier le dossier dans lequel se trouve nos bases de données:
mysql -u root -p
Entrez votre mot de passe root puis entrez la commande suivante:
select @@datadir;
Code language: CSS (css)
Résultat:
+-----------------+
| @@datadir |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
Code language: JavaScript (javascript)
Ajustement de systemd pour MariaDB
Ceci est une étape fondamentale du tutoriel. Si vous ne faites pas cela, MariaDB ne démarrera pas avec votre nouveau dossier car, par défaut, il n’a pas accès à /home
.
Il faut donc que nous lui donnions explicitement l’accès :
systemctl edit mariadb
Dans le fichier qui s’ouvre, entrez le code suivant:
[Service]
ProtectHome = false
Code language: JavaScript (javascript)
Enregistrez le fichier tel quel, sans changer le nom. Le fichier que vous venez de créer est /etc/systemd/system/mariadb.service.d/override.conf
Appliquez maintenant les changements :
systemctl daemon-reload
Un nouveau répertoire pour nos bases de données
Nous pouvons maintenant créer le nouveau répertoire qui accueillera les fichiers de nos bases de données. Par simplicité, je choisis de tout mettre sous /home/mysql :
# On crée notre nouveau dossier:
mkdir /home/mysql
# On donne les droits de l'ancien dossier à notre nouveau dossier:
chown --reference=/var/lib/mysql /home/mysql
# On donne les permissions de l'ancien dossier à notre nouveau dossier
chmod --reference=/var/lib/mysql /home/mysql
# On arrête le service MySQL/MariaDB avant de copier les fichiers:
service mysql stop
# On copie les fichiers dans notre nouveau dossier, en gardant les permissions existantes (-p)
cp -rp /var/lib/mysql/* /home/mysql/
Code language: PHP (php)
Edition de my.cnf
Il nous reste maintenant à éditer les fichiers de configuration de MariaDB, my.cnf ; sous Debian, ils sont au nombre de deux :
nano /etc/mysql/my.cnf
Editez le fichier /etc/mysql/my.cnf
et sous[mysqld]
modifiez le chemin de la directive datadir
:
datadir=/home/mysql
Code language: JavaScript (javascript)
Editez le fichier /etc/mysql/mariadb.conf.d/50-server.cnf
et sous[mysqld]
modifiez le chemin de la directive datadir:
datadir=/home/mysql
Code language: JavaScript (javascript)
Il reste un aspect à configurer : AppArmor doit permettre au serveur SQL d’écrire dans votre nouveau répertoire.
Nous allons donc créer un alias entre notre nouveau répertoire et l’ancien répertoire.bOn ouvre donc le fichier d’alias d’AppArmor :
sudo nano /etc/apparmor.d/tunables/alias
Et on y ajoute:
alias /var/lib/mysql/ -> /home/mysql/,
Code language: JavaScript (javascript)
Il ne reste plus qu’à redémarrer AppArmor pour enregistrer les changements :
service apparmor restart
Démarrez maintenant le serveur MariaDB :
service mysql start
Vérifiez que le chemin a bien été modifié :
mysqladmin var -u root -p | grep datadir
Code language: JavaScript (javascript)
Résultat
| datadir | /home/mysql/
Code language: JavaScript (javascript)
Conclusion
Nous venons de changer le dossier par défaut de nos bases de données MariaDB, en les plaçant sur une autre partition de manière à libérer un peu d’espace pour notre partition racine.
Recherchez-vous un expert WordPress ou WooCommerce sur qui vous pouvez compter? Ne cherchez plus.