Créa-blog

#100JoursPourCoder
Projet Créa-code

Ressources pour développeur web

Mysqldump : Sauvegarder, restaurer une base de données MySQL

⏱️ Temps de lecture estimé : 9 minutes
Accueil SQL & MySQL Mysqldump : Sauvegarder, restaurer une base de données MySQL

La gestion des données est une étape cruciale pour toute personne ou organisation utilisant une base de données MySQL. Qu’il s’agisse d’un site web, d’une application mobile ou d’un projet personnel, vos données sont précieuses. Une simple erreur, une panne serveur ou une mauvaise manipulation peut entraîner la perte totale de vos informations. C’est pourquoi il est essentiel de savoir comment sauvegarder et restaurer vos bases de données avec mysqldump de manière fiable et sécurisée.

Dans ce tutoriel, nous allons vous expliquer en détail comment utiliser mysqldump, un outil incontournable pour la sauvegarde et la restauration des bases MySQL. Nous aborderons les concepts fondamentaux, les avantages et limites de cet outil, ainsi que des exemples pratiques pour vous permettre de mettre en place vos sauvegardes en toute sécurité. À la fin de ce tutoriel, vous serez capable de protéger vos données et de restaurer vos bases rapidement en cas de besoin.

Qu’est-ce que mysqldump ?

mysqldump est un utilitaire fourni avec MySQL qui permet d’exporter une ou plusieurs bases de données dans un fichier texte au format SQL. Ce fichier contient toutes les instructions nécessaires pour recréer les tables et insérer les données dans une autre base MySQL.

En termes simples, mysqldump agit comme une photocopieuse pour vos bases de données. Il prend un “instantané” de votre base à un moment donné et le transforme en un fichier que vous pouvez stocker, transférer ou utiliser pour restaurer vos données ultérieurement.

Contrairement à certaines solutions de sauvegarde automatisée intégrées à des panels ou des services cloud, mysqldump est léger, rapide à mettre en place et fonctionne sur la plupart des environnements Linux, Windows et macOS.

À quoi sert mysqldump ?

L’outil mysqldump a plusieurs utilisations pratiques :

  1. Sauvegarde régulière des bases de données : Vous pouvez planifier des sauvegardes quotidiennes ou hebdomadaires pour sécuriser vos données.
  2. Migration de base de données : Si vous changez de serveur ou devez déplacer votre base vers un nouvel hébergement, mysqldump vous permet d’exporter votre base facilement et de l’importer ailleurs.
  3. Test et développement : Les développeurs utilisent mysqldump pour cloner une base de production dans un environnement de test, afin d’expérimenter sans risquer de corrompre les données réelles.
  4. Restauration après incident : En cas de suppression accidentelle, de corruption ou de crash du serveur, vous pouvez restaurer rapidement vos données grâce aux fichiers SQL générés par mysqldump.

En résumé, mysqldump est un outil polyvalent qui facilite la gestion, la sécurité et la portabilité des bases MySQL.

Avantages et limites de mysqldump

Comme tout outil, mysqldump possède ses points forts et ses limites. Il est important de bien les connaître avant de l’utiliser dans vos projets.

Avantages

L’un des principaux avantages de mysqldump est sa simplicité d’utilisation. Une seule ligne de commande peut générer une sauvegarde complète d’une base. Il ne nécessite pas d’installation complexe et fonctionne sur tous les systèmes où MySQL est disponible.

mysqldump est également portable et flexible. Vous pouvez sauvegarder une seule base, plusieurs bases ou toutes les bases d’un serveur MySQL. Le fichier SQL généré peut être utilisé pour restaurer la base sur le même serveur ou sur un serveur différent, ce qui est pratique pour la migration ou le clonage de bases.

Enfin, cet outil est fiable. Tant que votre serveur fonctionne correctement, mysqldump exporte toutes les structures et données nécessaires pour reconstruire intégralement vos bases.

Limites

Cependant, mysqldump présente quelques limites à prendre en compte. La première est la performance. Pour les très grosses bases de données (plusieurs dizaines de gigaoctets), le processus d’export et d’import peut être long et consommer beaucoup de ressources serveur.

Ensuite, mysqldump ne fait pas de sauvegarde incrémentale. Chaque export contient toutes les données de la base, même celles déjà sauvegardées précédemment. Cela peut rapidement entraîner un grand volume de fichiers si vous réalisez des sauvegardes fréquentes.

Enfin, il faut savoir que mysqldump ne gère pas directement les fichiers binaires ou certaines configurations avancées de MySQL (comme le clustering ou les réplications complexes). Pour ces cas, des solutions spécialisées sont nécessaires.

Comment utiliser mysqldump ?

L’utilisation de mysqldump repose principalement sur des commandes dans un terminal ou une invite de commande. Il est important de comprendre la syntaxe générale et de savoir adapter les options selon vos besoins.

Syntaxe de base

La commande de base pour sauvegarder une base est la suivante :

mysqldump -u [utilisateur] -p [nom_de_la_base] > [nom_du_fichier].sql

Explications détaillées :

  • mysqldump : le nom de l’outil.
  • -u [utilisateur] : indique le nom de l’utilisateur MySQL qui possède les droits sur la base.
  • -p : indique que vous allez saisir un mot de passe. Après avoir lancé la commande, MySQL vous demandera de le saisir.
  • [nom_de_la_base] : le nom de la base à sauvegarder.
  • > [nom_du_fichier].sql : redirige la sortie de la commande vers un fichier SQL. Ce fichier contiendra toutes les instructions pour recréer votre base.

Exemple concret

Supposons que vous souhaitez sauvegarder une base appelée siteweb avec l’utilisateur admin. La commande sera :

mysqldump -u admin -p siteweb > sauvegarde_siteweb.sql

Après avoir entré le mot de passe, le fichier sauvegarde_siteweb.sql sera créé dans le répertoire où vous avez exécuté la commande.

Options avancées de mysqldump

mysqldump offre de nombreuses options pour adapter vos sauvegardes à vos besoins spécifiques. Voici les principales à connaître pour un usage courant et sécurisé.

Sauvegarde complète avec structure et données

Par défaut, mysqldump exporte à la fois la structure (tables, vues, déclencheurs) et les données. Cependant, vous pouvez choisir de sauvegarder uniquement l’un ou l’autre.

  • Pour sauvegarder seulement la structure :
mysqldump -u admin -p -d siteweb > structure_siteweb.sql

L’option -d ou --no-data indique à mysqldump de ne pas inclure les données.

  • Pour sauvegarder seulement les données :
mysqldump -u admin -p --no-create-info siteweb > donnees_siteweb.sql

L’option --no-create-info signifie que la structure ne sera pas incluse, seulement les instructions INSERT.

Sauvegarde de plusieurs bases

Si vous avez besoin de sauvegarder plusieurs bases à la fois, vous pouvez utiliser l’option --databases.

mysqldump -u admin -p --databases base1 base2 base3 > sauvegarde_multibase.sql

Dans ce cas, mysqldump créera un fichier SQL contenant toutes les instructions pour recréer les trois bases. Vous pourrez ensuite restaurer ce fichier sur un serveur MySQL différent.

Sauvegarde de toutes les bases

Pour sauvegarder l’intégralité du serveur MySQL, utilisez l’option --all-databases :

mysqldump -u admin -p --all-databases > sauvegarde_complete.sql

Cette commande est particulièrement utile pour les administrateurs de serveurs souhaitant effectuer une sauvegarde complète avant une mise à jour ou un changement de configuration.

Compression et sauvegarde automatique

Pour économiser de l’espace disque, vous pouvez compresser la sauvegarde à la volée avec gzip :

mysqldump -u admin -p siteweb | gzip > sauvegarde_siteweb.sql.gz

Le fichier résultant sera beaucoup plus léger, ce qui est pratique pour des sauvegardes régulières ou pour un stockage sur un serveur distant.

Vous pouvez également automatiser les sauvegardes avec un cron job sous Linux, afin qu’elles se réalisent quotidiennement sans intervention manuelle.

Restaurer une base MySQL avec mysqldump

La restauration consiste à réimporter un fichier SQL généré par mysqldump dans une base MySQL. C’est une étape simple, mais elle nécessite quelques précautions.

Syntaxe de base

Pour restaurer une base, vous utilisez la commande mysql :

mysql -u [utilisateur] -p [nom_de_la_base] < [nom_du_fichier].sql

Explications :

  • mysql : le client MySQL utilisé pour exécuter les instructions SQL.
  • -u [utilisateur] : le nom de l’utilisateur MySQL.
  • -p : saisie du mot de passe.
  • [nom_de_la_base] : la base dans laquelle vous voulez importer les données.
  • < [nom_du_fichier].sql : redirection du fichier SQL vers MySQL.

Exemple concret

Si vous voulez restaurer la base siteweb avec le fichier sauvegarde_siteweb.sql, vous utiliserez :

mysql -u admin -p siteweb < sauvegarde_siteweb.sql

Il est important que la base siteweb existe avant l’import. Si elle n’existe pas, vous devez la créer :

mysql -u admin -p -e "CREATE DATABASE siteweb;"

Puis lancer la restauration.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Restauration de plusieurs bases ou d’un serveur complet

Si vous avez sauvegardé plusieurs bases avec l’option --databases ou toutes les bases avec --all-databases, vous pouvez les restaurer directement depuis le fichier SQL :

mysql -u admin -p < sauvegarde_multibase.sql

Dans ce cas, mysqldump inclut dans le fichier SQL les instructions CREATE DATABASE, ce qui vous évite de créer les bases manuellement.

Cas pratique : sauvegarde et restauration d’un site web

Prenons un exemple concret pour illustrer l’utilisation de mysqldump dans un scénario courant.

Contexte

Vous êtes webmaster d’un site WordPress hébergé sur un serveur Linux. Vous souhaitez réaliser une sauvegarde complète de la base wordpress avant de mettre à jour le site. Vous voulez également savoir comment restaurer cette base en cas de problème après la mise à jour.

Étape 1 : sauvegarde de la base

Connectez-vous au serveur via SSH, puis exécutez la commande :

mysqldump -u admin -p wordpress | gzip > wordpress_$(date +%Y-%m-%d).sql.gz

Explications détaillées :

  • | gzip : compresse le fichier pour réduire la taille.
  • wordpress_$(date +%Y-%m-%d).sql.gz : nom du fichier incluant la date du jour pour identifier facilement les sauvegardes.

Cette commande crée un fichier compressé dans le répertoire courant. Vous pouvez ensuite le transférer sur votre ordinateur ou un autre serveur pour le sécuriser.

Étape 2 : mise à jour du site

Après avoir sauvegardé la base, vous pouvez mettre à jour WordPress, les plugins et le thème en toute sécurité.

Étape 3 : restauration en cas de problème

Si la mise à jour échoue et que le site devient inutilisable, vous pouvez restaurer la base sauvegardée. Commencez par créer une nouvelle base (ou vider la base existante) :

mysql -u admin -p -e "DROP DATABASE wordpress; CREATE DATABASE wordpress;"

Ensuite, restaurez la sauvegarde :

gunzip < wordpress_2025-09-20.sql.gz | mysql -u admin -p wordpress

Ici, gunzip < fichier.sql.gz décompresse le fichier, et le résultat est envoyé vers la base MySQL pour la restauration complète.

Résultat

Votre site retrouve exactement l’état qu’il avait avant la mise à jour, avec toutes les publications, commentaires et configurations intactes.

Bonnes pratiques pour sauvegarder vos bases MySQL

Pour garantir la sécurité et la fiabilité de vos données, il est important de suivre certaines règles lorsqu’on utilise mysqldump.

Nommer et organiser vos fichiers de sauvegarde

Chaque fichier de sauvegarde doit être clairement identifiable. Inclure la date dans le nom du fichier est essentiel pour savoir à quel moment la sauvegarde a été effectuée. Par exemple :

wordpress_2025-09-20.sql.gz

Vous pouvez également créer des répertoires séparés pour chaque base ou pour chaque mois, afin de garder vos sauvegardes organisées et facilement accessibles.

Conserver plusieurs versions

Il est recommandé de ne jamais conserver une seule sauvegarde. En cas de corruption ou d’erreur sur le fichier de sauvegarde, vous risquez de perdre vos données. Conservez plusieurs versions pour pouvoir revenir à différents points dans le temps.

Vérifier la sauvegarde

Après avoir créé un fichier SQL, vous pouvez vérifier qu’il est intact en inspectant les premières lignes avec la commande head :

gunzip -c wordpress_2025-09-20.sql.gz | head

Vous devez voir les instructions SQL de création de tables et éventuellement quelques INSERT. Cette vérification rapide permet de s’assurer que le fichier n’est pas corrompu.

Automatiser les sauvegardes avec un script

La sauvegarde manuelle est efficace, mais répétitive. Pour gagner du temps et ne jamais oublier de sauvegarder, vous pouvez automatiser le processus avec un script.

Exemple de script Bash

Voici un script simple pour sauvegarder une base MySQL tous les jours et conserver les 7 derniers fichiers :

#!/bin/bash

# Configuration
UTILISATEUR="admin"
BASE="wordpress"
REPERTOIRE="/home/utilisateur/sauvegardes"
DATE=$(date +%Y-%m-%d)
NOMBRE_FICHIERS=7

# Créer le répertoire si nécessaire
mkdir -p $REPERTOIRE

# Sauvegarde compressée
mysqldump -u $UTILISATEUR -pVotreMotDePasse $BASE | gzip > $REPERTOIRE/${BASE}_$DATE.sql.gz

# Supprimer les anciens fichiers
cd $REPERTOIRE
ls -1t | tail -n +$((NOMBRE_FICHIERS + 1)) | xargs rm -f

Explications :

  • ls -1t : liste les fichiers par date de modification.
  • tail -n +8 : récupère tous les fichiers à partir du 8ème (en supposant que vous gardez 7 fichiers).
  • xargs rm -f : supprime les fichiers anciens pour économiser de l’espace.

Vous pouvez ensuite planifier l’exécution de ce script avec un cron job :

0 2 * * * /home/utilisateur/sauvegardes/sauvegarde_wordpress.sh

Cette commande exécute le script tous les jours à 2h du matin.

Sécuriser vos fichiers de sauvegarde

Les fichiers SQL contiennent toutes vos données, y compris les mots de passe et informations sensibles. Il est crucial de les protéger.

Permissions et accès

Assurez-vous que seuls les utilisateurs autorisés peuvent lire ou écrire dans le répertoire des sauvegardes :

chmod 700 /home/utilisateur/sauvegardes

Stockage sécurisé

Pour plus de sécurité, vous pouvez copier les fichiers sur un serveur distant, un stockage cloud ou un disque externe. Cela garantit que même si le serveur principal rencontre un problème, vos données restent protégées.

Chiffrement

Pour renforcer la sécurité, vous pouvez chiffrer vos fichiers SQL avant de les stocker ou de les transférer :

mysqldump -u admin -p wordpress | gzip | gpg -c > wordpress_2025-09-20.sql.gz.gpg

Le fichier chiffré nécessite une passphrase pour être déchiffré, ajoutant une couche de protection supplémentaire.

Optimiser mysqldump pour les grandes bases

Pour les bases de données volumineuses, certaines options permettent d’accélérer la sauvegarde et la restauration :

  • --single-transaction : effectue la sauvegarde dans une seule transaction, ce qui réduit les verrouillages et permet de sauvegarder des bases actives sans interrompre l’accès.
  • --quick : lit les données ligne par ligne au lieu de tout charger en mémoire, utile pour les très grandes tables.
  • --max-allowed-packet=512M : ajuste la taille maximale des paquets pour éviter des erreurs lors de l’insertion de gros volumes de données.

Exemple de commande optimisée :

mysqldump -u admin -p --single-transaction --quick wordpress > sauvegarde_wordpress.sql

Ces options garantissent que vos sauvegardes restent fiables même pour des bases de plusieurs dizaines de gigaoctets.


La sauvegarde et la restauration d’une base MySQL sont des compétences essentielles pour tout utilisateur ou administrateur de bases de données. L’outil mysqldump permet de réaliser ces opérations de manière simple, flexible et sécurisée.

Nous avons vu ensemble :

  • Ce qu’est mysqldump et à quoi il sert.
  • Les avantages et limites de l’outil.
  • Comment sauvegarder une base, plusieurs bases ou toutes les bases d’un serveur.
  • La manière de restaurer une base à partir d’un fichier SQL.
  • Des cas pratiques avec exemples concrets.
  • Les bonnes pratiques, l’automatisation des sauvegardes, la sécurité et l’optimisation pour les grandes bases.

En appliquant ces méthodes, vous pourrez protéger vos données contre les pertes accidentelles, les pannes serveur et les erreurs humaines. Avec une stratégie de sauvegarde régulière, vos bases MySQL seront toujours sécurisées et facilement restaurables.

Live on Twitch