Buscar en la documentación

Respaldo diario y restauración

Cómo se hace, cifra, firma y guarda el respaldo diario de MySQL, cómo se recupera solo si falla y cómo se restaura con verificación de la firma.

Módulo operacion1 min de lecturaVer en GitHub

El servicio backup del compose respalda la base todos los días a las 3:00 (hora de Bogotá) y guarda 7 días en el volumen trazo_backups. Cada respaldo se comprime, se cifra con AES-256 y se firma con HMAC-SHA256: un archivo alterado, dañado o cifrado con otra llave se rechaza antes de tocar la base.

Diagrama4 carriles · 10 pasos · 2 salidas de error
SíNoSíNoSíNoRevisa cada 5minutos si tocarespaldar1¿Pasaron las3:00 sinrespaldo, o nohay uno de 24h?2Prepara llave ycredenciales enarchivos temporales3Vuelca sin bloquearla app4¿El volcadoterminó bien?5No guarda nada yreintenta en 5minGuarda .sql.gz.ency su firma .hmac6Sigue revisandocada 5 minutos7Ejecutatrazo-backuprestore archivobase8¿La firmacoincide?9Se detiene sintocar la baseDescifra,descomprime y carga10
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. Servicio backupRevisa cada 5 minutos si toca respaldar

    No duerme hasta la hora: si MySQL todavía no aceptaba conexiones o el equipo estuvo suspendido a las 3:00, se reintenta solo en la siguiente vuelta (BACKUP_CHECK_SECONDS).

  2. Servicio backup¿Pasaron las 3:00 sin respaldo, o no hay uno de 24 h?
  3. Servicio backupPrepara llave y credenciales en archivos temporales

    Nunca en los argumentos de un proceso (se verían con ps). La llave es BACKUP_ENCRYPTION_KEY (obligatoria en producción) o una generada en el volumen trazo_backup-key en local.

  4. MySQLVuelca sin bloquear la app

    mysqldump --single-transaction --quick --no-tablespaces: una foto consistente mientras la app sigue escribiendo.

  5. Servicio backup¿El volcado terminó bien?
  6. Volumen de respaldosGuarda .sql.gz.enc y su firma .hmac

    gzip → openssl enc -aes-256-cbc -pbkdf2 -iter 600000. La firma se escribe antes de dar el archivo por bueno: un .enc sin su .hmac nunca cuenta. Borra los de más de 7 días.

  7. Servicio backupSigue revisando cada 5 minutos
  8. OperaciónEjecuta trazo-backup restore archivo base

    list muestra los respaldos. Se recomienda restaurar primero en una base aparte (por ejemplo trazo_test) y comparar.

  9. Servicio backup¿La firma coincide?
  10. MySQLDescifra, descomprime y carga

Probado: una restauración en trazo_test dio conteos idénticos a la base original, y un archivo alterado se rechazó.

Dónde está en el código