Respaldos automáticos de bases de datos MySQL
Enviado por Jorge Solórzano en

Si tienes un servidor corriendo MySQL y necesitas realizar respaldos periódicos de tus bases de datos, entonces AutoMySQLBackup te será de gran ayuda. AutoMySQLBackup es un shell script que te permite crear respaldos automáticos diarios, semanales y mensuales. Usa mysqldump para realizar el volcado de las bases de datos y ordenarlas en el directorio que nosotros le configuremos y nos envía por correo el reporte de lo que se realizó.
Instalando AutoMySQLBackup
Para usar esta pequeña utilidad solo instalamos el paquete automysqlbackup que se encuentra en los repositorios universe de Ubuntu. Usando Synaptic, el Centro de Software o tecleando en la terminal:
sudo apt-get install automysqlbackup
Como dependencia requiere tener el paquete mysql-client necesario para conectarse al servidor MySQL, lógicamente si tenemos el servidor MySQL instalado entonces ya tenemos el cliente. También depende de mutt para el envío de los reportes por correo, el problema surge en que si no tenemos instalado un servidor de correo (MTA), este nos instala postfix y nosotros no queremos tener que configurar Postfix para que nos envíe los reportes (ya sea para ahorrar recursos, por seguridad o por la complejidad de su configuración), por lo tanto antes de instalar automysqlbackup, vamos a instalar primero el paquete lsb-invalid-mta en una terminal: sudo apt-get install lsb-invalid-mta, este paquete nos proporciona un sendmail falso (no se enviarán correos) únicamente para satisfacer la necesidad de mutt, en otro post explicaré como configurar el servidor para que nos envie los correos, por el momento podemos instalar automysqlbackup en un solo paso tecleando en la terminal:
sudo apt-get install lsb-invalid-mta automysqlbackup
Configurando
Vamos a proceder con la configuración de AutoMySQLBackup, con cualquier editor de texto 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.
- DBHOST=localhost es el servidor MySQL que queremos respaldar, lo dejamos en localhost ya que estamos en el mismo 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 5 bases de datos en el sistema pero solo queremos respaldar dos tendríamos que configurar este parametro usando los dos nombres de las base de datos por ejemplo: DBNAMES="mailserver syscontable", con esto respaldamos únicamente estas bases de datos.
- 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, una unidad de red NFS o cualquier otra ruta, pero eso es para otro post.
- 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
De último tenemos las opciones PREBACKUP y POSTBACKUP comentareadas, estos son usados para ejecutar comandos antes y después de realizar el respaldo, por ejemplo podemos crear un script que mueva todos los archivos creados a otro directorio montado en una carpeta CIFS (Samba) en otro servidor o que agrupe los últimos respaldos y los agrupe todos en un solo tar, pero todo eso dependiendo de las necesidades del administrador de sistemas.
Probando nuestra configuración
Para hacer una pequeña prueba que los parametros están correctos y se estén creando los respaldos adecuadamente solo necesitamos asignar el parámetro MAILCONTENT="stdout" (en caso que lo tengamos distinto) para ver la salida en pantalla o en "log" si queremos comprobar que se están enviando por correo... en nuestra configuración actual (usando lsb-invalid-mta) no se podrá enviar ningún correo por lo que solo podrémos probar con "stdout".
Ejecutamos el script: sudo /usr/sbin/automysqlbackup si todo sale bien veremos el log en pantalla y 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 hablaré sobre como configurar el servidor para que nos envíe los correos de los logs reenviando el log a un servidor de correo "real".





Añadir nuevo comentario