2

Déplacer le répertoire de données (datadir) MySQL vers un nouvel emplacement sur Debian

twitterlinkedinmail

L’objectif de cet article est de décrire la procédure pour déplacer et modifier le répertoire de données (datadir) MySQL vers un nouveau répertoire sur Debian 8.

Cet article est une suite de celui sur la resynchronisation d’un Slave MySQL : http://blog.capdata.fr/index.php/replication-mysql-resynchronisation-dun-slave-mysql.

En effet, suite à la resynchronisation du Slave MySQL avec le Master, notre client nous a demandé de faire en sorte que le répertoire de données sur le Slave soit le même que sur le Master.

Le Master avait son répertoire de données (datadir) sur /opt/mysql alors que le Slave avait le sien sur le répertoire par défaut, /var/lib/mysql.

Nous allons donc faire en sorte que les données et le répertoire de données correspondent au répertoire /opt/mysql sur le Slave.

 

Voici donc la procédure pour déplacer les données MySQL vers le nouvel emplacement et modifier la valeur du répertoire de données (datadir) dans la configuration MySQL sur le Slave.

 

Slave (obelix)

  • Connaitre le répertoire du datadir :
mysql -uroot -p*******
mysql> select @@datadir;
+-----------------+
| @@datadir |
+-----------------+
| /var/lib/mysql/ |
+-----------------+

 

  • Arrêter le service MySQL :
sudo /etc/init.d/mysql stop

sudo /etc/init.d/mysql status

 

  • Si la taille du répertoire de données n’est pas trop volumineuse, on peut copier directement le répertoire de données MySQL vers le nouvel emplacement (sinon compresser le répertoire et le copier) :
sudo cp -R -p /var/lib/mysql /opt

 

  • Renommer l’ancien répertoire en backup :
sudo mv /var/lib/mysql /var/lib/mysql.bak

 

  • Modifier la configuration du datadir dans le fichier de configuration MySQL situé dans /etc/mysql/my.cnf pour correspondre à /opt/mysql :
capdata@obelix:~$ cat /etc/mysql/my.cnf | grep datadir
datadir = /var/lib/mysql 

Remplacer /var/lib/mysql par /opt/mysql :

 sudo vi /etc/mysql/my.cnf

datadir = /opt/mysql 

 

  • Sur Debian, si AppArmor est installé, il faut modifier la configuration des règles de contrôle d’accès pour AppArmor (associe un profil de sécurité à chaque programme pour restreindre les capacités) :
capdata@obelix:~$ cat /etc/apparmor.d/usr.sbin.mysqld | grep /var/lib/mysql
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

Remplacer /var/lib/mysql par /opt/mysql :

sudo vi /etc/apparmor.d/usr.sbin.mysqld
/opt/mysql/ r,
/opt/mysql/** rwk,

Si le package est installé, redémarrer le service AppArmor :

sudo /etc/init.d/apparmor reload

 

ATTENTION, BIEN VERIFIER QUE LE FICHIER DE CONF /ETC/MYSQL/MY.CNF N’A PLUS LES DROITS EN ECRITURE (777) POUR LES AUTRES CAR SINON LE SERVICE MYSQL NE VOUDRA PAS DÉMARRER.

 

  • Redémarrer le service MySQL :
sudo /etc/init.d/mysql start

 

  • Vérifier le status MySQL :
sudo /etc/init.d/mysql status
mysqladmin -uroot -p******* status

 

  • Vérifier côté base de la bonne prise en compte du nouveau répertoire de données (datadir) :
mysql -uroot -p***********
mysql> select @@datadir;
+-------------+
| @@datadir   |
+-------------+
| /opt/mysql/ |
+-------------+
1 row in set (0.00 sec)

 

Et voila, votre répertoire de données (datadir) MySQL a bien été déplacé et est positionné vers son nouvel emplacement !

A bientôt pour de nouveaux articles sur MySQL.

Erwan Ollitrault

Continuez votre lecture sur le blog :

twitterlinkedinmail

Erwan Ollitrault

2 commentaires

  1. Bonjour,
    Belle procédure mais… à la fin le résultat de la la commande select @@datadir; le résultat ne devrait-il pas être /opt/mysql ?
    Cdlt

  2. Bonjour alfpipe,

    Merci pour le retour et cette erreur à la fin de la procédure 🙂 Effectivement, j’ai du me tromper avec un copier/coller et je n’ai pas fait attention à la fin !
    Je vais modifier l’article pour que le résultat final soit bien ce qui était attendu, c’est à dire /opt/mysql
    N’hésite pas à voir les autres articles et nous donner ton retour si tu as des questions ou besoin de plus précisions 😉

    Erwan

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.