Aujourd’hui un petit article tout simple, mais qui pourrait s’avérer très utile. Je me sers aussi de cet endroit comme carnet de notes donc autant vous en faire profiter. Lorsque vous avez un site ou une application, il est comme vous le savez très important de régulièrement faire des sauvegardes. Cela permet de mieux dormir et surtout de parer aux éventuels problèmes.
Ça m’est déjà arrivé qu’une base de données explose en vol au point qu’elle devienne totalement inutilisable, tout était corrompu et les données perdues … J’ai aussi eu plusieurs le cas de disques durs et plus récemment d’un SSD sur des VPS pas cher qui ont tout simplement rendu l’âme, pouf disparu les données ! Heureusement que j’avais des sauvegardes …
C’est quoi la commande mysqldump ?
Mysqldump est une commande dans MySQL qui permet d’exporter des bases de données MySQL en créant une copie de la base de données dans un fichier texte ou binaire. Cette commande permet de sauvegarder la base de données complète, mais aussi seulement quelques tables si c’est votre besoin. Vous pouvez aussi exporter les procédures stockées, les fonctions et les vues d’une base de données MySQL. Mysqldump peut être utilisé pour effectuer des sauvegardes régulières de vos bases de données avec une tache cron qui se lancera à la fréquence que vous avez déterminé. Vous pouvez aussi l’utiliser pour migrer les données d’une base de données MySQL à une autre.
Le cas d’utilisation de mysqldump qui me sert le plus c’est comme ce matin, sauvegarder par sécurité le contenu d’une base de données. Dans mon cas, c’est bien utile et on gagne en sérénité avant de procéder à des mises à jour importantes ou à des modifications de la structure de sa base de données sur un vieux projet legacy.
Comment utiliser mysqldump en ligne de commande ?
L’utilisation de mysqldump n’est pas très compliqué et si vous avez déjà utilisé mysql en ligne de commande cela ne devrait pas vous poser de soucis. Comme pour se connecter à mysql, mysqldump prend plusieurs paramètres :
- -u : c’est le nom de l’utilisateur qui se connecte à la base de données.
- -p : il faut le préciser si vous avez un mot de passe pour vous connecter à mysql. Avant de s’exécuter, la commande vous demandera donc d’entrer un mot de passe. Attendez bien ce prompt pour ne pas donner votre mot de passe en clair dans votre terminal !
En pratique, pour sauvegarder une base de données dans le dossier courant ou vous trouvez, il suffit donc de faire la commande mysqldump suivante :
mysqldump -u [nom_utilisateur] -p [nom_base_de_donnees] > [nom_fichier_export]
Cette commande va donc sauvegarder l’intégralité de la base de données dans le fichier de sortie.
Exporter uniquement certaines tables de votre base de données :
mysqldump -u [nom_utilisateur] -p [nom_base_de_donnees] table1 table2 > tables.sql
Exporter les procédures stockées :
mysqldump -u [nom_utilisateur] -p --no-create-info --routines [nom_base_de_donnees] > procedures.sql
Sauvegarder uniquement les fonctions :
mysqldump -u [nom_utilisateur] -p --no-create-info --routines --no-data --no-create-db [nom_base_de_donnees] > fonctions.sql
Enfin pour extraire seulement les vues vous pouvez faire ceci :
mysqldump -u [nom_utilisateur] -p --no-create-info --no-data --no-create-db --skip-triggers --no-tablespaces [nom_base_de_donnees] > vues.sql
J’espère que si vous êtes arrivé ici, ce petit mémo sur mysqldump vous aura été utile pour sauvegarder votre base de données ou seulement une partie de celle-ci !
Effectivement, une commande à connaître pour faire du backup de base de donnée de type MySQL, j’ajouterais les arguments suivant :
–hex-blob : permet d’exporter les binaires en ASCII c’est plus sûr pour assurer la restauration de ces données
–single-transaction : avec innodb ça permet d’assurer la cohérence du backup
Merci je connaissais pas –hex-blob je vais tester ca