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

mardi, février 26, 2019
By Erwan Ollitrault in MySQL (eollitrault@capdata-osmozium.com) [2 article(s)]

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 :




Cliquer pour partager cet article sur Viadeo
Cliquer sur "CAPTURER" pour sauvegarder cet article dans Evernote Clip to Evernote

Tags: , , ,

2 Responses to “Déplacer le répertoire de données (datadir) MySQL vers un nouvel emplacement sur Debian”

  1. alfpipe

    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

    #363140
  2. Erwan Ollitrault

    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

    #363141

Leave a Reply