Quand ils ont fini Sauvegardes de bases de données MySQL, il est courant d'utiliser la commande mysqldump aucune option. Cependant, cette commande possède de nombreuses options intéressantes qui vous permettent d'effectuer des sauvegardes avancées.
Par défaut, le La commande mysqldump génère une copie de la structure SQL de toutes les tables de la base de données indiqué, dans un fichier texte sql. Pour n'inclure qu'une ou plusieurs tables, entrez leurs noms après le nom de la base de données.
Depuis la fenêtre du terminal dans le répertoire mysql :
# Sauvegarde d'une seule table $ mysqldump -user = user --password = clé de la base de données de la table> backup_sql
# Sauvegarder trois tables $ mysqldump -user = user --password = clé de base de données table1 table2 table3> backup_sqlExemples de 1 ou 3 tableaux.
1. Exclure certaines tables de la sauvegarde
Afin de ne pas inclure une table spécifique dans la sauvegarde, nous devons l'indiquer avec l'option --ignore-table, dont la valeur doit être indiquée
Si vous effectuez par exemple une sauvegarde d'une base de données appelée commerce mais que vous ne souhaitez pas qu'une table appelée sales soit incluse, exécutez la commande suivante :
$ mysqldump --user = user - password = password --ignore-table = marchand.sales marchand> backup_back.sqlEn d'autres termes, copiez l'intégralité de la base de données commerciale, à l'exception de la table des ventes. Si nous voulons exclure plusieurs tables, nous devons utiliser la commande suivante :
$ mysqldump --user = user --password = password --ignore-table = commerce.sales --ignore-table = commerce.products --ignore-table = commerce.prix du commerce> backup_copy.sql(Pour exclure plusieurs tables, spécifiez leurs noms avec autant d'options --ignore-table)
2. Limiter le nombre d'enregistrements dans chaque table
Par défaut, la commande mysqldump copiera tous les enregistrements de toutes les tables. Si vous souhaitez filtrer préalablement les enregistrements, ajoutez l'option --where, qui permet d'indiquer la condition de type WHERE qui est ajoutée aux requêtes SELECT qui sont faites pour extraire tous les enregistrements :
$ mysqldump --user = user --password = password --where = "age> 18 ET age backup_back.sqlSi nous voulons n'extraire que certains enregistrements de la base de données, par exemple les 500 premiers
$ mysqldump --user = user -password = password --where = "1 limit 500" database> backup.sqlIls seraient extraits avec une limite de 500.
3. Copier uniquement la structure des tables mais pas leurs données
Par défaut, le commander mysqldump vide à la fois la structure des tables et toutes leurs informations. Si vous souhaitez uniquement supprimer la structure des tables et des colonnes, utilisez l'option --no-data. Vous pouvez donc créer une autre base de données exactement la même mais vide :
$ mysqldump --user = user --password = password --no-data database> backup_sqlNormalement, lorsque les insertions sont générées, elles sont regroupées dans une seule instruction pour enregistrer les lignes de code comme suit :
INSERT INTO table VALUES (1, 'name1'), (2, 'name2'), (3, 'name3');C'est un comportement qui peut provoquer des erreurs avec des systèmes plus anciens incapables de traiter de longues lignes. De même, vous pouvez rencontrer des problèmes avec votre éditeur de texte lorsque vous essayez d'ouvrir un fichier de sauvegarde contenant ces longues lignes.
Si nous sommes confrontés à ce cas, nous pouvons ajouter l'option --extended-insert = faux pour que chaque INSERT s'exécute avec sa propre instruction :
$ mysqldump --user = user -password = password --extended-insert = false database> backup_sqlLe résultat sera le suivant :
INSERT INTO table VALUES (1, 'nom1'); INSERT INTO table VALUES (2, 'name2'); INSERT INTO table VALUES (3, 'name3');Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif