Mydumper, herramienta para hacer backups de Mysql

Hace un tiempo les hable de automysqlbackup, que es otra herramienta para crear backups automaticos de mysql. Pero de repente dejo de funcionar. Y como no tenia ganas de ponerme a ver cual era el problema simplemente busque otra utilidad para hacer lo mismo y me encontre con mydumper, que ademas esta mucho mejor.

Y estas son las razones:

Los backups son rapidisimos. Hay varios tests por muchas webs pero casi todos llegan a la misma conclusion: mydumper es muy rapido en comparacion a otras alternativas, en especial cuando se trata de bases de datos bastante grandes.

  • Casi no se bloquea con tablas InnoDB
  • Crea backups por cada tabla.
  • Separa el esquema de los datos.
  • Y crea una linea de archivo por linea de tabla. Que mucho mejor que cuando se hace un solo insert gigante que al final siempre trae algun problema.

Esto de que cree tantos archivos, uno por tabla, separando esquema de datos puede parecer incomodo y desordenado. Pero es en realidad muy util por 2 motivos:

  • Es mas facil rescatar solo una tabla cuando ocurre un problema, en vez de estar lidiando con toda la base de datos.
  • Es mas facil hacer backups usando servicios de almacenamiento en la nube como Dropbox o Copy.

Vamos a ver a continuacion como:

  • Instalar y configurar mydumper
  • Programar backups automaticos
  • Hacer backup de mysql en la nube

Comencemos.

Instalar y configurar Mydumper

Si tienes Arch linux basta con hacer

yaourt -S mydumper

Si usas Ubuntu

sudo apt-get install mydumper

Para ver todas las opciones puedes escribir en la consola el comando

mydumper --help

Pero te voy a dar el comando que yo uso y el que recomiendo

mydumper --regex '^(?!(mysql|information_schema))' -o /srv/http/backups/mysql -r 100000 -c -e -u root -p tu_password -h localhost -t 2 -v 3

  • --regex '^(?!(mysql|information_schema))' es para que haga backup de todas las tablas menos de la tabla mysql e information_schema
  • -o /srv/http/backups/mysql es donde quiero que guarde el backup
  • -r 100000 es el numero de filas por chunk
  • -c para que comprima
  • -e para que cree el backup de las tablas aunque esten vacias...por las dudas
  • -t 2 es para que use 2 hilos y sacar mayor provecho al procesador multinucleo
  • -v 3 es el nivel de informacion que quiero en los logs

En la carpeta de destino deberias poder ver ahora todos los archivos del backup

Programar backups automaticos

Necesitas programar un tarea cron para. Para ello necesitas alguna implementacion de cron. En Ubuntu ya viene instalada, en Arch tendras que instalarla y activarla con estos 3 comandos

sudo pacman -S cronie

sudo systemctl start cronie

sudo systemctl enable cronie

Ahora conviene instalar algun cliente grafico como gnome-schedule. Esta en los repositorios de ambas distribuciones. Y alli podran agregar el comando para ejecutar mydumper todos los dias o una vez a la semana. Algo asi:

cron mydumper

Como veran en mi caso esta programado para hacerse todos los dias a las 23hs.

Hacer backup de mysql en la nube

Para eso nos vamos a apoyar de Dropbox o Copy. Ya saben que Copy es una excelente alternativa a Dropbox.

Para usar la nube solo tienen que crear un enlace simbolico desde la carpeta donde mydumper guarda los archivos generados hasta la carpeta del servicio que elijan. Entonces seria usar uno de estos 2 comandos:

ln -s /srv/http/backups/mysql /home/mi_usuario/Copy/Mysql

o

ln -s /srv/http/backups/mysql /home/mi_usuario/Dropbox/Mysql

Por supuesto reemplacen "/srv/http/backups/mysql" por la ubicacion en donde se guardan lo que genera mydumper. Y eso es todo.

Una cosa mas, mydumper viene con otra utilidad llamada myloader que sirve para hacer el proceso inverso, o sea cargar los backups en sus bases de datos. Asi que haciendo algunas pruebas estoy seguro que lograran tener sincronizadas sus bases de datos entre distintas pcs. O en teoria ... no lo he probado.

Si usas otra tecnica para hacer backups me gustaria conocerla.

Se bueno y comparte!
Publicado el Categorías Diseño y Desarrollo Web, Tutoriales

Acerca de Perro

Ingeniero en Informática. Programador en PHP y Angular. Lo que mas adoro en el mundo es el conocimiento. Y el anime....y Japón...y el running...y bloguear claro y algunas otras cientos de cosas. Sigo buscando la manera de hacer mi primer millón.

Comenta!

Comenta aquí

avatar
wpDiscuz