Saltar al contenido principal

Backups automáticos

El contenedor backup ejecuta volcados automáticos de la base de datos MySQL usando mysqldump.

Programación​

Todos los días a las 02:00 AM (hora del servidor)
Cron: 0 2 * * *

Retención​

Se conservan los últimos 7 backups. Al generar el octavo, el más antiguo se elimina automáticamente.

Ubicación de los archivos​

Los backups se guardan en backend/backups/ en el host (volumen montado en el contenedor):

backend/backups/
├── backup_2026-05-21_02-00.sql.gz
├── backup_2026-05-22_02-00.sql.gz
├── ...
└── backup_2026-05-27_02-00.sql.gz

Cada archivo está comprimido con gzip. El nombre incluye la fecha y hora de generación.

Contenido del backup​

El volcado incluye:

  • Todas las tablas con datos
  • Procedimientos almacenados (--routines)
  • Triggers (--triggers)
  • Transacción consistente (--single-transaction) — sin bloquear la BD durante el volcado

Restaurar un backup​

Para restaurar la base de datos desde un backup:

# 1. Identificar el backup a restaurar
ls backend/backups/

# 2. Restaurar (reemplaza todos los datos actuales)
gunzip < backend/backups/backup_2026-05-27_02-00.sql.gz | \
docker exec -i sgi-full-db mysql -uroot -p<password> db_sgi_emch
peligro

La restauración sobreescribe todos los datos actuales de la base de datos. Asegúrate de tener un backup reciente antes de restaurar.

Verificar el log de backups​

docker exec sgi-full-backup cat /var/log/backup.log

Cambiar la frecuencia​

Edita el archivo backend/backup/crontab:

# Ejemplos:
0 2 * * * → todos los días a las 02:00 AM (actual)
0 */6 * * * → cada 6 horas
0 2 * * 0 → solo los domingos a las 02:00 AM

Luego reinicia el contenedor:

docker compose restart backup

El script backup.sh puede editarse sin reiniciar el contenedor; los cambios aplican en el siguiente ciclo.

Importante: los backups NO se restauran automáticamente​

Al hacer docker compose down y docker compose up, los datos persisten en el volumen full_mysql_data. Los backups son un mecanismo de recuperación ante desastres, no de restauración automática.

El script de inicialización (db_sgi_emch.sql) solo se ejecuta cuando el volumen de datos está completamente vacío (primera instalación o después de docker compose down -v).