Subscribe:

viernes, 15 de julio de 2011

RESPALDOS DE BASE DE DATOS MYSQL CON AUTOMYSQLBACKUP

AutoMySQLBackup es un shell script que te permite crear respaldos automáticos diarios, semanales y mensuales  de una o varias base de datos mysql. Usa mysqldump para realizar el volcado de las bases de datos y ordenarlas en el directorio que nosotros le configuremos.



Instalación del AutoMySQLBackup
Si tienes funcionando perfectamente el mysql, procedemos a la instalación AutoMySQLBackup. Ahora bien, como el paquete se encuentra en los repositorios  de Ubuntu, podemos instalarlo tecleando en la terminal:
sudo apt-get install automysqlbackup

Configuración del AutoMySQLBackup
Vamos a proceder con la configuración de AutoMySQLBackup, con cualquier editor de texto (nano, gedit, leafpad, etc) abrimos el archivo de configuración que se encuentra en: /etc/defaults/automysqlbackup. Este paquete viene preconfigurado para usar el archivo /etc/mysql/debian.cnf donde se encuentran los parametros de conexión, por lo tanto los parametros USERNAME y PASSWORD los vamos a dejar comentados. Si lo quieres descomentar, debes colocar el usuario y la clave de la conexión mysql. Los siguientes parámetros se listan a continuación:
  • DBHOST=localhost es el servidor MySQL que queremos respaldar, lo dejamos en localhost ya que estamos en el mismo servidor, tambien podemos colocar la dirección ip del servidor.
  • DBNAMES= aqui pondremos los nombres de las bases de datos que queremos respaldar, el paquete viene preconfigurado para tomar los nombre de todas las base de datos realizando una consulta al servidor MySQL, omitiendo la base de datos mysql, si por ejemplo tenemos 3 bases de datos en el sistema pero solo queremos respaldar una tendríamos que configurar este parametro usando los dos nombres de las base de datos por ejemplo: DBNAMES="bd1 bd2", con esto respaldamos únicamente estas bases de datos. Si queremos respaldar una el valor sería DBNAMES="bd1", es importante colocarlo en comillas dobles.
  • BACKUPDIR="/var/lib/automysqlbackup" es el directorio donde se guardarán todos los respaldos, podemos por ejemplo cambiarlo para que apunte a otro disco duro la ruta sería sería /media/nombredelaunidad
  • MAILCONTENT= es lo que se nos enviará por correo, esto lo dejamos en "stdout" ya que no tenemos configurado un MTA (estamos usando lsb-invalid-mta), si tenemos un MTA configurado podemos asignar los valores de:
    • "log", para que nos envíe solo el log de lo que se hizo.
    • "files" para que nos envie el log y los archivos que se realizan de respaldo.
    • "stdout" solo imprimirá en pantalla lo que normalmente se envia por correo (si se ejecuta manualmente).
    • "quiet" solo nos enviará el log si se produce un error al ejecutar el script.
  • MAXATTSIZE= es el tamaño maximo permitido para enviar el correo, si elegimos la opción "files" anterior y contiene bases de datos grandes que superan el tamaño permitido del servidor de correo (por ejemplo Gmail tiene un limite de 20MiB de adjuntos) entonces esta opción evitara el envío inecesario de un correo grande que será rechazado.
  • MAILADDR= es la dirección de correo a la que se enviarán los logs.
  • DBEXCLUDE= con esto excluiremos las bases de datos que le pasemos como parametro, esto es cuando estamos realizando respaldos de todas las bases de datos pero queremos excluir ciertas bases de datos.
  • CREATE_DATABASE= es un valor "yes" o "no" que agrega a los respaldos la creación de la base de datos.
  • SEPDIR= si tiene el valor "yes" nos crea una carpeta separada por cada base de datos y un valor "no" nos crear un solo archivo con todas las bases de datos incluidas.
  • DOWEEKLY= el día de la semana que queremos que se realicen los respaldos semanales, siendo 1 el Lunes y 7 el Domingo.
  • COMP= para aplicar compresión a los archivos, los valores permitidos son gzip y bzip2, aunque se puede hackear un poco el script para permitir compresiones distintas (ZIP, 7zip, etc), yo por ejemplo he modificado el script para permitir hacer respaldos con compresión XZ (LZMA2) resultando en archivos más pequeños que los generados por gzip o bzip.
  • COMMCOMP= valores "yes"-"no" si es el servidor local lo dejamos en "no".
  • LATEST= además de generar respaldos diarios, semanales y mensuales, nos permite crear una carpeta donde esta el último respaldo generado. 
 Prueba de la configuración 
Ejecutamos en el terminal el script: sudo /usr/sbin/automysqlbackup si todo sale bien, podremos comprobar que en el directorio /var/lib/automysqlbackup se crean las respectivas carpetas conteniendo las bases de datos respaldadas.  
Bueno con esto estaremos listos para tener nuestros respaldos a mano de manera simple y cómoda... En el próximo post explicaremos como personalizar los minutos, horas y días que queremos que se ejcute el scrip sudo /usr/sbin/automysqlbackup , el cual es el que general el respaldo.

3 comentarios:

julian dijo...

viejo me interesa ese proximo post, donde lo puedo ver?

twitter @elbasysteming dijo...

http://ingdesistemasvzla.blogspot.com/2011/07/tareas-programadas-con-gnulinux.html ... ELBA MARIA...

Luis Vicente Gómez Ontiveros dijo...

Gracias!

Excelente!

Si acaso un poco confuso la parte que tiene que ver con la sección que se tiene que comentar para las bases de datos.

En este caso para ser más explícitos lo que se tiene que hacer es comentar la línea del script DBNAMES y escribir una nueva línea para la tu base de datos.

# This one does a lists of dbs...
# DBNAMES='mysql --defaults-file=/etc/mysql/debian.cnf.... <----Comentada.
DBNAMES="MIBASEDEDATOS"

Publicar un comentario