¿Hay alguna manera de restringir ciertas tablas del comando mysqldump?
Por ejemplo, usaría la siguiente sintaxis para volcar solo table1 y table2:
mysqldump -u username -p database table1 table2 > database.sql
Pero, ¿hay una forma similar de volcar todas las tablas excepto table1 y table2? No he encontrado nada en la documentación de mysqldump, entonces ¿es la fuerza bruta (especificando todos los nombres de las tablas) la única forma de hacerlo?
Basándome en la respuesta de @ Brian-Fisher y respondiendo los comentarios de algunas de las personas en esta publicación, tengo un montón de tablas enormes (e innecesarias) en mi base de datos, así que quería omitir su contenido al copiar, pero mantener la estructura :
Los dos archivos resultantes son estructuralmente sólidos, pero los datos volcados ahora son ~ 500 MB en lugar de 9 GB, mucho mejor para mí. Ahora puedo importar estos dos archivos a otra base de datos con fines de prueba sin tener que preocuparme por manipular 9 GB de datos o quedarse sin espacio en disco.
fuente
para múltiples bases de datos:
fuente
mysqld
ymysqldump
serían los mismos programas.Otro ejemplo para ignorar varias tablas.
usando
--ignore-table
y crea una matriz de tablas, con sintaxis comodatabase.table
Enlaces con información que lo ayudará
comprimir salida mysqldump
Importar base de datos
Script simple para ignorar tablas
fuente
Para excluir algunos datos de la tabla , pero no la estructura de la tabla . Así es como lo hago:
Volcar la estructura de la base de datos de todas las tablas, sin ningún dato:
Luego volcar la base de datos con datos, excepto las tablas excluidas, y no volcar la estructura:
Luego, para cargarlo en una nueva base de datos:
fuente
Puede usar el
mysqlpump
comando con elmando. Especifica una lista de tablas separadas por comas para excluir.
La sintaxis de mysqlpump es muy similar a mysqldump, pero es mucho más eficiente. Puede leer más información sobre cómo usar la opción de exclusión aquí: https://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html#mysqlpump-filtering
fuente
Volcar todas las bases de datos con todas las tablas pero omitir ciertas tablas
en github: https://github.com/rubo77/mysql-backup.sh/blob/master/mysql-backup.sh
Con un poco de ayuda de https://stackoverflow.com/a/17016410/1069083
Utiliza lzop, que es mucho más rápido, consulte: http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
fuente
Me gusta la solución de Rubo77, no la había visto antes de modificar la de Paul. Esta copia de seguridad de una sola base de datos, excluyendo cualquier tabla que no desee. Luego lo comprimirá y eliminará los archivos que tengan más de 8 días. Probablemente usaré 2 versiones de esto que hacen una completa (tabla de registros menos) una vez al día, y otra que solo respalda las tablas más importantes que cambian más cada hora usando un par de trabajos cron.
fuente
En aras de la exhaustividad, aquí hay un script que en realidad podría ser una línea para obtener una copia de seguridad de una base de datos, excluyendo (ignorando) todas las vistas. Se supone que el nombre de db son empleados:
Puede actualizar la lógica de la consulta. En general , puede usar
group_concat
yconcat
puede generar casi cualquier cadena deseada o comando de shell.fuente
En general, debe usar esta función cuando no quiera o no tenga tiempo para lidiar con una mesa enorme. Si este es su caso, es mejor usar la opción --where desde mysqldump que limita el conjunto de resultados. Por ejemplo,
mysqldump -uuser -ppass database --where="1 = 1 LIMIT 500000" > resultset.sql
.fuente