Comment copier-coller une base de données MySQL

Aujourd’hui lors de mon stage, j’ai rencontré un problème qui a freiné tout le projet, mais qui pourtant s’est avéré plus simple que prévu. Je vous explique la situation :

Mon patron m’a soumis le problème suivant. Nous allons commencer à travailler avec des bases MySQL que nous allons installer chez le client. Mais, si un jour il y a un problème, le système est corrompu et je dois changer la machine il faudrait que l’on puisse récupérer les bases de données du client pour lui permettre de continuer à travailler convenablement. Malheureusement, dans ce cas de figure un mysql-dump n’est pas possible, d’où la question : Est-il possible de simplement copier-coller la ou les BDD du client ? Est-il possible de dupliquer MySQL sans utiliser de mysql-dump ?

Ayant passé des heures à chercher sur la toile sans pour autant trouver de réponses satisfaisantes, je partage le fruit de mes expériences personnelles.

Première étape : le copier-coller

Sur votre ancien disque dur copier la ou les BDD que vous souhaitez retrouver. Puis, dans le nouveau disque, coller les dossiers dans le répertoire des stockages des BDD de MySQL. Sous Debian le chemin est le suivant :

/var/lib/mysql/

Dernière étape : les droits

Si vous allez voir maintenant si MySQL à pris en compte vos BDD (dans phpmyadmin par exemple) vous serez légèrement déçu. Effectivement, vous trouverez bien la BDD mais en cliquant dessus vous vous apercevrez qu’aucune table n’a été prise en compte dans votre base. Elle est pour ainsi dire « vide ».

En fait, si MySQL refuse de lire correctement vos bases, c’est qu’il n’en a pas le droit. Ainsi, ce que nous allons faire maintenant consistera à donner ces droits à notre ami.

chown mysql:mysql -R /var/lib/mysql/

Maintenant MySQL lis correctement vos bases de données comme si vous veniez de les créer.

Bon travail à tous !