Qu'est-ce que mysqldump et comment l'utiliser ?

En tant que l'un des principaux disponibles gratuitement bases de données, MySQL est un choix populaire pour de nombreuses applications Web. Étant exposée à Internet, votre application est exposée à des attaques malveillantes. Si votre serveur est compromis, au mieux, vous devez réinstaller l'application; au pire, vous risquez de perdre vos données. De plus, vous pouvez vous retrouver dans une situation où vous devez migrer une base de données d'un serveur à un autre.

A quoi sert mysqldump?

L'outil mysqldump vous couvre à la fois pour les situations de compromission du serveur et de migration. Sa fonction de base est de prendre une base de données MySQL et de la vider sous forme de fichier texte. Mais pas n'importe quel fichier texte; le fichier est un ensemble d'instructions SQL. Ces instructions, lorsqu'elles sont exécutées, reconstruisent la base de données dans l'état précis où elle se trouvait lorsque le vidage a été exécuté.

Utilisez mysqldump pour créer des exportations d'une base de données en tant que sauvegardes ou lors du déplacement de la base de données vers un nouvel hôte. Dans les deux cas, le fichier texte sera réimporté dans un serveur de base de données MySQL. Il exécutera toutes les instructions SQL du fichier, ce qui reconstituera la base de données à son état d'origine. Cette partie n'utilise pas la commande mysqldump, mais cela ne serait pas possible sans cet utilitaire non plus.

Les La documentation MySQL répertorie d'autres méthodes pour effectuer des sauvegardes, mais ceux-ci ont des inconvénients:

  • La copie à chaud d'une base de données à partir de MySQL Enterprise est un excellent moyen de réaliser ces sauvegardes, si le prix Enterprise ne vous dérange pas.
  • La copie des répertoires de données de la base de données peut être délicate lors du déplacement entre les systèmes d'exploitation, car les destinations seront différentes.
  • L'exportation vers un fichier texte délimité vous donnera le contenu, mais vous devrez recréer la structure.
  • Vous pouvez souvent sauvegarder des bases de données à partir de programmes d'interface graphique tels que MySQL Workbench. Mais il s'agit d'un processus manuel; pas quelque chose que vous pouvez scripter ou inclure dans un travail par lots.

Installez l'outil mysqldump

Pour les fenêtres, consultez nos instructions pour installer MySQL sur Windows 7 (le processus d'installation est le même pour Windows 10). Sur macOS, consultez nos instructions pour installer MySQL sur macOS 10.7 (encore une fois, plus ancien mais toujours applicable). Utilisateurs de Systèmes Linux basés sur Ubuntu pouvez utiliser la commande suivante pour installer le client MySQL et les utilitaires:

sudo apt installe mysql-client. 

Extraire un vidage MySQL

Une fois installé, utilisez mysqldump pour obtenir une sauvegarde complète d'une base de données.

mysqldump -h [le nom ou l'adresse IP de votre hôte de base de données] -u [le nom de l'utilisateur de la base de données] -p [le nom de la base de données] > db_backup.sql. 

Voici une description des drapeaux utilisés dans cette commande:

  • -h: ce drapeau est l'hôte de la base de données. Il peut s'agir d'un nom d'hôte complet (par exemple, myhost.domain.com) ou d'une adresse IP. Laissez ce champ vide si vous exécutez la commande sur le même hôte que le serveur MySQL.
  • -u: Votre nom d'utilisateur.
  • -p: Si vous avez correctement sécurisé l'installation de MySQL, vous aurez besoin d'un mot de passe pour vous connecter. Ce drapeau sans argument vous demande un mot de passe lorsque vous exécutez la commande. Parfois, il est utile de fournir le mot de passe directement comme argument de cet indicateur, par exemple, dans un script de sauvegarde. Mais à l'invite, vous ne devriez pas, car si quelqu'un accédait à votre ordinateur, il pourrait obtenir ce mot de passe dans l'historique des commandes.
  • > db_backup.sql: Cette partie indique à mysqldump de diriger sa sortie vers un fichier. Normalement, la commande affiche tout sur la console, ce qui signifie que vous verrez plusieurs instructions SQL à l'écran. Le symbole > canalise la sortie dans le fichier texte nommé. Si ce fichier n'existe pas, il est créé automatiquement.

Une fois terminé, vous aurez un fichier .SQL. Il s'agit d'un fichier texte contenant des instructions SQL. Vous pouvez l'ouvrir dans n'importe quel éditeur de texte pour inspecter le contenu. Voici une exportation à partir d'une base de données WordPress qui montre comment ces fichiers sont assemblés.

Contenu d'un fichier mysqldump

Le fichier est divisé en sections. La première section met en place la table pour les commentaires WordPress. La deuxième section recrée le contenu de ces tables (dans cet exemple, les enregistrements de commentaires). Lorsque vous réimportez le vidage MySQL, la commande parcourt le fichier, exécute les instructions et reconstruit la base de données telle qu'elle était.

Importer un fichier de vidage MySQL

Avant d'importer le fichier de vidage, vous aurez besoin d'une base de données déjà créée ainsi que de son nom d'utilisateur et de son mot de passe valides. Vous devriez également avoir toutes les autorisations pour la base de données. Vous n'avez pas besoin de l'autorisation GRANT, mais il est plus facile de toutes les accorder.

En savoir plus sur autorisations de base de données avant de modifier les rôles de sécurité dans votre base de données.

Pour réimporter vos données, connectez-vous au serveur MySQL avec le mysql commander. Taper utiliser [nom de la base de données] à l'invite et remplacez le nom de la base de données. Entrer source [nom de fichier], et remplacez le nom du fichier de vidage que vous avez pris précédemment.

Lorsque vous avez terminé, une liste de messages s'affiche, indiquant que les instructions SQL sont en cours d'exécution. Gardez un œil sur les erreurs, mais si vous avez les bonnes autorisations, tout devrait bien se passer.

Importation d'un fichier mysqldump dans une nouvelle base de données

Une fois le processus terminé, vous aurez un duplicata de la base de données d'origine. Pour vérifier la similitude entre les bases de données, effectuez un autre vidage, puis comparez les deux sorties. Utilisez un éditeur de texte ou un outil de diff dédié pour comparer les deux fichiers.

Comparaison des fichiers de vidage des deux bases de données

Il existe deux différences entre ces fichiers, représentées par des lignes rouges en haut et en bas de la barre de défilement droite. La première est la ligne qui contient le nom de la base de données, et c'est différent car les fichiers ont été nommés différemment. Le second est l'horodatage du fichier de vidage. Ceci est différent car la deuxième base de données a été recréée après la première. Sinon, les fichiers sont exactement les mêmes, ce qui signifie que les bases de données qui les ont générés le sont également.

FAQ

  • Comment corrigez-vous l'erreur mysqldump: Accès refusé lors de l'utilisation de tables de verrouillage ?

    Demandez à votre administrateur de base de données de vous accorder le privilège LOCK. Si cela ne résout pas le problème, essayez d'exécuter la même commande mysqldump en ajoutant le --transaction unique drapeau, comme [$ mysqldump--transaction unique] [-uutilisateur] [-pNOM DE BD ] > sauvegarde.sql.

  • Pouvez-vous utiliser une clause "where" avec mysqldump ?

    Utilisez une clause WHERE lors de la création d'une sauvegarde qui inclut uniquement les lignes remplissant la condition donnée. Par exemple, pour vider les données uniquement à partir des lignes dont la colonne id est supérieure à 100, saisissez "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".