Tabla de Contenidos
Respaldos Diarios Linux
Con un servidor instalando y una base de datos corriendo, es posible preparar el sistema para que lleve a cabo respaldos diarios (nocturnos) de la base de datos.
Requisitos
- Los paquetes básicos de Linux descritos en Base Helpcom.
- Python >= 2.7.
- Acceso a internet.
Preparación
Para estos pasos hacemos login como root
.
Instalamos los paquetes que sigue:
apt-get install python python-configparser python-dateutil python-pip fossil rsync
Si todo sale correctamente podemos terminar nuestra sesión.
Pasos
Configuración
Para estos pasos hacemos login con el usuario normal del sistema (p.ej.: administrador
).
Primero, creamos una carpeta con una estructura de archivos para almacenar los respaldos diarios.
administrador@host ~ $ mkdir -p respaldos/db administrador@host ~ $ mkdir -p bin/repolist
A continuación entramos a la carpeta respaldos
:
cd respaldos
, y desde ella descargamos el software de Helpcom respaldarv2
como se indica en el artículo (copiado aquí, pero la versión original puede estar más actualizada):
administrador@host ~/respaldos $ fossil clone https://chiselapp.com/user/lmachucab/repository/respaldarv2 respaldarv2.fossil administrador@host ~/respaldos $ fossil open respaldarv2.fossil
Esto crea una nueva carpeta con la ruta $HOME/respaldos/respaldarv2
, y dentro el script principal de trabajo, llamado respaldar.py
.
A continuación cruzamos en nuestro árbol de directorio para entrar a db
, y dentro debemos crear un archivo como por ejemplo cliente.ini
el cual guardará la configuración del cliente que queremos respaldar :
administrador@host ~/respaldos $ cd db administrador@host ~/respaldos/db $ nano cliente.ini
Aquí va un ejemplo de la configuración que se puede usar, cambiar según se necesite.
host=localhost port=3306 user=mysqldump pass=mysqldump db=db_crux_cliente options=--compact --single-transaction gzip=1
Con este archivo guardado volvemos a la terminal y hacemos una prueba para correr el software respaldar
para instalar los paquetes necesarios.
administrador@host ~/respaldos/db $ python ../respaldarv2/respaldar.py
Esto nos debiera indicar la lista de módulos que faltan, con el mensaje “necesita instalar el módulo…”. Para instalar los módulos necesarios debería bastar con los siguientes comandos:
pip install --user configparser tailer datetime
Prueba
Si todo está correcto, podemos llevar a cabo una prueba de descarga de base de datos. Tomar ojo que hacer este paso inicia una descarga y por tanto bloqueará equipos que estén conectados, como cajas.
administrador@host ~/respaldos/db $ python ../respaldarv2/respaldar.py cliente.ini
Si todo sale correcto debiéramos ver el proceso de descarga de la base de datos.
0 : Configurando respaldo desde cliente.ini
0 : Leyendo diccionario de configuración
1 : Invocando proceso de dump...
2 : Estado del dump...
2 : Recibido:
['-- Dump completed on 2018-11-30 10:58:14']
2 : Salvado como localhost:3306-db_helpcom_cliente.sql
Puesta a Punto
Creamos una siguiente tarea en el crontab del usuario:
administrador@host ~/respaldos/db $ crontab -e
PATH=/usr/local/bin:/usr/bin:/bin 50 23 * * * cd respaldos/db && python ../respaldarv2/respaldar.py cliente.ini
Purga Viejos
Para hacer que el sistema purgue automáticamente los archivos viejos, seguimos los siguientes pasos:
1.- En el archivo cliente.ini
, agregamos la siguiente variable:
purgadias=10
(Cambiar según sea necesario)
2.- Descargar el siguiente archivo como purgar.sh
y dar permisos de ejecución.
#!/bin/bash source $1 find . -type f -iname "*${db}-*.sql*" -mtime "+${purgadias}" -delete
chmod +x purgar.sh
3.- Agregar en el crontab una tarea para llamar al archivo cuando sea necesario, aquí como ejemplo todos los Martes a las 23:59.
59 23 * * 2 cd respaldos/db && ./purgar.sh cliente.ini
OJO - El script corre desatendido por lo tanto no pregunta ni vigila qué archivos se van a borrar. Sólo sigue el patrón establecido en
clientes.ini
. Tener mucho cuidado de pegar el código y escribir el crontab tal y como se muestra en la página (menos ajustes de cada caso).