Backup auto, reinicio servidor y notificaciones

Backup auto, reinicio servidor y notificaciones

Un backup o una copia de seguridad como se conoce en castellano, no es más que una copia de los datos originales. Esta copia se realiza con el fin de disponer de un medio para recuperarlos en caso de pérdida.

Los problemas surgen a la hora de tomar decisiones como, ¿cada cuánto hago los backup? y la pereza posterior cuando llega el momento de realizarlos. No os preocupéis nos pasa a todos.

En esta entrada vamos a configurar nuestro servidor para solucionar estos problemas. De esta forma el servidor será el encargado automáticamente de hacer los backup, el reinicio del servidor y la notificación mediante correos electrónicos al usuario.

El proceso se va a realizar en un servidor Centos 7 y una BBDD MySQL.

Herramientas

Para llevar a cabo esta tarea necesitaremos una serie de herramientas software. La primera de ellas es “mysqldump”, mediante la cual realizaremos el backup de la BBDD MySQL.  Para el backup de los directorios vamos a utilizar “tar”.

Mediante “crontab” vamos a definir la temporalidad con la cual los backup van a hacerse. En último lugar para notificar al usuario los resultados del proceso utilizaremos “ssmtp”.

Instalación de MySQL

Resulta lógico pensar que si queremos hacer un backup de una base de datos, debemos contar con una previamente instalada. En nuestro caso tenemos instalado una MySQL, por lo tanto instalaremos “mysqldump”. Esta herramienta es la que nos ofrece MySQL para realizar los backup. En caso de no contar con MySQL debemos instalarlo en nuestro servidor, para ello usaremos la línea a continuación.

#sudo yum -y install mysql-community-server

Una vez que la instalación ha finalizado comprobaremos si “mysqldump”, ha sido instalado con éxito mediante el siguiente comando.

#sudo mysqldump --version

Configuración de Simple SMTP

El siguiente paso consiste en instalar SSMTP. Esta herramienta va a permitir al servidor enviar mediante un correo electrónico los resultados del proceso de backup. Para ello usaremos el siguiente comando.

#sudo yum install ssmtp

Una vez completada la instalación debemos configurar nuestra cuenta de correo para SSMTP. En nuestro caso hemos configurado una cuenta de Gmail. Para ello hemos modificado el fichero “/etc/ssmtp/ssmtp.conf” tal y como se muestra a continuación

root=postmaster
mailhub=smtp.gmail.com:587
Hostname=localhost
FromLineOverride=YES
UseTLS=Yes
UseSTARTTLS=Yes
AuthUser=”cuentadecorreosinarroba”
AuthPass=”contraseña”
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt

Para utilizar este método de autenticación es necesario tener habilitada la verificación en dos pasos de Gmail, para habilitarlo hacer clic aquí. De esta forma por cada dispositivo podemos asociar una contraseña que será única para este dispositivo.

El segundo fichero que debemos configurar es “/etc/ssmtp/revaliases”, para ello hemos añadido la línea siguiente.

root:”[email protected]”:smtp.gmail.com:587

Para probar si SSMTP ha sido configurado correctamente podemos utilizar el siguiente comando. Este comando nos enviará un correo electrónico a la cuenta de correo que nosotros elijamos.

echo "Prueba utilizando ssmtp desde CentOS" | ssmtp -vvv [email protected]

Configuración *sh

El siguiente paso ha sido crear un *.sh donde se guardarán todos los comandos bash que queremos ejecutar. Se ha obtenido la fecha del sistema y se ha colocado automáticamente en el nombre de los ficheros resultado del proceso de backup tal y como se muestra a continuación.

sudo tar -czvf /home/backups/piensaenbinario_$(date +"%d_%m_%Y").tar.gz /var/www/piensaenbinario
sudo mysqldump --user=USER --password=PASS NOMBRE_BBDD > /DIRECTORIO/NOMBRE_FICHERO_$(date +"%d_%m_%Y").sql
sudo reboot

El fichero resultante lo hemos guardado en el directorio “/home/sh/” con el nombre “backup.sh”.

Es importante destacar que colocar contraseñas en ficheros es algo que no se debe hacer. Para minimizar el riesgo podemos crearnos un usuario con permisos limitados y con acceso únicamente a la BBDD de la que queremos hacer el backup. Este usuario creado será el encargado de realizar el proceso de backup de la BBDD.

Configuración de Crontab

El último paso ha sido configurar Crontab. Crontab viene instalado por defecto en CentOS 7, para comprobar que se ejecuta cada vez que se levanta el servidor usaremos el siguiente comando.

#sudo systemctl status crond

Debemos obtener el resultado que se muestra a continuación. El servicio debe estar “enabled”. Este paso es muy importante ya que hemos programado un reinicio del servidor al finalizar el proceso de backup.

backup_systemctl_crond

Para añadir las nuevas reglas al cron hemos usado el siguiente comando.

#sudo crontab –e

Si todo ha funcionado correctamente aparecerá un editor de texto. En este nuevo fichero debemos añadir la regla siguiente.

@monthly /home/sh/backup.sh 2>&1 | mail -s "Resultado backup" [email protected]

Mediante “@monthly” hemos configurado el cron para que se ejecute mensualmente.

Si queremos comprobar las reglas que hemos añadido al cron debemos ejecutar el siguiente comando.

#sudo crontab –l

Llegados a este punto únicamente debemos esperar al primer día del mes y comprobar que todo ha funcionado correctamente. En caso de que no queráis esperar este tiempo, podemos configurar el cron con otra periodicidad más cercana y comprobar que todo ha salido correctamente.

Referencias

Crear copia de un archivo añadiendo la fecha en el nombre

http://felinfo.blogspot.com.es/2012/07/crear-copia-de-un-archivo-anadiendo-la.html

Cómo hacer copias de seguridad de una base de datos MySQL

http://librosweb.es/tutorial/como-hacer-copias-de-seguridad-de-una-base-de-datos-mysql

How To Setup Email Alerts on Linux Using Gmail or SMTP

http://www.howtogeek.com/51819/how-to-setup-email-alerts-on-linux-using-gmail

Schedule Tasks on Linux Using Crontab

http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/

Debes haber iniciado sesión para publicar un comentario.