Sauter certaines tables avec la commande mysqldump
Est-il un moyen de restreindre l'accès à certains tableaux de la commande mysqldump?
Par exemple, je veux utiliser la syntaxe suivante pour vider seulement table1 et table2:
mysqldump -u username -p database table1 table2 > database.sql
Mais est-il une manière similaire à vider toutes les tables sauf table1 et table2? Je n'ai rien trouvé dans le dump de la documentation, telle est la force brute (en précisant tous les noms de table) la seule façon d'aller?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le --ignore-table option. Donc, vous pourriez faire
Il n'y a pas d'espace après
-p
(ce n'est pas une faute de frappe).Si vous souhaitez ignorer plusieurs tables, vous pouvez utiliser un simple script comme ceci
--single-transaction
est utilisé sur la structure, mais pas les données de vidage?--ignore-table=db.table
où la table n'existe pasmysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --no-create-info ${DATABASE} ${IGNORED_TABLES_STRING} >> ${DB_FILE}
IGNORED_TABLES_STRING="$(IFS=" "; echo "${EXCLUDED_TABLES[*]/#/--ignore-table=$DATABASE.}")"
| gzip -c > ${DB_FILE}.gz
au lieu de> ${DB_FILE}
man mysqldump
parexcept
, puis parexclude
, mais j'ai oubliéignore
...--ignore-table=mydb.{table1,table2,table3}
. Note pour que cela fonctionne, vous devez utiliser=
entre le nom de l'option et la valeur plutôt qu'un espace.--single-transaction
et--routines
pour le faire fonctionner. Mais il a travaillé. Merci!--no-create-db
à la deuxième commande pour les données, de sorte que la base de données elle-même n'est pas essayé de créer une deuxième fois. Même si c'est juste cosmétique avec laIF NOT EXISTS
clause.Bâtiment sur la réponse de @Brian Fisher et de répondre aux commentaires de certaines personnes sur ce post, j'ai un tas de énorme (et inutile) tables dans ma base de données j'ai donc voulu sauter leur contenu lors de la copie, mais de garder la structure:
La résultante de deux fichiers sont structurellement solides, mais le sous-évaluées de données est maintenant ~500 MO plutôt que de 9GO, beaucoup mieux pour moi. Je peux maintenant importer ces deux fichiers dans une autre base de données à des fins de test sans avoir à vous soucier de la manipulation de 9 GO de données ou de l'espace disque disponible.
de plusieurs bases de données:
mysqld
etmysqldump
seraient les mêmes programmes.Un autre exemple de l'ignorer plusieurs tables
à l'aide de
--ignore-table
et créer un tableau de tableaux, avec syntaxs commedatabase.table
Des liens avec l'information qui vous aidera
compresser sortie mysqldump
Importation de la base de données
Script Simple d'ignorer les tables
D'exclure certains de table données, mais pas la table structure. Voici comment je le fais:
De vidage de la structure de base de données de toutes les tables, sans données:
Puis faire un dump de la base de données avec des données, à l'exception des exclus des tableaux, et de ne pas jeter la structure:
Ensuite, pour le charger dans une nouvelle base de données:
Vidage de toutes les bases de données avec toutes les tables, mais les ignorer certains tableaux
sur github: https://github.com/rubo77/mysql-backup.sh/blob/master/mysql-backup.sh
Avec un peu d'aide de https://stackoverflow.com/a/17016410/1069083
Il utilise lzop qui est beaucoup plus rapide, voir:http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
J'aime Rubo77 la solution, je ne l'avais pas vu avant que je l'ai modifié de Paul. Celui-ci va de la sauvegarde d'une base de données unique, à l'exclusion de toutes les tables que vous ne voulez pas. Il sera alors gzip, et supprimer tous les fichiers de plus de 8 jours. Je vais probablement l'utiliser 2 versions de ce que faire un plein (moins les journaux de la table) une fois par jour, et un autre qui vient de sauvegarde le plus important tables que le plus changer toutes les heures à l'aide d'un couple des tâches cron.
Vous pouvez utiliser le
mysqlpump
de commande avec lede commande. Il spécifie une liste séparée par des virgules de tables à exclure.
Syntaxe de mysqlpump est très similaire à la commande mysqldump, mais sa façon de les rendre plus performants.
Plus d'informations sur la façon d'utiliser l'option exclure que vous pouvez lire ici: https://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html#mysqlpump-filtering