Cómo exportar una determinada cantidad de bases de datos MySql con un solo comando

Cómo exportar una determinada cantidad de bases de datos MySql con un solo comando

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 greppara eliminar bases de datos no deseadas como mysqlyinformation_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 carsy animals.computers

for db in cars animals computers ; do mysqldump -uuser -ppassword "$db" > "$db.sql" ; done

información relacionada