Backup d'une base de donnée MySQL

Publié le

Quand on veut faire une sauvegarde d'une base de donnée MySQL, il n'y a pas 36 solutions.

Soit on prend son courage à 2 mains et on décide de se faire un script de backup manuellement. C'est long, et on est pas à l'abri d'oublier quelque chose, si on ajoute des tables par la suite.

Soit on se dit qu'une base de données, ce n'est que des fichiers et on décide de sauvegarder dans un tar gzippé le dossier contenant ces fichiers. Pour les remettre, c'est moins évident.

Soit on cherche un peu dans la doc MySQL et dans les commandes Bash commençant par mysql, et on découvre des choses toutes faites, qui, en une ligne, nous permettent de faire la sauvegarde de toute une base, voir de plusieurs.

Vous l'attendez tous, voici la ligne de commande :

mysqldump --user=LOGIN --password=PASSE --add-drop-table NOMBASE

Cette commande vous écrit toutes les requêtes MySQL à exécuter pour retrouver votre base de données. Le --add-drop-table permet d'ajouter les instructions de suppression de tables, si elles existent.

Là, je vous ai donné pour ne sauvegarder qu'une seule base. Pour en sauvegarder plusieurs, il faut remplacer NOMBASE par --databases NOMBASE1 NOMBASE2 NOMBASE3.

Pour sauvegarder toutes les bases de données, il faut remplacer NOMBASE par --all-databases.

Bon avec tout ça, vous allez avoir toutes les requêtes qui vont défiler sur votre écran. Pas très pratique pour restaurer... Un simple pipe vers un fichier pour sauvegarder le tout et le tour est joué :

mysqldump --user=LOGIN --password=PASSE --add-drop-table NOMBASE > FICHIER.sql

Enfin, pour restaurer, vous pouvez utiliser la technique que je vous ai déjà donné pour les grosses requêtes MySQL.