62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
# Procedimiento de recuperación — DH V2
|
|
|
|
Este documento es un runbook para incidentes. No debe ejecutarse durante un
|
|
deploy normal.
|
|
|
|
## Principios
|
|
|
|
- identificar exactamente el backup a utilizar;
|
|
- verificar `SHA256SUMS` antes de cualquier cambio;
|
|
- generar un backup de seguridad del estado actual;
|
|
- no usar `docker compose down -v`;
|
|
- no eliminar `dhv2_pgdata`;
|
|
- no eliminar `dhv2_asset_media`;
|
|
- detener únicamente API y web mientras se recupera la base;
|
|
- conservar el `.env` actual salvo que el incidente requiera recuperar el del backup;
|
|
- validar primero el dump con `scripts/verify-backup.sh`.
|
|
|
|
## Verificación previa
|
|
|
|
```bash
|
|
cd /var/www/dhv2.korexlabs.com
|
|
bash scripts/verify-backup.sh /var/www/dh-backup/dhv2-BACKUP-ELEGIDO
|
|
```
|
|
|
|
## Orden de recuperación
|
|
|
|
1. Registrar el motivo, fecha y backup seleccionado.
|
|
2. Ejecutar `scripts/backup-phase-a.sh pre-restore`.
|
|
3. Verificar ambos backups.
|
|
4. Detener `api` y `web`, manteniendo `db` activo.
|
|
5. Extraer `source.tar.gz` en un directorio temporal, no sobre producción.
|
|
6. Revisar su contenido y recién entonces reemplazar los fuentes.
|
|
7. Restaurar `database.dump` con el usuario owner y `pg_restore`.
|
|
8. Si el backup contiene `asset-media.tar.gz`, restaurarlo en el volumen
|
|
`dhv2_asset_media` antes de iniciar la API.
|
|
9. Ejecutar `migration:show` y aplicar sólo migraciones pendientes conocidas.
|
|
10. Reconstruir API y web.
|
|
11. Ejecutar health interno y externo.
|
|
12. Ejecutar la aceptación de la fase y una descarga autenticada conocida.
|
|
13. Conservar el backup anterior hasta confirmar estabilidad.
|
|
|
|
La restauración de la base reemplaza datos y requiere una autorización
|
|
específica para el incidente. Por ese motivo no se incluye un script automático
|
|
que borre o sobrescriba producción.
|
|
|
|
## Validación posterior
|
|
|
|
```text
|
|
health interno y externo: ok
|
|
database: ok
|
|
versión esperada
|
|
Pending migrations: no
|
|
login: 200
|
|
endpoints administrativos con sesión: 200
|
|
endpoints administrativos sin sesión: 401
|
|
logout: sesión revocada
|
|
contenedores: Up
|
|
logs: sin errores de bootstrap
|
|
volumen dhv2_asset_media: montado y escribible
|
|
fotografía o documento conocido: descarga íntegra
|
|
```
|