Volver a proyectos
Automatización de respaldosIngeniero de Software

AegisBA Enterprise — Respaldos de SQL Server

Agente de respaldos SQL Server verificados, con perfiles y sincronización de la última copia pendiente a destinos remotos. Separa el éxito local de los fallos de red mediante estado persistente, limpieza de temporales y trazabilidad de corridas.

Desafío

La operación debe diferenciar una copia terminada de un archivo parcial y un respaldo local válido de una transferencia remota pendiente. También necesita controlar espacio, retención, concurrencia y ejecuciones repetidas, y conservar información para localizar el fallo de una corrida cuando la nube no está disponible.

Solución

Construí un pipeline que verifica el respaldo antes de publicarlo y actualiza el estado de cada perfil después de obtener la copia local. Los adaptadores remotos transfieren archivos y reportan fallos; la capa de aplicación decide reintentos, retención y tratamiento de la última copia pendiente. El agente limpia temporales huérfanos al iniciar, ofrece un comando separado para sincronizar pendientes y permite operar mediante TUI o tareas programadas desatendidas.

Arquitectura y decisiones

La capa de aplicación concentra los casos de uso y recibe interfaces de motor SQL, almacenamiento y eventos; Cobra y Bubble Tea son adaptadores de entrada. El respaldo pasa por comprobación de espacio, archivo temporal, verificación SQL, hash y publicación final. El estado conserva idempotencia y la última copia remota pendiente por perfil. Los backends implementan R2, UNC y almacenamiento Supabase, mientras un módulo independiente clasifica errores y calcula backoff con jitter. R2 comprueba el tamaño remoto y UNC verifica tamaño y SHA-256. Los errores de observabilidad no abortan el respaldo. DPAPI protege las credenciales R2 locales; un bundle con AES-GCM y PBKDF2 permite trasladar configuración y volver a cifrarla al importar. El Programador de tareas invoca procesos desatendidos de duración limitada.

Testing y calidad

La suite incluye pruebas de aplicación con dependencias inyectadas, integración local con un motor SQLite de pruebas y fallos controlados de interrupción, corrupción, espacio insuficiente y temporales huérfanos. Cubre conservación de copias anteriores, pendientes remotos, idempotencia por perfil, bloqueos, migración de estado y reintentos con reloj y jitter simulados. La portabilidad prueba contraseña incorrecta y alteración del bundle. La integración SQL Server comprueba respaldo, verificación y restauración equivalente; esta integración y las pruebas remotas de Supabase requieren activación explícita.

Impacto

Permite distinguir una copia local confirmada de una sincronización pendiente y conservar información para recuperar la operación. Los perfiles y la separación de adaptadores permiten configurar destinos y programación manteniendo la lógica de respaldo independiente de la interfaz de terminal.

Puntos clave

  • Implementé un pipeline que comprueba espacio, respalda a un temporal, ejecuta RESTORE VERIFYONLY y calcula SHA-256 antes de publicar el archivo final
  • Separé la copia local de sus sincronizaciones para conservar un resultado verificable cuando falla un destino remoto
  • Añadí idempotencia diaria por perfil, bloqueos de ejecución y reintento de la última copia pendiente antes del siguiente respaldo
  • Incorporé backoff exponencial con jitter para R2 y verificación de tamaño y SHA-256 para destinos Windows por UNC
  • Registré corridas y artefactos en Supabase y añadí acumulación y reenvío de eventos ante errores recuperables
  • Desarrollé configuración portable cifrada con AES-GCM y PBKDF2, cuya importación vuelve a proteger las credenciales R2 con DPAPI local