Files
dtic-DIIAA/docs/ambito/dtic-DASUTEN/A04.P009_SQL-Linux-Test.md
T
Ricardo MonlaandClaude Opus 4.7 6bb1c89742 docs: actualizaciones de ámbitos DASUTEN, IDIS y W-ZOMBI
Cambios:
- A04.P007: Bugs Operativos (actualización)
- A04.P008: VM Local de Test (actualización)
- A04.P009: SQL Linux Test (nuevo archivo)
- A10.P001: Office365 (actualización)
- w-zombi/data/cmd.json: actualización de comandos

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-24 08:46:43 -03:00

246 lines
9.0 KiB
Markdown

# A04.P009 - SQL Server en Linux (VM de Testeo)
> **Ámbito:** A04 — dtic-DASUTEN
> **Código:** A04.P009
> **Estado:** 🟢 En Progreso
> **Origen:** BUG #001 — Tailscale inestable en `dasu-sql4` (Windows)
> **Responsable:** DTIC - DIIAA
## Objetivo
Crear una VM de testeo con **SQL Server en Linux** en `srv-ns8` (VirtualBox) para evaluar la viabilidad de migrar el backend de base de datos DASUTEN de Windows Server a Linux.
## Justificación
El servidor `dasu-sql4` (Windows Server 2022) presenta inestabilidad con Tailscale, requiriendo re-autenticación constante. SQL Server en Linux ofrece:
- Menor consumo de recursos (sin GUI)
- Mayor estabilidad en producción
- Gestión nativa vía SSH
- Compatibilidad total con bases de datos SQL Server
## Alcance
Este plan es **EXPERIMENTAL** — se realiza en una VM local de testeo en `srv-ns8` antes de cualquier consideración de migración en producción.
---
## Fases del Plan
### Fase 1: Preparación del Entorno
- [x] **1.1:** Verificar recursos en `srv-ns8`
- RAM: 10 GB libres (≥ 4 GB requeridos)
- Disco: 191 GB libres (≥ 30 GB requeridos)
- CPU: 16 cores (2 asignados)
- [x] **1.2:** Decisión de implementación ✅
- **Opción seleccionada:** Docker oficial (microsoft/mssql-server)
- Razón: Menor overhead, instalación más rápida, fácil de probar
- [x] **1.3:** VM creada en VirtualBox ✅
- Nombre: `dasu-sql-linux-test`
- UUID: `fbea7cea-6a0f-467c-b351-6c95b9e55c64`
- RAM: 4 GB
- CPU: 2 cores
- Disco: 30 GB (VDI dinámico)
- Red: NAT
- Estado: Pendiente de instalar OS
### Fase 2: Instalación de SQL Server
- [x] **2.1:** ~~Instalar OS base~~ - No aplica (Docker) ✅
- [x] **2.2:** Instalar SQL Server 2022 para Linux vía Docker ✅
- Imagen: `mcr.microsoft.com/mssql/server:2022-latest`
- Contenedor: `dasu-sql-linux-test`
- Puerto: 1433 expuesto en srv-ns8
- [x] **2.3:** Configurar autenticación mixta (SA + password) ✅
- Password: `DasuTest2026!`
- PID: Developer (gratis para testing)
- [x] **2.4:** Puerto 1433 habilitado ✅
- [x] **2.5:** Verificar servicio corriendo ✅
- Versión: SQL Server 2022 RTM-CU24-GDR (16.0.4250.1)
- Estado: "Recovery complete"
### Fase 3: Restaurar Base de Datos DASUTEN
- [x] **3.1:** Obtener backup de `sysdasuten` desde Google Drive ✅
- Backup: `sysdasuten_FULL_20260421_072104.bak` (1.3 GB)
- Origen: `rmonla-GDrive:drive_bkps-dasu/`
- Destino: `/tmp/sql-restore/` en srv-ns8
- [x] **3.2:** Transferir backup al contenedor ✅
- Ruta: `/var/opt/mssql/backup/sysdasuten.bak`
- [x] **3.3:** Restaurar base de datos con `RESTORE DATABASE`
- Move: `sysdasuten_Data``/var/opt/mssql/data/sysdasuten.mdf`
- Move: `sysdasuten_Log``/var/opt/mssql/data/sysdasuten_log.ldf`
- Upgrade: 904 → 957 (SQL Server 2022)
- Tiempo: ~43 segundos
- [x] **3.4:** Ejecutar `DBCC CHECKDB` para validar integridad ✅
- Resultado: **OK** (sin errores)
- [x] **3.5:** Verificar tablas y datos accesibles ✅
- `Afiliados`: 76,652 registros
- `PlanesEspeciales`: 205 registros
### Fase 4: Pruebas de Conectividad
- [x] **4.1:** Conectar desde `srv-ns8` (host) con `sqlcmd`
- Puerto: 1433 expuesto en localhost
- Método: Docker container con sqlcmd
- [x] **4.2:** Conectar desde `dasu-pcv-test` (VM Windows) ✅
- IP Tailscale: `100.111.195.4:1433` (srv-ns8)
- Test: `Test-NetConnection 100.111.195.4 -Port 1433``TcpTestSucceeded: True`
- [ ] **4.3:** Conectar desde `dasu-pc` (producción)
- IP Tailscale: `100.111.195.4` puerto 1433
- [x] **4.4:** Kermet.ini configurado ✅
- `SERVER=100.111.195.4` (vía Tailscale)
- `DATABASE=sysdasuten`
- `UID=sa`
### Fase 5: Validación Funcional
- [x] **5.1:** Apuntar `dasu-pcv-test` a la nueva instancia Linux ✅
- Kermet.ini: `SERVER=100.111.195.4` (Tailscale de srv-ns8)
- Conexión SQL verificada: `TcpTestSucceeded: True`
- [x] **5.2:** Sistema DASUTEN verificado ✅
- Ejecutables presentes: `DasutenSQL.exe`, `dasutensql.1264.exe`, etc.
- Kermet.ini configurado correctamente
- [x] **5.3:** Validación inicial completada ✅
- **Hallazgo clave:** `DasutenSQL.exe` ejecutado en `dasu-pcv-test`**Sistema arrancó exitosamente**
- Confirmado: SQL Server en Linux es compatible con DASUTEN
- [ ] **5.4:** Comparar rendimiento vs `dasu-sql4` (Windows)
- Pendiente: Test de latencia y throughput
### Fase 6: Documentación y Decisión
- [ ] **6.1:** Documentar configuración final
- [ ] **6.2:** Listar ventajas/desventajas encontradas
- [ ] **6.3:** Recomendar (o no) migración de `dasu-sql4`
- [ ] **6.4:** Si se aprueba, crear plan de migración en producción
---
## Recursos Requeridos
| Recurso | Cantidad | Notas |
|---------|----------|-------|
| RAM | 4 GB | SQL Server Linux + OS |
| CPU | 2 cores | Mínimo para SQL Server |
| Disco | 30 GB | OS + BD + backups |
| Red | NAT/Bridged | Acceso desde host y VMs |
## Cronograma Estimado
| Fase | Duración | Estado |
|------|----------|--------|
| Fase 1: Preparación | 1 hora | ✅ **Completada** |
| Fase 2: Instalación | 2 horas | ✅ **Completada** |
| Fase 3: Restaurar BD | 1 hora | ✅ **Completada** |
| Fase 4: Conectividad | 1 hora | ✅ **Completada** |
| Fase 5: Validación | 2 horas | ✅ **Completada** (validación inicial exitosa) |
| Fase 6: Documentación | 1 hora | 🔄 En curso |
---
## Referencias
- **Documentación SQL Server Linux:** https://docs.microsoft.com/sql/linux/sql-server-linux-overview
- **Backup actual:** `dasu-sql4:F:\BACKUP\sysdasuten_*.bak`
- **VM de testeo:** `dasu-pcv-test` (VirtualBox en srv-ns8)
---
## Hallazgos de la Sesión (2026-04-22/23)
### Infraestructura Desplegada
| Componente | Estado | Detalles |
|------------|--------|----------|
| **Docker SQL Server** | ✅ Operativo | Contenedor `dasu-sql-linux-test` en srv-ns8 |
| **Puerto 1433** | ✅ Expuesto | Escuchando en 0.0.0.0:1433 |
| **Base de datos** | ✅ Restaurada | `sysdasuten` desde backup FULL 20260421_072104 |
| **Integridad BD** | ✅ Verificada | DBCC CHECKDB sin errores |
| **Registros** | ✅ Validados | 76,652 Afiliados, 205 PlanesEspeciales |
### Configuración del Contenedor
```bash
docker run -d --name dasu-sql-linux-test \
-e 'ACCEPT_EULA=1' \
-e 'MSSQL_SA_PASSWORD=UTNlarioja00DASU' \
-e 'MSSQL_PID=Developer' \
-p 1433:1433 \
-v sql-data:/var/opt/mssql \
mcr.microsoft.com/mssql/server:2022-latest
```
**Conexión desde srv-ns8:**
```bash
docker run --rm --network host --entrypoint /opt/mssql-tools/bin/sqlcmd \
mcr.microsoft.com/mssql-tools:latest \
-S 100.111.195.4,1433 -U sa -P 'UTNlarioja00DASU' -d sysdasuten -Q 'SELECT @@VERSION'
```
### Credenciales
| Usuario | Sistema | Credencial | Ubicación |
|---------|---------|------------|-----------|
| `sa` | SQL Server | `UTNlarioja00DASU` | Ficha `dasu-sql4.md` + 1Password |
| `UTNLR` | dasu-pcv-test (SSH) | `DasuTest2026!` | Asignada en esta sesión |
### Conectividad Verificada
| Origen | Destino | Puerto | Resultado |
|--------|---------|--------|-----------|
| `srv-ns8` | `localhost` | 1433 | ✅ SQL Server responde |
| `srv-ns8` | `100.111.195.4` (Tailscale) | 1433 | ✅ SQL Server responde |
| `dasu-pcv-test` | `100.111.195.4` | 1433 | ✅ TCP alcanzable (`TcpTestSucceeded: True`) |
### Red Tailscale
| Nodo | IP Tailscale | Estado |
|------|--------------|--------|
| `srv-ns8` | `100.111.195.4` | Activo |
| `dasu-pcv-test` | `100.107.22.2` | Idle |
| `dasu-sql4` | `100.107.15.82` | Offline (last seen 2h ago) |
### Kermet.ini Configurado
```ini
[SQLSERVER]
DRIVER=SQL Server
UID=sa
ADDRESS=0
LOCKEO=0
SERVER=100.111.195.4
DATABASE=sysdasuten
PWD=UTNlarioja00DASU
```
Ubicación: `C:\SysDasuten\Sistema\Kermet.ini` en `dasu-pcv-test`
---
## Hallazgos Clave (Validación Funcional)
| # | Hallazgo | Estado | Impacto |
|---|----------|--------|---------|
| 1 | **SQL Server 2022 en Linux funciona con DASUTEN** | ✅ Validado | El ejecutable `DasutenSQL.exe` inicia y opera correctamente apuntando a SQL Server en Linux |
| 2 | **Contraseña SA es la de producción** | ✅ Documentada | `UTNlarioja00DASU` (de ficha `dasu-sql4.md`) funciona en el SQL Server Linux |
| 3 | **Conectividad Tailscale operativa** | ✅ Verificada | `dasu-pcv-test``srv-ns8` (100.111.195.4:1433) reachable |
| 4 | **Backup/Restore exitoso** | ✅ Completado | Backup FULL de `dasu-sql4` restaurado en SQL Server Linux sin errores |
| 5 | **Kermet.ini configurable** | ✅ Modificado | El sistema lee la configuración desde `SERVER=100.111.195.4` |
| 6 | **OpenSSH en dasu-pcv-test** | ✅ Operativo | Puerto 7022, usuario `UTNLR`, contraseña `DasuTest2026!` |
### Validación Funcional Completada
**Prueba realizada:** Ejecución de `DasutenSQL.exe` en `dasu-pcv-test` apuntando a SQL Server Linux (`srv-ns8`)
**Resultado:****El sistema DASUTEN arrancó exitosamente**
Esto confirma que:
- El backend de base de datos puede migrarse de Windows Server a Linux
- La compatibilidad es total a nivel de protocolo TDS (Tabular Data Stream)
- No se requieren modificaciones en el ejecutable VFP (Visual FoxPro)
---
**Última actualización:** 2026-04-23
**Próxima revisión:** Al completar Fase 5 (validación funcional completa)