Plan: Backups y Refresco de Base de Datos DASUTEN
Ámbito: A04 — dtic-DASUTEN
Código: A04.P006
Fecha: 14 de abril de 2026
Autor: Sistema ADN
Versión: 1.0
Estado: 🚧 EN EJECUCIÓN (Pipeline diferencial implementado, pendiente integración bkps)
Dependencia: A04.P005 (DASUTEN sin DC), A03.P002 (Automatización Backups)
📊 Progreso
| Fase |
Estado |
Avance |
| Fase 1: Backup de VMs |
✅ Completado |
100% |
| Fase 2: Pipeline Google Drive |
✅ Completado |
100% |
| Fase 3: Pipeline Diferencial |
✅ Completado |
100% |
| Fase 4: Integración BKPs |
✅ Completado |
100% |
🎯 Objetivo
Establecer un sistema de backups y refrescos de la base de datos DASUTEN que permita:
- Resguardar VMs del ámbito mediante vzdump (Proxmox)
- Refrescar la BD desde el servidor original (
srvv-fenix) hacia dasu-sql4
- Automatizar el pipeline mediante drones atómicos integrados en
bkps.rb
- Soportar modos completo y diferencial según frecuencia requerida
🌐 Arquitectura del Pipeline
Flujo Completo (Semanal/Mensual)
Duración estimada: ~35-40 minutos total
Flujo Diferencial (Diario)
Duración estimada: ~5-10 minutos total
📋 Tareas Configuradas (bkps.yml)
Tareas Individuales
| ID |
Descripción |
Tipo |
Nodo |
dasuten_export_full |
📤 Exportar backup COMPLETO DASUTEN |
dasuten |
srvv-fenix |
dasuten_export_dif |
📤 Exportar backup DIFERENCIAL DASUTEN |
dasuten |
srvv-fenix |
dasuten_transferir |
🔄 Transferir SMB (fenix → ns8) |
dasuten |
srv-ns8 |
dasuten_upload |
☁️ Upload a Google Drive |
dasuten |
srv-ns8 |
dasuten_download |
📥 Download desde Google Drive |
dasuten |
dasu-sql4 |
dasuten_restaurar_full |
💾 Restaurar backup COMPLETO |
dasuten |
dasu-sql4 |
dasuten_restaurar_dif |
💾 Restaurar backup DIFERENCIAL |
dasuten |
dasu-sql4 |
dasuten_verificar |
✅ Verificar integridad BD |
dasuten |
dasu-sql4 |
Comandos Compuestos
| ID |
Descripción |
Tareas |
Frecuencia |
dasuten_full |
🔄 Pipeline COMPLETO DASUTEN |
export_full → transferir → upload → download → restaurar_full → verificar |
Semanal |
dasuten_diferencial |
🔄 Pipeline DIFERENCIAL DASUTEN |
export_dif → transferir → upload → download → restaurar_dif → verificar |
Diario (lun-vie) |
🛸 Drones Atómicos Implementados
| Dron |
Script |
Nodo |
Función |
Output JSON |
exportar |
dasuten_exportar_srvv-fenix.rb |
srvv-fenix |
BACKUP DATABASE COMPRESSION |
backup_ruta, backup_tipo |
exportar_dif |
dasuten_exportar_diferencial_srvv-fenix.rb |
srvv-fenix |
BACKUP DATABASE DIFFERENTIAL |
backup_ruta, backup_tipo |
transferir |
dasuten_transferir_srvv-fenix-srv-ns8.rb |
srv-ns8 |
SMB get |
backup_local |
upload |
dasuten_upload_srv-ns8-drive.rb |
srv-ns8 |
rclone copy |
drive_ruta, drive_url |
download |
dasuten_download_drive-dasu-sql4.rb |
dasu-sql4 |
Invoke-WebRequest |
backup_local, duracion |
restaurar |
dasuten_restaurar_dasu-sql4.rb |
dasu-sql4 |
RESTORE DATABASE |
estado_integridad |
restaurar_dif |
dasuten_restaurar_diferencial_dasu-sql4.rb |
dasu-sql4 |
RESTORE DATABASE DIFFERENTIAL |
estado_integridad |
verificar |
dasuten_verificar-integridad_dasu-sql4.rb |
dasu-sql4 |
DBCC CHECKDB |
estado_integridad |
Orquestadores
| Script |
Función |
Uso |
orquestador_pipeline.rb |
Pipeline completo |
ruby orquestador_pipeline.rb |
orquestador_pipeline_diferencial.rb |
Pipeline diferencial |
ruby orquestador_pipeline_diferencial.rb --paso upload |
🔧 Integración con BKPs (IMPLEMENTADO)
Procesador: adn/tools/bkps/lib/proc_dasuten.rb
El procesador Dasuten fue integrado en bkps.rb como un nuevo tipo de tarea:
Funcionamiento:
- Cada tarea DASUTEN se mapea a un script de dron atómico
- El dron se lanza vía
./adn/tools/run dron lanzar
- La bitácora se registra automáticamente con el nodo y ámbito correspondiente
- El output de cada dron se guarda en
/tmp/dron_*_output.json para el siguiente paso
Comandos disponibles (vía bkps.rb)
Frecuencias recomendadas
| Comando |
Frecuencia |
Horario |
Duración |
dasuten_full |
Semanal (lunes 08:00) |
Inicio jornada |
~35-40 min |
dasuten_diferencial |
Diario (lun-vie 08:00) |
Inicio jornada |
~5-10 min |
📅 Frecuencia de Backups
| Tipo |
Frecuencia |
Retención |
Horario |
| VMs (vzdump) |
Semanal (domingo 03:00) |
4 semanas |
Madrugada |
| BD Completo |
Semanal (lunes 08:00) |
4 semanas |
Inicio jornada |
| BD Diferencial |
Diario (lun-vie 08:00) |
5 días |
Inicio jornada |
📊 Resultados Históricos
| Fecha |
Tipo |
Duración |
Tamaño |
Estado |
| 2026-04-14 15:54 |
Completo |
44.8s |
1.33 GB |
✅ |
| 2026-04-14 16:03 |
Diferencial |
2.44s |
0.39 MB |
✅ |
| 2026-04-14 16:35 |
Upload Drive |
23.79s |
0.39 MB |
✅ |
⚠️ Consideraciones Técnicas
Google Drive Download
- Virus confirmation page: Archivos >100MB requieren confirmación. Se maneja extrayendo parámetros
id, uuid, confirm del HTML.
- URL confirmada:
https://drive.usercontent.google.com/download?id=...&confirm=...&uuid=...
dasu-sql4 Sleep Mode
- La VM entra en suspensión cuando no se usa.
- Solución: Acceso vía relay SSH desde
srv-dasu con sshpass + ProxyCommand.
Base64 Encoding
- Scripts PowerShell se codifican en base64 para transporte sobre SSH.
- Evita problemas de escaping UTF-8 en Windows Core.
Comunicación entre Drones
- Cada dron escribe output en
/tmp/dron_*_output.json
- El siguiente dron lee el JSON del anterior para obtener contexto
- Formato:
{"paso": "...", "backup_local": "...", "duracion": N, ...}
🔗 Referencias
📝 Lecciones Aprendidas
| Fecha |
Lección |
Impacto |
| 2026-04-14 |
SMB password con $ requiere escape (\\$) |
Transferencia fallida sin escape |
| 2026-04-14 |
Upload dron debe leer backup_local desde transfer output |
Timeout por archivo incorrecto |
| 2026-04-14 |
Download dron requiere --file-id o leer desde upload output |
Error por falta de parámetro |
| 2026-04-14 |
Pipeline diferencial: 0.39 MB vs 1.3 GB completo |
90% más rápido para refrescos diarios |