Mientras configuraba un nuevo entorno de prueba para ayudar al desarrollo a hacer un poco menos de errores, estaba buscando cómo transferir la base de datos sin restaurar un montón de tablas de archivo que verdaderamente no necesitábamos en QA.
Lógicamente, habríamos movido esas tablas de archivo a una base de datos de archivo separada, pero eso sería mucho trabajo y simplemente no hemos tenido ganas. Mmm bolsillos calientes.
Después de mirar nuestra base de datos, nos dimos cuenta de que aproximadamente el 90% del espacio eran datos que verdaderamente no necesitábamos en un entorno de prueba, y la mayoría de esos datos estaban en un par de tablas.
La respuesta, de todos modos, es simplemente utilizar mysqldump con el --ignore-table
opción. La única cosa complicada que debe prestar atención es que debe utilizar un dbname.tablename
sintaxis, no puede simplemente poner el nombre de la tabla. ¿Por qué? /encogimiento de hombros
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, así:
mysqldump -uUser -pPass -hHost --ignore-table=dbname.table1 --ignore-table=dbname.table2 dbname > db.bak
Pensaría que podría simplemente poner las exclusiones con espacios como lo hace cuando especifica solo tablas particulares para exportar en primer lugar. Pero no, eso sería demasiado consistente.
Para importar ese archivo exportado nuevamente en otra máquina, usaría algo como esto para ejecutar todos los comandos e inserciones en el archivo:
mysql -uUser -pPass -hHost databasename < db.bak