Recientemente tuve que “dumpear” todas las bases de datos de un servidor por lo que utilice un script muy simple para hacerlo:
USER=root;PASS=mi_pass;for database in `echo "SHOW DATABASES" | mysql --user=$USER --password=$PASS | sed '1d'`; do mysqldump --user=$USER --password=$PASS $database > $database.sql; tar jcvf $database.tar.bz2 $database.sql; rm $database.sql; done
Un poco más leible:
USER=root PASS=mi_pass for database in `echo "SHOW DATABASES" | mysql --user=$USER --password=$PASS | sed '1d'` do mysqldump --user=$USER --password=$PASS $database > $database.sql tar jcvf $database.tar.bz2 $database.sql rm $database.sql done
Básicamente manda todas las bases de datos y quita la linea inicial (que siempre es Databases) y por cada base de datos invoca mysqldump y por último lo comprime con bunzip2 para obtener un archivo muy pequeño y por supuesto elimina las “fuentes” de sql.