Script para respaldar todas las bases de datos de un servidor MySQL

Hoy en la mañana estaba leyendo este artículo llamado Script para backups automáticos de tu servidor lo vi y me pareció una buena idea hacer uno propio para respaldar todas las bases de datos que tengo en mi servidor MySQL.

Tomé prestadas algunas ideas del script que muestran en DesdeLinux.net y otras del sitio Tail -f Backup de todas las bases de datos MySQL en archivos separados.

El script de DesdeLinux es muy completo, hacen un respaldo de varios archivos, un vaciado de las bases de datos que consideran importantes y hasta envía un correo electrónico a los administradores con el resultado del respaldo. En lo personal a mi me gusta copiar archivos utilizando el comando rsync, pero esa es otra historia.

Al principio intenté hacer un mysqldump de todas las bases de datos en un solo archivo, pero el resultado fue un mega archivo de 27 MB que era muy difícil de abrir para gedit (o cualquier otro editor de texto). Si solo necesito restaurar una base de datos en lugar de todas la tarea se puede complicar un poco.

Por eso que decidí generar un solo archivo para cada base de datos del servidor MySQL. Ahí es donde entra en acción el script de Tail que explica muy bien como generar un archivo independiente por cada base de datos.

El resultado es un archivo por cada base de datos que incluye en el nombre del archivo la fecha en la que fue realizado el respaldo.

El script esta diseñado para ejecutarse en un equipo diferente al que ejecuta el servidor de base de datos, aunque supongo que si le ponen localhost en la variable IP_SERVIDOR_MYSQL también puede funcionar.

Como un plus, el script realiza una optimización y reparación de todas las bases de datos del servidor antes de hacer el vaciado de las bases de datos.

Ajustando los parámetros

Para utilizarlo es necesario descargar el archivo, abrirlo y modificar los parámetros

  • WORK_DIR Es la ruta donde quieres que se guarden los archivos.
  • IP_SERVIDOR_MYSQL Es la dirección ip del servidor, también podría funcionar un nombre de dominio o si el servidor es la misma maquina en la que se ejecuta el script localhost sería lo correcto.
  • USUARIO Un usuario con los permisos de acceso necesarios, root funciona la mayoría de las veces.
  • DB_PASS La contraseña del usuario 🙂

Para ejecutar el script es necesario darle permisos de ejecución con:

chmod +x respaldo_mysql.sh

Y suerte !!!

El script funciona muy bien en mi equipo y espero que en el de ustedes también. Si tienen alguna duda favor de poner un comentario.

Descargar respaldo_mysql.sh

Actualización. Este script dejó de funcionar por un error al intentar ejecutar varias tareas de manera simultánea, pueden ver la versión más reciente en: Script para respaldar bases de datos MySQL versión 2.

7 thoughts on “Script para respaldar todas las bases de datos de un servidor MySQL

  1. excelente soy nuevo en linux y aprendo con bolita palito como dicen jejeje
    se que es mucho pedir pero seria bueno como sigerencia poner

    1.-abre tu linux
    2.-poner este comando “x”.sh
    3.-despues este comando .sh y te pedira el nombre de tu server ejemplo “root”
    4.- este comando sh. va tu correo electronico
    etc.

    pero gracias por la ayuda ojala se pueda

    saludos

  2. Hola que buen scritp para los respaldos nose mucho sobre linux y me ha sido de gran ayuda solo tengo una pregunta si quisiera hacer un respaldo incremental a partir del completo como seria de antemano muchas gracias…

    exelente dia

  3. Excelente tu script me sirvió mucho, solo que me marco el siguiente error al ejecutar la siguiente sentencia:

    mysqlcheck -c -A –auto-repair -o -h localhost -u root -p”pws”

    Error: mysqlcheck doesn’t support multiple contradicting commands.

    Y como lo mencionaste en versiones recientes no permite múltiples comandos, así que con la versión dos que sugeriste quedo funcionando.

    Muchas gracias por tu compartir tus conocimientos.

    • Así es Arturo,

      Este problema se soluciona en la versión 2 del script separando estas tareas, de esa forma ya no marca el error.

      Tengo una versión más reciente que imprime en el nombre del archivo la fecha y la hora, para que no te de error si ejecutas dos o más veces el script el mismo día.

      Saludos.

¡Me encantaría saber que opinas!

%d bloggers like this: