
Necesito exportar alrededor de 20 bases de datos en un servidor MySql que contiene alrededor de 100 bases de datos diferentes. ¿Es posible exportar una lista de nombres de bases de datos en archivos separados usando un comando de consola? (en Linux, por supuesto).
Respuesta1
echo "show databases" | mysql -N | while read db
do
mysqldump ${db} > ${db}.sql
done
Podría utilizar grep
para eliminar bases de datos no deseadas como mysql
yinformation_schema
Respuesta2
Cree un archivo de texto con el nombre de cada base de datos que desea respaldar en su propia línea
p.ej
db1
reports
Entonces usa un script como este
#!/bin/bash
ERRORS=0
while read db
do
echo "Processing $db"
mysqldump -u root -p365576dx "$db" >"$db".sql
EXITSTATUS=$?
if [ "$ERRORS" -eq "0" -a "$EXITSTATUS" -ne "0" ]
then
ERRORS="$EXITSTATUS"
fi
done<dbstodump
if [ "$ERRORS" -ne "0" ]
then
echo "Errors occurred see above for details"
exit 1
fi
Respuesta3
La solución más sencilla sería un bucle for simple directamente en la línea de comando. En mis ejemplos quiero exportar las bases de datos cars
y animals
.computers
for db in cars animals computers ; do mysqldump -uuser -ppassword "$db" > "$db.sql" ; done