Recuperación de Datos de Base de Datos MySQL Corrupta

Resumen del artículo

Compartir:

Recuperación de Datos de Base de Datos MySQL Corrupta

Una base de datos MySQL o MariaDB corrupta puede detener completamente el funcionamiento de una aplicación o sitio web. La buena noticia es que, en la mayoría de los casos, los datos siguen existiendo en los archivos del sistema; lo que falla son las estructuras que permiten acceder a ellos. Con las técnicas adecuadas es posible recuperar la información sin perder prácticamente nada.

InnoDB vs MyISAM: Diferencias Cruciales en Recuperación

El motor de almacenamiento que utilice la tabla corrupta determina completamente el proceso de recuperación. MySQL ofrece principalmente dos motores, con comportamientos muy distintos ante la corrupción:

MyISAM

MyISAM almacena cada tabla en tres archivos separados: .frm (definición de la tabla), .MYD (datos) y .MYI (índices). Sus características de recuperación son:

  • Recuperación directa: Los datos en .MYD se almacenan en formato relativamente legible. Incluso con índices corruptos (.MYI), los datos originales suelen ser accesibles.
  • myisamchk: La herramienta nativa de MySQL para reparar tablas MyISAM. Puede reconstruir índices sin tocar los datos.
  • REPAIR TABLE: Comando SQL que intenta reparar la tabla directamente desde el servidor MySQL.
  • Portabilidad: Las tablas MyISAM pueden copiarse simplemente copiando los tres archivos a otro servidor con la misma versión de MySQL.

InnoDB

InnoDB es el motor predeterminado desde MySQL 5.5 y ofrece transacciones ACID, pero su arquitectura hace la recuperación más compleja:

  • Tablespace compartido (ibdata1): En configuraciones antiguas, todas las tablas InnoDB comparten un único archivo ibdata1. La corrupción de este archivo puede afectar a todas las tablas simultáneamente.
  • File-per-table (.ibd): Con innodb_file_per_table=ON (predeterminado desde MySQL 5.6), cada tabla tiene su propio archivo .ibd. La corrupción queda más contenida.
  • Redo log y undo log: InnoDB mantiene registros de transacciones para garantizar la consistencia. Si estos registros están corruptos, el servidor no puede arrancar.
  • Diccionario de datos: InnoDB mantiene metadatos de las tablas tanto en ibdata1 como en los propios archivos .ibd.

El Archivo ibdata1: El Corazón de InnoDB

El archivo ibdata1 es el componente más crítico del motor InnoDB. Contiene:

  • El diccionario de datos InnoDB (lista de tablas, columnas, índices)
  • El undo log (registro de cambios para posibles rollbacks)
  • El doublewrite buffer (protección contra escrituras parciales)
  • En configuraciones antiguas sin innodb_file_per_table: los datos de todas las tablas

Cuando ibdata1 se corrompe, MySQL generalmente no puede iniciar. Los síntomas típicos incluyen mensajes como InnoDB: Corruption in the InnoDB tablespace o innodb: Page log sequence number is in the future en los logs de error.

innodb_force_recovery: Los 6 Niveles de Recuperación

MySQL ofrece el parámetro innodb_force_recovery para intentar arrancar el servidor con un motor InnoDB parcialmente corrupto. Se configura en my.cnf o my.ini y acepta valores del 1 al 6:

NivelAcciónCuándo usar
1 (SRV_FORCE_IGNORE_CORRUPT)Ignora páginas corruptasPérdida de páginas de datos
2 (SRV_FORCE_NO_BACKGROUND)Desactiva el hilo maestro de InnoDBEl servidor se bloquea durante purge
3 (SRV_FORCE_NO_TRX_UNDO)No hace rollback en el arranqueTransacciones colgadas impiden arranque
4 (SRV_FORCE_NO_IBUF_MERGE)Desactiva el insert buffer mergeCorrupción en el insert buffer
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)Omite el análisis del undo logUndo log corrupto
6 (SRV_FORCE_NO_LOG_REDO)No ejecuta el redo log en el arranqueRedo log completamente corrupto

Advertencia importante: Con niveles 4, 5 y 6 el servidor puede arrancar pero los datos pueden estar en un estado inconsistente. Nunca escriba en la base de datos con estos modos activos; únicamente use SELECT para exportar los datos y luego restaure desde cero.

Recuperación mediante Binary Log (Binlog)

El binary log de MySQL registra todas las modificaciones de datos en formato binario. Es la herramienta más potente para la recuperación point-in-time (PITR):

  1. Restaurar el último backup completo: Punto de partida necesario para la recuperación PITR.
  2. Identificar los archivos binlog relevantes: Los archivos binlog posteriores al backup contienen todos los cambios que hay que reaplicar.
  3. Usar mysqlbinlog para extraer y aplicar cambios: mysqlbinlog binlog.000001 | mysql -u root -p base_datos
  4. Recuperación hasta un punto concreto: Si la corrupción ocurrió a las 14:30, se pueden aplicar solo los binlogs hasta las 14:29.

Para que el binlog sea útil, debe estar habilitado (log_bin=ON) ANTES del incidente. Si no estaba habilitado, no hay registros que reaplicar.

Archivos .frm en MySQL 5.x: Recuperación de Definiciones de Tabla

En MySQL 5.x, el archivo .frm contiene la definición de la tabla (estructura de columnas, tipos de datos). Si este archivo se corrompe o pierde, MySQL no puede abrir la tabla aunque los datos en .ibd estén intactos. Las soluciones incluyen:

  • Recrear el .frm a partir del esquema conocido: Si se conoce la estructura original, se puede crear una tabla idéntica en otro servidor y copiar su .frm.
  • mysqlfrm (MySQL Utilities): Herramienta que intenta extraer la definición de estructura desde un archivo .frm parcialmente corrupto.
  • Exportar el .ibd después de recrear el .frm: Con ALTER TABLE ... DISCARD TABLESPACE y luego IMPORT TABLESPACE.

MySQL 8.0: El Nuevo Diccionario de Datos

MySQL 8.0 eliminó los archivos .frm e introdujo un diccionario de datos centralizado almacenado en un tablespace InnoDB especial (mysql.ibd). Esto tiene implicaciones importantes para la recuperación:

  • Ya no es posible recuperar una tabla simplemente copiando sus archivos .ibd a otro servidor (el diccionario de datos debe coincidir).
  • La corrupción del diccionario de datos en mysql.ibd puede hacer que MySQL 8.0 no reconozca ninguna tabla.
  • La recuperación de archivos .ibd individuales en MySQL 8.0 requiere el uso del procedimiento innodb_tablespace_monitor y herramientas de terceros para extraer datos directamente del formato de páginas InnoDB.

Extracción Directa desde Archivos .ibd

Cuando el servidor MySQL no puede arrancar ni siquiera con innodb_force_recovery=6, la última opción es extraer datos directamente del archivo .ibd sin pasar por el servidor MySQL. Las herramientas especializadas para esto incluyen:

  • innodb_space: Herramienta de código abierto que lee directamente las páginas InnoDB del archivo .ibd y puede extraer registros en formato CSV.
  • undrop-for-innodb: Proyecto de recuperación forense que escanea el archivo .ibd buscando fragmentos de registros de datos, incluso en espacio marcado como libre.
  • Herramientas comerciales de recuperación: Varias soluciones comerciales permiten recuperar datos de .ibd corruptos con interfaces gráficas.

Proceso Recomendado ante una MySQL Corrupta

  1. No intente reparar en producción: Haga una copia de todos los archivos de datos MySQL (/var/lib/mysql/) antes de cualquier acción.
  2. Revise los logs de error: /var/log/mysql/error.log o el path configurado en log_error. Los mensajes de error indican qué archivos están afectados.
  3. Pruebe innodb_force_recovery comenzando por nivel 1 y subiendo progresivamente.
  4. Exporte con mysqldump en cuanto el servidor arranque: mysqldump --all-databases > backup.sql
  5. Aplique los binlogs disponibles para minimizar la pérdida de datos.
  6. Si nada funciona, consulte a un especialista con los archivos .ibd e ibdata1 para recuperación forense.

¿Necesitas recuperar datos?

Nuestro equipo técnico puede ayudarte. Diagnóstico gratuito en 4 horas, sin compromiso.

  • Precio: Desde 250€ + IVA — sin recuperación, sin coste
  • Plazo: 4–12 días laborables (urgente: 24–48 h)
  • Teléfono: 900 899 002
  • Certificación: ISO 9001 e ISO 27001 (AENOR)

Escrito por

Técnico Especialista

Técnico en Recuperación de Datos — RecuperaTusDatos

Técnico certificado con más de 12 años de experiencia en recuperación de datos de discos duros, SSD, RAID, memorias flash y dispositivos móviles. Laboratorio propio con sala limpia ISO Clase 5, sin intermediarios.

ISO 9001 ISO 27001 Certificado
Publicado: 03/02/2026 7 min de lectura

Servicio disponible en toda España — Recogida gratuita en 24h

Recibe consejos y alertas de recuperación de datos

Guías prácticas, novedades y consejos para proteger tus datos. Sin spam.

Entérate de todo lo nuevo

Técnica Ingeniería y Robótica Aplicada S.L. como responsable del tratamiento tratará tus datos con la finalidad de dar respuesta a tu consulta o petición. Puedes acceder, rectificar y suprimir tus datos, así como ejercer otros derechos consultando la información adicional y detallada sobre protección de datos en nuestra Política de Privacidad.

Prometemos enviarte sólo información interesante.

Diagnóstico gratuito 900 899 002 WhatsApp WhatsApp
Llamar Te llamamos Diagnóstico

¿Necesitas recuperar datos?

Diagnóstico 100% gratuito y sin compromiso.
Si no recuperamos tus datos, no cobramos.

Solicitar diagnóstico gratuito