Comment exclure des tables des exportations MySQL à l'aide de mysqldump

Lors de la mise en place d'un nouvel environnement de test pour aider le développement à faire un peu moins de bugs, je cherchais comment transférer la base de données sans restaurer un tas de tables d'archives dont nous n'avions vraiment pas besoin sur QA.
Logiquement, nous aurions déplacé ces tables d'archives vers une base de données d'archives distincte, mais cela représenterait beaucoup de travail et nous n'en avions tout simplement pas envie. Poches chaudes mmm.
Après avoir examiné notre base de données, nous avons réalisé qu'environ 90 % de l'espace était constitué de données dont nous n'avions vraiment pas besoin dans un environnement de test, et la plupart de ces données se trouvaient dans quelques tables.
La solution, bien sûr, consiste simplement à utiliser mysqldump avec l'option --ignore-table. La seule chose délicate que vous devez garder à l'esprit est que vous devez utiliser une syntaxe dbname.tablename, vous ne pouvez pas simplement mettre le nom de la table. Pourquoi? /hausser les épaules
mysqldump -uUser -pPass -hHost --ignore-table=dbname.tablename dbname > db.bakSi vous souhaitez exclure plusieurs tables, vous pouvez utiliser plusieurs fois le même argument sur la ligne de commande, comme ceci :
mysqldump -uUser -pPass -hHost --ignore-table=dbname.table1 --ignore-table=dbname.table2 dbname > db.bak
Vous penseriez que vous pourriez simplement mettre les exclusions avec des espaces comme vous le faites lorsque vous spécifiez uniquement des tables particulières à exporter en premier lieu. Mais non, ce serait trop cohérent.
Pour importer à nouveau ce fichier exporté sur une autre machine, vous utiliseriez quelque chose comme ceci pour exécuter toutes les commandes et insertions dans le fichier :
mysql -uUser -pPass -hHost databasename < db.bak