# BACKUP_RESTORE_FINAL.md

## Procedimientos de Backup y Restauración

### Backup de Base de Datos

```bash
# Backup completo (estructura + datos)
mysqldump -h localhost -u sigma_user -p \
  --routines --triggers --events \
  sigma_coe_db > sigma_coe_db_$(date +%Y%m%d_%H%M%S).sql

# Backup solo estructura (sin datos)
mysqldump -h localhost -u sigma_user -p \
  --no-data --routines --triggers \
  sigma_coe_db > sigma_coe_db_schema_$(date +%Y%m%d).sql

# Backup solo datos (sin estructura)
mysqldump -h localhost -u sigma_user -p \
  --no-create-info \
  sigma_coe_db > sigma_coe_db_data_$(date +%Y%m%d).sql
```

### Backup de Archivos

```bash
# Backup del proyecto completo (excluyendo node_modules)
tar -czf sigma_deploy_$(date +%Y%m%d).tar.gz \
  --exclude='node_modules' \
  --exclude='.git' \
  /home/sigma/public_html/

# Backup solo uploads
tar -czf sigma_uploads_$(date +%Y%m%d).tar.gz \
  /home/sigma/public_html/api/uploads/
```

### Restauración de Base de Datos

```bash
# Restaurar backup completo
mysql -h localhost -u sigma_user -p sigma_coe_db < sigma_coe_db_20260101.sql

# Restaurar desde schema_produccion.sql + seed_produccion.sql
mysql -h localhost -u sigma_user -p sigma_coe_db < schema_produccion.sql
mysql -h localhost -u sigma_user -p sigma_coe_db < seed_produccion.sql
```

### Restauración de Archivos

```bash
# Restaurar proyecto completo
tar -xzf sigma_deploy_20260101.tar.gz -C /home/sigma/public_html/

# Restaurar solo uploads
tar -xzf sigma_uploads_20260101.tar.gz -C /home/sigma/public_html/
```

### Automatización en cPanel

1. Ir a cPanel → **Backup** → **Backup Wizard**
2. Configurar backup parcial de la carpeta `public_html/`
3. Configurar backup de la BD `sigma_coe_db`
4. Programar frecuencia: diaria para BD, semanal para archivos

### Verificación de Backup

```bash
# Verificar integridad del SQL
head -50 sigma_coe_db_20260101.sql
grep "CREATE TABLE" sigma_coe_db_20260101.sql | wc -l

# Verificar archivos
tar -tzf sigma_deploy_20260101.tar.gz | head -20
```

### Rollback Plan

Si el deploy falla:

1. Restaurar la BD desde el backup anterior
2. Reemplazar `public_html/` con la versión anterior
3. Reemplazar `api/` con la versión anterior
4. Verificar health endpoint: `GET /api/health`
5. Verificar login básico

Ver `database/rollback_plan.sql` para instrucciones detalladas de rollback de BD.
