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:”cuentadecorreo@gmail.com”: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 direccion@loquesea.com
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.
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" direcciondecorreo@loquesea.com
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/
Tienes que estar conectado para dejar un comentario.