El 16 de diciembre de 2011, respondí a la pregunta ¿Cómo mysqldump tablas específicas?
Recopilé todas las tablas sin incluir un cierto conjunto de nombres de tablas.
Utilizando los mismos principios, podría haber recopilado todos los nombres de bases de datos de la tabla de metadatos information_schema.schemata
que desea mysqldump'd, crear una consulta para devolver esa lista, luego usar esa lista de bases de datos para formular el comando mysqldump.
DATABASES_TO_EXCLUDE="db1 db2 db3"
EXCLUSION_LIST="'information_schema','mysql'"
for DB in `echo "${DATABASES_TO_EXCLUDE}"`
do
EXCLUSION_LIST="${EXCLUSION_LIST},'${DB}'"
done
SQLSTMT="SELECT schema_name FROM information_schema.schemata"
SQLSTMT="${SQLSTMT} WHERE schema_name NOT IN (${EXCLUSION_LIST})"
MYSQLDUMP_DATABASES="--databases"
for DB in `mysql -ANe"${SQLSTMT}"`
do
MYSQLDUMP_DATABASES="${MYSQLDUMP_DATABASES} ${DB}"
done
MYSQLDUMP_OPTIONS="--routines --triggers"
mysqldump ${MYSQLDUMP_OPTIONS} ${MYSQLDUMP_DATABASES} > MySQLDatabases.sql
Todo lo que necesita hacer es poner las bases de datos en las que no desea mysqldump'd DATABASES_TO_EXCLUDE
Darle una oportunidad !!!
information_schema
que de todos modos no se está volcando.mysqldump does not dump the INFORMATION_SCHEMA or performance_schema database by default. To dump either of these, name it explicitly on the command line and also use the --skip-lock-tables option. You can also name them with the --databases option. Before MySQL 5.5 mysqldump silently ignores INFORMATION_SCHEMA even if you name it explicitly on the command line.
dev.mysql.com/doc/refman/5.5/en/mysqldump.htmlUse grep para excluir las bases de datos que no desea:
Al mirar /programming/19354870/bash-command-line-and-input-limit parece que podrá manejar largas líneas. De lo contrario siempre puedes
fuente
grep
de para pasar de la salida de varias líneas a una sola línea con cada nombre de base de datos separado por un espacio, que es requerido pormysqldump
. Entonces el comando serácandidates=$(echo "show databases" | mysql | grep -Ev "^(Database|mysql|performance_schema|information_schema)$" | paste -sd " " -)
No creo que sea posible, pero puede probar esta solución que tendrá que escribir los nombres de todas las bases de datos que desea volcar.
Avíseme si la solución ayuda.
fuente
Incluso aquí hay muchas respuestas excelentes, por lo que esta publicación es solo para agregar una opción más. Por debajo de 2 líneas en la secuencia de comandos, puede llevar a sus servidores todas las copias de seguridad de la base de datos ignorando alguna base de datos.
fuente
sys
ya que es parte de MySQL 5.7Alternativamente, puede mirar los siguientes enlaces;
Mysqldump ignora la opción de base de datos
Algunos trucos para simular mysqldump --ignore-database
Implementando mysqldump –ignore-database
Avíseme si la solución ayuda.
¡Buena suerte!
fuente
Muchos siempre han querido que mysqldump ignore las bases de datos.
¿Creería que esa opción existe ahora? No, no en mysqldump.
Oracle (Yuck, toowee, todavía no se sale de la lengua) tiene DataPump (expdb impdp) para volcar las bases de datos Oracle. Desde MySQL 5.7 en la familia de Oracle (todavía daña), el nuevo programa de utilidad de copia de seguridad se llama mysqlpump , que viene con --exclude-bases de datos y otras opciones interesantes . Al igual que su bomba de datos de hermanastros más antigua , mysqlpump también presenta paralelismo para ayudar a acelerar los volcados y dividir el trabajo . En este momento, no me he incorporado al trabajo, pero parece muy prometedor. Cuando me sumerjo profundamente en mysqlpump , podría encontrar que tiene la misma apariencia que la bomba de datos de Oracle .
Si hay alguien en el Universo paralelo de MySQL con historias al respecto, publíquelo aquí.
fuente
La respuesta de Rolando es bastante buena, pero quería un guión que se pueda reutilizar en todos los proyectos. Entonces, tomé su guión y lo modifiqué para que pueda hacer cosas como:
Aquí está el script modificado:
(Todavía espero que
--ignore-database
se agregue una opción a una versión futura de mysqldump)fuente
Desde MySQL 5.7.8, puede usar
mysqlpump
(que NO es lo mismo quemysqldump
) de la siguiente manera:Simplemente reemplace
db1,db2,db3,db4
con las cuatro bases de datos que desea excluir.Fuente: Blog del servidor MySQL
fuente