Backup de todas las bases de datos MySQL con una sola línea de comandos

Probablemente la mayoría de vosotros trabajéis con bases de datos MySQL y tengáis scripts personalizados para hacer copias de seguridad de las mismas. Por ello, y por si os fuera de utilidad os dejo esta línea de comandos  que hace un dump de todas las bases de datos de un servidor MySQL separadas en ficheros .sql independientes.

for DB in `mysql -e "show databases" -u USUARIO -pPASSWORD | grep -v Database`; do mysqldump -u USUARIO -pPASSWORD $DB > "$DB.sql"; done

Como podéis ver es bastante sencillo, hacemos un bucle con la salida del comando “show databases” que vuelca por pantalla todas las bases de datos del servidor, eliminamos la única línea que no nos interesa (la que contiene Database) y vamos haciendo una a una la copia de seguridad de cada una de las bases de datos con mysqldump. Únicamente tendréis que modificar el usuario y clave con el que conectar al servicio.

10 comentarios en “Backup de todas las bases de datos MySQL con una sola línea de comandos

  1. Hola Alex,

    Te puedes ahorrar el “grep” si llamas al primer “mysql” con la opción “-B” para trabajar en modo batch:

    for DB in `mysql -Bse ‘SHOW DATABASES’` ; do mysqldump $DB | bzip2 > $DB.sql.bz2 ; done

    Saludos!

  2. Siguiendo el ejemplo que habéis planteado yo le he agregado la fecha a cada backup:

    for DB in `mysql -Bse “show databases” -uusuario -pcontraseña`; do mysqldump -usuario -pcontraseña $DB | bzip2 -c > “bkp_.$DB.mysql_`date +%a%d%b%Y_%H-%M`.sql.bz2”; done

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *