Respaldo y recuperación de MySQL con Railway, Aiven y GitHub Actions
Description and use
Automated MySQL backup with Railway, Aiven, and GitHub Actions, providing daily logical dumps, encryption, checksum verification, and restoration to a separate database.
Problem
Perder un registro de inventario altera el stock y el valor de los productos, por lo que se necesita conservar y poder restaurar el estado de la base de datos.
Outcome
Se implementó un flujo de respaldo automático diario que genera archivos cifrados y comprimidos, con verificación SHA-256, y se validó la restauración en una base distinta, garantizando la recuperación de datos en caso de pérdida.
Workflow
- Desarrollar aplicación Node.js/Express con MySQL
- Crear scripts backup.sh y restore.sh que usan mysqldump, gzip y cifrado
- Configurar GitHub Actions workflow que ejecuta backup.sh diariamente a 06:00 UTC
- Almacenar artefacto .sql.gz.enc y generar SHA-256 checksum
- Validar restauración ejecutando restore.sh en base vacía
- Desplegar aplicación en Railway y conectar a MySQL de Aiven
- Configurar variables de entorno DB_SSL y certificado CA para conexión segura
Evidence
Se eligió un respaldo lógico completo porque la base es pequeña y su contenido puede revisarse mediante SQL.
El proyecto verifica tanto la confianza del certificado como la identidad del servidor.
El proyecto verifica tanto la confianza del certificado como la identidad del servidor.
- Record date: 2026-10-04T07:40:54.218Z