Restaurar SQL: guía práctica para recuperar bases de datos en SQL Server y MySQL
- Problemas que requieren restaurar SQL
- Preparación: respaldos, comprobaciones y entorno
- Restauración paso a paso en SQL Server
- Restauración completa
- Diferenciales y restauración de logs
- Restauración paso a paso en MySQL/MariaDB
- Backups con mysqldump
- Binlogs y recuperación punto en el tiempo
- Errores comunes al restaurar SQL y cómo solucionarlos
- Caso práctico: recuperar una base tras borrado accidental
- Recomendaciones operativas y cierre
Restaurar SQL es la operación crítica que permite recuperar una base de datos tras un fallo, borrado accidental o migración. Este texto ofrece pasos prácticos, comprobaciones y soluciones específicas para SQL Server y MySQL, con ejemplos aplicables en entornos de producción.
Problemas que requieren restaurar SQL
No siempre la restauración es la primera opción, pero suele ser necesaria en escenarios concretos:
- Borrado accidental de tablas o registros cuando el log de transacciones no permite rollback.
- Corrupción de archivos de datos por fallo de disco o errores de IO.
- Despliegues que rompen esquemas y se necesita volver a un punto anterior.
- Migraciones entre servidores donde la sincronización falla.
- Recuperación tras ataque, cifrado o eliminación maliciosa.
Cada caso exige una estrategia distinta: a veces basta con restaurar un esquema o tabla específica, otras veces hay que traer la base completa y aplicar logs hasta un punto en el tiempo.
Preparación: respaldos, comprobaciones y entorno
Antes de iniciar cualquier restauración, confirmar tres cosas básicas: existencia y validez del respaldo, integridad del entorno destino y permisos suficientes.
- Verificar backups: comprobar fecha, tipo (completo, diferencial, de logs) y caducidad. En SQL Server usar RESTORE VERIFYONLY para validar archivos .bak; en MySQL, probar importar a una instancia de test.
- Cadena de recuperación: asegurarse de tener todos los diferenciales y archivos de log necesarios para alcanzar el punto objetivo.
- Espacio y rutas: confirmar que el servidor destino tiene espacio en disco y rutas de archivos (mdf/ldf o datadir) disponibles.
- Permisos: la cuenta de servicio debe poder leer backups y escribir archivos; las cuentas de SQL deben mapear con logins si se restaura en otro servidor.
- Entorno de pruebas: siempre realizar una prueba de restauración en staging antes de la producción si el RTO lo permite.
Checklist mínimo antes de restaurar:
- Backup válido y comprobado.
- Listado de logs y diferenciales necesarios.
- Plan de comunicación con los usuarios afectados.
- Punto de recuperación objetivo (fecha/hora o LSN).
- Confirmación de espacio y permisos.
Restauración paso a paso en SQL Server
SQL Server ofrece operaciones detalladas para restaurar completo, diferencial y log. Importante conocer el estado de recuperación: NORECOVERY para encadenar restauraciones y RECOVERY para finalizar y abrir la base.
Restauración completa
Paso típico para restaurar una base desde un .bak:
- Colocar el archivo .bak en una ubicación accesible por SQL Server.
- Ejecutar un comando como: RESTORE DATABASE NOMBRE FROM DISK = ‘C:backupsbd.bak’ WITH REPLACE, RECOVERY;
- Si se requiere cambiar rutas físicas, obtener los nombres lógicos con RESTORE FILELISTONLY y especificar MOVE para cada archivo.
Si la intención es aplicar logs posteriores al backup completo, usar NORECOVERY en la restauración inicial y luego aplicar diferenciales/logs.
Diferenciales y restauración de logs
Flujo común para recuperación punto en el tiempo:
- Restaurar backup completo con NORECOVERY.
- Aplicar backup diferencial más reciente (si existe) con NORECOVERY.
- Restaurar backups de log en orden hasta el punto deseado. El último restore debe usar RECOVERY o STOPAT para punto en el tiempo.
Comando ejemplo para aplicar un log y recuperar hasta una hora: RESTORE LOG NOMBRE FROM DISK=’C:backupsbd.trn’ WITH STOPAT=’2026-08-01T14:23:00′, RECOVERY;
Precauciones: la restauración de logs requiere que el modelo de recuperación sea Full o Bulk-Logged; en modelo Simple no habrá logs completos.
Restauración paso a paso en MySQL/MariaDB
En entornos MySQL hay dos enfoques principales: backups lógicos con mysqldump y backups físicos o incrementales con herramientas como Percona XtraBackup. Para recuperación punto en el tiempo se usan los binlogs.
Backups con mysqldump
Para restaurar un volcado SQL generado por mysqldump:
- Crear la base vacía si no existe: CREATE DATABASE nombre;
- Ejecutar: mysql -u root -p nombre < backup.sql
Limitaciones: los dumps son fáciles de transportar pero pueden ser lentos en bases grandes y no permiten aplicar binlogs directamente.
Binlogs y recuperación punto en el tiempo
Si el servidor tiene activado el binlog, se puede avanzar desde un backup lógico o físico hasta un punto exacto con mysqlbinlog:
- Restaurar el último respaldo base (dump o físico).
- Reproducir binlogs desde la posición necesaria: mysqlbinlog binlog.00000X | mysql -u root -p
- Para reproducir hasta una fecha usar –stop-datetime en mysqlbinlog.
En implementaciones con XtraBackup se usan los pasos de prepare y luego se copian los datos al datadir.
Errores comunes al restaurar SQL y cómo solucionarlos
Algunas fallas recurrentes y sus mitigaciones:
- Error de espacio: liberar espacio o redirigir archivos con MOVE. Si no es posible, restaurar en un servidor con más capacidad.
- Incompatibilidad de versiones: evitar restaurar desde una versión más reciente a una anterior; en su lugar, exportar datos con formatos compatibles.
- Archivos con nombres existentes: usar WITH MOVE (SQL Server) o restaurar en una base temporal y renombrar.
- Usuarios huérfanos: en SQL Server mapear logins con ALTER LOGIN … WITH SID o recrear logins y ajustar permisos; para MySQL verificar usuarios en mysql.user.
- Corrupción detectada tras restaurar: no poner en producción; validar integridad con herramientas específicas y, si es necesario, restaurar a un punto anterior.
Mini-caso: un backup restaurado mostraba tablas corruptas por diferencias en collation. Solución: restaurar en un servidor con la misma collation y/o exportar datos en texto y reimportar ajustando la codificación.
Caso práctico: recuperar una base tras borrado accidental
Contexto: eliminación por script de producción a las 09:12. Backups diarios completos a las 02:00 y logs de transacción continuos.
- Identificar el último backup completo: 02:00 y los logs necesarios desde esa hora.
- Restaurar backup completo en servidor de recuperación con NORECOVERY.
- Aplicar logs de transacción en orden hasta STOPAT = ‘2026-08-23T09:10:00’ para evitar el borrado accidental.
- Finalizar con RECOVERY, validar consistencia y comparar filas con registros de auditoría.
- Mapear usuarios y probar la aplicación en un entorno de preproducción antes de switch al servidor restaurado.
Resultado y lecciones: la restauración devolvió la base en 18 minutos con pérdida mínima de datos. Lecciones: habilitar backups más frecuentes o snapshots y probar procedimientos de restauración periódicamente.
Recomendaciones operativas y cierre
Para reducir RTO y RPO al restaurar SQL, conviene aplicar estas prácticas:
- Automatizar backups con retención y rotación claras; incluir backups completos, diferenciales e incrementales según la carga.
- Probar restauraciones trimestralmente y documentar pasos con tiempos estimados.
- Monitorear espacio en disco y salud de respaldos (alertas si un backup falla o no se verifica).
- Separar backups fuera del host primario (almacenamiento remoto o S3) y cifrarlos en tránsito y reposo.
- Definir runbooks por tipo de incidente: borrado, corrupción, migración o pérdida total de servidor.
Restaurar SQL no es solo ejecutar comandos: requiere planificación, comprobaciones y pruebas previas. Implementar políticas claras de backup, practicar la restauración y mantener auditoría de cambios reduce el riesgo operativo y acelera la recuperación cuando se necesita actuar.
Restaurar SQL debe formar parte de la estrategia operativa habitual: con respaldos validados, planes de recuperación ensayados y controles de acceso, la restauración se convierte en un proceso fiable y predecible.

