Déplacer le répertoire /var/lib/mysql sur MariaDB

Pour éviter la saturation de la partition système, il est souvent judicieux de déplacer le répertoire /var/lib/mysql vers le répertoire /home . Le déplacement du répertoire /var/lib/mysql n'est pas aussi évident que pour MySQL.

Pré-requis - Difficultés

Il faut bien sûr un serveur MariaDB en fonctionnement. Ce tutoriel a été testé sur une distribution Debian 9 (Strech). Toutes les lignes de commande s'exécute dans un terminal en mode super-administrateur (root).

Difficulté
Moyen

Arrêt de MariaDB

Il faut arrêter le service MariaDB avec la commande suivante :

systemctl stop mariadb.service

Déplacement du répertoire /var/lib/mysql

Nous déplaçons le répertoire /var/lib/mysql vers le répertoire /home puis nous donnons les droits nécessaires.

mv /var/lib/mysql /home
chown -R mysql:mysql /home/mysql

Modification de la configuration de MariaDB

Nous modifions le chemin de la base de données dans le fichier de configuration de MariaDB. Le fichier à modifier est /etc/mysql/mariadb.conf.d/50-server.cnf : On utilise nano :

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Recherchez la ligne suivante :

datadir         = /var/lib/mysql

et modifiez là pour indiquer le nouveau chemin

datadir         = /home/mysql

Enregistrez puis quittez.

Modification du service mariadb.service

Si nous voulons que le service MariaDB se lance correctement nous devons modifier le fichier /etc/systemd/system/multi-user.target.wants/mariadb.service : C'est pour éviter l'erreur mysql can’t creat test files .lower-test au démarrage du service.

Nous éditons le fichier /etc/systemd/system/multi-user.target.wants/mariadb.service :

nano /etc/systemd/system/multi-user.target.wants/mariadb.service

Puis il faut commenter la ligne suivante

ProtectHome=true
</bash>
avec le **#**, ce qui donne :
<code bash>
#ProtectHome=true

Ensuite, nous relançons systemd:

systemctl daemon-reload

Supprimer le fichier tc.log

Si le fichier /home/mysql/tc.log est existant, il est nécessaire de l'effacer. Nous eviterons l'erreur [ERROR] Can’t init tc log. Pour vérifier la liste des fichiers .log présents :

ls /home/mysql/*.log

Si le fichier /home/mysql/tc.log est présent dans la liste, un petit

rm  /home/mysql/tc.log 

Démarrage du service mariaDB

Maintenant, il suffit de redémarrer le service mariaDB avec la ligne suivante :

systemctl start mariadb.service

Aller plus loin

Par précaution, il faut vérifier les tables. Nous allons exécuter l'utilitaire d'auto-réparation mysqlcheck.

mysqlcheck -u root -p --auto-repair --check -A

L'utilitaire vous demandera le mot de passe root de votre accès à mariaDB. Puis la vérification se lancera.

Notes de version

  • [01/07/2018] : Création de l'article

Auteurs et sources