Recuperando tablas InnoDB de archivos .ibd

Problemática

El datafile de la instancia MySQL en producción se corrompe y se hace inaccesible las tablas InnoDB. Hay una alta probabilidad que los archivos .IBD permancen íntegros, y se cuenta con un Backup de la BD no muy reciente, lo que hace imperioso recuperar la data de las tablas InnoDB inaccesibles.

Solución

Inicialmente fue mi intención hacer un proceso explicativo de cómo resolver la problemática descrita, pero recordando el viejo dicho «una imagen vale más que mil palabras», opté finalmente por ilustrar el proceso empleando BPMN 2.0; si conocéis algo de diagramas de flujo, esto no representará una dificultad mayor de comprensión.

La gráfica mostrada arriba sumariza en gran parte las metodologías explicadas por expertos consultados (véase Referencias), para proceder a resolver el problema en cuestión, por lo que debería aportarte en buen grado a tu «know-how».

Por tanto, me remitiré sólo a brindar tips para algunas de las tareas descritas en el gráfico de arriba.

  1. Tarea: Verificar requisitos básicos de instalación del MySQL. Se sugiere hacerlo en un computador distinto al afectado por el problema.
  2. Tarea: Resolver diferencias. Cuando realices una nueva instalación, asegúrate antes de borrar todos los archivos de configuración y de data que pudieran quedar en la unidad principal.
  3. Tarea: Configurar instancia de MySQL. Establece la configuración como para tenerla en producción. Se sugiere tener la opción «innodb_file_per_table» habilitada.
  4. Tarea: Resolver inconsistencias que generan el error. Asegúrate que los archivos .IBD copiados no tengan atributos de sólo lectura o algún permiso especial asignado.
  5. Tarea: Eliminar los tablespace de la BD creada. Un archivo batch podría ser muy útil si tienes muchos archivos .IBD
  6. Tarea: Registrar la descripción de los errores del Log de MySQL. Los ID mostrados están en sistema decimal, por lo que tendrás que convertirlos en sistema hexadecimal. Recuerda que estos valores son únicos por cada tablespace registrado.
  7. Tarea: Modificar en modo hexadecimal…. El editor hexadecimal XVI32 es una muy buena herramienta para esta tarea, siempre y cuando tu archivo a tratar no exceda los 2GB. Además ten en cuenta que son dos pares de posiciones hexadecimales a modificar, que te permitirá importar los tablespaces.
  8. Tarea: Modificar configuración de instancia de…. Aunque se sugiere el modo de recuperación de manera paulatina hasta llegar el nivel 5 (el manual de MySQL sugiere hacerlo en nivel 4), pero si tienes muchos archivos por tratar y estás corto de tiempo, y tu interés es recuperar cuanta data sea posible, entonces inicia en dicho nivel.

Te sugiero que muchas de las tareas las realices en modo consola, además de ser seguro al operar dichas tareas, te permite recibir descripción detallada de cualquier error que ocurriese, que a veces no está disponible en modo gráfico.

Si BD excede los 4GB, es mejor probar los backups que realizas para asegurarte que tu herramienta está haciendo bien su tarea, y no te lleves sorpresas al momento de restaurarlas. En tal situación, se suele hacer un backup de los archivos crudos (raw files) de tu BD, es decir, la data y los datafiles.

Recuerda que la configuración que empleas en tu servidor puede variar en otras instalaciones, ya sea por hardware o el tipo de instalación que realizas.

La recuperación de data desde tablas MyISAM es bastante sencillo en comparación a los de tipo InnoDB, prácticamente dos pasos con una alta tasa de confiabilidad de integridad de datos, en las referencias encontraréis los pasos.

Espero esto sea de ayuda, siéntete en libertad de comentar.

Referencias

Un comentario en “Recuperando tablas InnoDB de archivos .ibd

Deja un comentario