Changer l’emplacement des bases de données mysql sur debian

Bonjour à tous.

Aujourd’hui, on va voir comment changer l’emplacement des bdd mysql sur debian.

Sur la machine virtuelle qui héberge mon blog, j’ai 7go de SSD montés sur / et 20gb de montage NFS montés sur /srv/data.

L’espace commençait à manquer dans le ssd, j’ai donc décidé de déplacer les bases mysql dans le montage nfs.

Mon mysql est en vérité un mariadb mais je pense que ça marchera avec mysql.

J’ai eu du mal à trouver de la doc sur internet donc je vous partage ma méthode.

1 – Prérequis

    • Avoir une machine sous debian
    • Avoir un serveur mysql
    • Avoir un accès root sur la machine debian

2 – Déplacement de l’emplacement

Déjà, lancez un petit su pour passer en root.

On va créer le dossier de mysql.

Pour ceci, lancez mkdir /srv/data/mysql (j’ai choisi de créer mon dossier mysql dans /srv/data/ mais vous pouvez choisir l’emplacement que vous voulez).

Pour rendre mysql propriétaire de votre dossier, lancez chown mysql:mysql /srv/data/mysql.

Ensuite, il faut copier le contenu de votre dossier mysql dans votre nouveau dossier.

Pour connaître votre dossier mysql, il faut regarder le fichier /etc/mysql/mariadb.conf.d/50-server.cnf.

Une fois ouvert, notez la valeur de datadir (par défaut /var/lib/mysql).

On a tout ce qui nous faut pour copier les fichiers.

Positionnez vous dans votre datadir à l’aide de :

cd /var/lib/mysql

Stoppez le service mysql pour éviter une copie non correcte :
systemctl stop mysql

Puis, copiez les bases dans le nouveau dossier avec cette commande :

cp * /srv/data/mysql

Ça pourrait prendre du temps en fonction de la taille du dossier (5minutes pour 500mo chez moi).

On a copié le contenu, maintenant, il faut dire à mysql d’aller écrire dedans.

Réouvrez notre cher /etc/mysql/mariadb.conf.d/50-server.cnf  et modifiez la directive datadir par votre nouveau dossier (dans mon cas /srv/data/mysql).

Enregistrez et lancez la commande suivante pour redémarrer mysql :

systemctl start mysql

Maintenant, ouvrez mysql avec :

mysql -u root -p

et lancez :
CREATE DATABASE newdir_test;

puis :
exit

Ensuite, lancez :

ls /srv/data/mysql | grep newdir_test

Si newdir_test s’affiche, c’est que tout marche bien, vous pouvez supprimer l’ancien datadir de mysql avec la commande :

rm -rf /var/lib/mysql

Voilà, vous venez de déplacer vos bases de données mysql.

Si vous aimez mon travail, vous pouvez m’envoyer un tip et/ou partager mes articles.

Merci d’avoir lu cet article et à bientôt.

llaq.

  • Mastodon : framapiaf.org/@lelibreauquotidien
  • Twitter : twitter.com/librequotidien
  • Peertube : @lelibreauquotidien@tube.aquilenet.fr