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

Table des matières:

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

En tant que l'une des principales bases de données disponibles gratuitement, 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.

À quoi sert mysqldump ?

L'outil mysqldump vous couvre à la fois pour les compromis de serveur et les situations 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 dans lequel 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 reconstruira la base de données dans son état d'origine. Cette partie n'utilise pas la commande mysqldump, mais cela ne serait pas possible non plus sans cet utilitaire.

La documentation MySQL répertorie d'autres méthodes pour effectuer des sauvegardes, mais celles-ci présentent des inconvénients:

  • Hotcopy une base de données à partir de MySQL Enterprise est un excellent moyen de réaliser ces sauvegardes - si le prix de l'entreprise 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 GUI tels que MySQL Workbench. Mais c'est un processus manuel; pas quelque chose que vous pouvez scripter ou inclure dans un travail par lots.

Installer l'outil mysqldump

Pour Windows, 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). Les utilisateurs de systèmes Linux basés sur Ubuntu peuvent utiliser la commande suivante pour installer le client et les utilitaires MySQL:

sudo apt install mysql-client

Extraire un dump 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: cet indicateur 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. Cet indicateur 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.

Quand c'est fini, 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.

Image
Image

Le fichier est divisé en sections. La première section établit le tableau des 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 et de son nom d'utilisateur et de son mot de passe valides. Vous devez également disposer de 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 les autorisations de base de données avant de modifier les rôles de sécurité au sein de votre base de données.

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

Lorsque vous avez terminé, une liste de messages apparaît indiquant que les instructions SQL sont en cours d'exécution. Gardez un œil sur les erreurs, mais si vous avez les bonnes autorisations, ça devrait aller.

Image
Image

Lorsque le processus est terminé, vous aurez une copie 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 comparaison dédié pour comparer les deux fichiers.

Image
Image

Il existe deux différences entre ces fichiers, représentés par des lignes rouges en haut et en bas de la barre de défilement de droite. La première est la ligne qui contient le nom de la base de données, et celle-ci est différente 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 drapeau - -single-transaction, tel que [ $ mysqldump --single-transaction] [-u utilisateur] [-p DBNAME] > backup.sql

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

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

Conseillé: