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 pas vraiment besoin en QA.
Logiquement, nous aurions déplacé ces tables de fichiers dans une base de données de fichiers distincte, mais ce serait beaucoup de travail et nous n'en avions pas envie. Mmm poches chaudes.
Après avoir consulté notre base de données, nous nous sommes rendu compte qu'environ la 90% de l'espace était des 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 tableaux.
La réponse, de toute façon, est juste d'utiliser mysqldump avec le --ignore-table
option. La seule chose compliquée à laquelle vous devez faire attention est que vous devez utiliser un dbname.tablename
syntaxe, vous ne pouvez pas simplement mettre le nom de la table. Parce que? /Hausser les épaules
mysqldump -uUser -pPass -hHost --ignore-table=dbname.tablename dbname > db.bak
Si desea excluir varias tablas, puede utilizar el mismo argumento más de una vez en la línea de comando, Donc:
mysqldump -uUser -pPass -hHost --ignore-table=dbname.table1 --ignore-table=dbname.table2 dbname > db.bak
Je pense 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 réimporter ce fichier exporté sur une autre machine, J'utiliserais quelque chose comme ça pour exécuter toutes les commandes et insertions dans le fichier:
mysql -uUser -pPass -hHost nom de la base de données < db.bak