Script para respaldar bases de datos MySQL versión 2

servidor de base de datos

Hace tiempo hice un script para respaldar bases de datos MySQL, pero dejó de funcionar. Esta nueva versión arregla los problemas del anterior aunque en esencia hace las mismas funciones.

El script

El script anterior dejó de funcionar porque en una actualización del paquete mysql-clients no permitía la comprobación, reparación y optimización de las bases de datos en una sola línea. Así que para evitar este problema tuve que separar estas tareas.

Con este código primero revisamos y reparamos cualquier error que pudieran tener todas las tablas de nuestro servidor de trabajo

mysqlcheck -c -A --auto-repair -h $IP_SERVIDOR_MYSQL -u $USUARIO --password=$DB_PASS
Para luego optimizar las tablas
mysqlcheck -A -o -h $IP_SERVIDOR_MYSQL -u $USUARIO --password=$DB_PASS
Claro que ahora el script se tarda un poco más en ejecutar, pero yo no hice las reglas 🙂 .

Adicionalmente, le hice algunos ajustes para que el nombre de los archivos de volcado incluyera información como la fecha, hora, minutos y segundos.

Si quieren darle un vistazo al código completo verán que es muy simple de ajustar y lo pueden descargar aquí: MySQL Backup Script

Sólo tienen que teclear los valores adecuados para los parámetros WORK_DIR, IP_DEL_SERVIDOR_MYSQL, USUARIO CONTRASEÑA.

Y por su puesto, darle permisos de ejecución al script, Ej.

chmod +x mysql_backup.sh
Si tienen cualquier comentario al respecto se los agradeceré. Espero que les sea de utilidad.

10 thoughts on “Script para respaldar bases de datos MySQL versión 2

    • Hola Fede,

      No tengo ninguna base de datos postgresql funcionando actualmente, pero supongo que si se puede adaptar, solo hay que reemplazar algunos comandos. Por ejemplo, en postgresql se utiliza pg_dump para hacer el vaciado de la base de datos a un archivo.

      Saludos !!!.

  1. Hola, muchas gracias por tu script, es muy bueno, nada mas quería preguntarte algo, hay un pequeño error en mi ubuntu, no se a que se deba, despues de que tu script se ejecuta, termina todo perfecto pero el nombre del comprimido es algo asi como DA306M~G.GZ (este es actualmente un nombre real) dentro del archivo ya se encuentra todo en orden, ya ahi veo el archivo dulcer5_pos.respaldo_20160805-12:56:49.sql, sabes como podria arreglar el nombre ?

    Saludos.

      • No, ese no es el problema, el respaldo lo hace bien de una sola base de datos que tengo y se respalda, la unica parte que no funciona bien del todo en el script es esta:

        gzip $file

        ya que en vez de generar el archivo dulcer5_pos.respaldo_20160805-12:56:49.sql.gz genera el archivo DA306M~G.GZ

        mi pregunta es como hago para que gzip respete el nombre del respaldo, para poder visualizar los respaldos correctamente en carpeta, ya que solo puedo saber que respaldo es, hasta que lo abro.

        Espero haberme entendido.

  2. Que tal, fijate que ya se arreglo solo, no estoy muy seguro de como, pero ya se esta comprimiendo con el nombre correcto, lo unico que hice fue modificar esta linea:

    mysqldump -h $IP_SERVIDOR_MYSQL -u"$USUARIO" -p"$DB_PASS" $table > $file

    a

    mysqldump -h $IP_SERVIDOR_MYSQL -u"$USUARIO" -p"$DB_PASS" --hex-blob $table > $file

    por que me di cuenta que mis entradas blob no se podían importar, tal vez esto desencadenaba un error en el archivo, y de alguna forma repercutía en la compresión, es lo único que he movido, y empezó a funcionar el nombre.

¡Me encantaría saber que opinas!

%d bloggers like this: