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 sous MariaDB 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), Debian 10 (Buster) et Debian 11 (Bullseye). Toutes les lignes de commande s'exécute dans un terminal en mode super-administrateur (root).
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 copions l'ensemble du répertoire /var/lib/mysql vers le répertoire /home (attribut -R de la commande cp) et nous donnons les droits nécessaires (attribut -p de la commande cp). Puis nous archivons le répertoire d'origine
cp -R -p /var/lib/mysql /home mv /var/lib/mysql /var/lib/mysql.bak
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
MariaDB possède un système de protection plus avancé que MySQL. Il faut donc autoriser la modification du chemin datadir dans la configuration de MariaDB et pour éviter de devoir faire cette modification à chaque mise à jour du paquet maridb-server, nous devons configurer les fichiers de démarrage de systemd.
Nous créons un répertoire mariadb.service.d avec la commande mkdir :
mkdir /etc/systemd/system/mariadb.service.d
Puis nous créons le fichier de configuration :
nano /etc/systemd/system/mariadb.service.d/protecthome.conf
Nous y ajoutons ceci :
[Service] ProtectHome=false
Si cette étape n'est pas réalisée, l'erreur mysql can’t create test files .lower-test apparaîtra au démarrage du service avec les messages d'erreurs suivants présent dans les logs :
- /usr/sbin/mysqld: Can't create file '/var/log/mysql/error.log' (errno: 13 "Permission denied")
- [ERROR] mysqld: File '/home/log/mysql/mysql-bin.index' not found (Errcode: 13 "Permission denied")
Ensuite, nous indiquons à systemd que nous avons modifié ses fichiers de configuration :
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 éviterons 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
Le cas de app.armor
Si app.armor est installé sur votre serveur, il faut autoriser les modifications des fichiers de configuration de MariaDB. Nous éditons donc le fichier /etc/apparmor.d/usr/sbin.mysqld
nano /etc/apparmor.d/usr/sbin.mysqld
Et il faut remplacer toutes les références de /var/lib/mysql en /home/mysql. Vous sauvegardez et fermez l'éditeur. On redemarre le service
systemctl reload apparmor
Démarrage du service mariaDB
Maintenant, il suffit de redémarrer le service mariaDB avec la ligne suivante :
systemctl start mariadb.service
puis un petit :
systemctl status mariadb.service
pour vérifier que tout fonctionne correctement.
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
- [22/09/2020] : MAJ pour Debian Buster (Debian 10)
- [02/11/2021] : MAJ Debian Bullseye (Debian 11)
- [12/06/2022] : Amélioration de la gestion systemd et ajout du cas de apparmor
Auteurs et sources
- Auteur : montuy337513
Navigation
Autres liens rapides pouvant vous intéresser