{{htmlmetatags>metatag-description=(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. Tutoriel pour exporter /var/log/mysql vers /home/log )
metatag-og:image=(https://www1.zonewebmaster.eu/_media/serveur-debian-mariadb/mariadb-social-share.jpg?w=400&tok=9e0299)
metatag-og:description=(Tutoriel pour exporter /var/log/mysql vers /home/log. 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. )
metatag-og:title=(Déplacer le répertoire /var/lib/mysql sur MariaDB - DEBIAN - zonewebmaster.eu)
metatag-og:type=(article)
metatag-og:url=(https://www1.zonewebmaster.eu/serveur-debian-mariadb/deplacer-var-lib-mysql)
metatag-og:locale=(fr_FR)
metatag-og:site_name(zonewebmaster.eu)
metatag-article:published_time=(2018-07-01)
metatag-article:modified_time=(2022-06-12)
metatag-article:author=(montuy337513)
metatag-article:tag=(mariadb, mysql, log, répertoire, var, home, tc.log, protecthome, configuration, activation, installation, tuto, wiki, debian)
}}
====== 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.
{{ :serveur-debian-mariadb:mariadb-mysql.jpg?nolink&400 |}}
===== 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).
{{howhard>3}}
===== 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 : [[:user:montuy337513]]
===== Navigation =====
{{page>:navigation#serveur-dedie-debian}}