Saltar al contenido

Restauración de tablas MySQL desde archivos .ibd, .frm y mysqllogbin

Nuestro equipo de redactores ha estado mucho tiempo buscando para dar resolución a tu interrogante, te compartimos la solución por eso deseamos servirte de mucha apoyo.

Solución:

Finalmente descubrí y resolví mi problema a través de muchas pruebas y errores. Para aquellos que no tienen su archivo ibdata1 original y solo tienen sus archivos .frm y .ibd, así es como restauré mis datos.

  1. Descargue e instale las utilidades de MySQL en -> http://dev.mysql.com/downloads/utilities.
  2. Vaya a su comando/terminal para abrir la utilidad MySQL, mysqlfrm, y utilícela para encontrar la estructura de su tabla que necesita restaurar. ¿Cómo lo hice? Ingresé a la ubicación del archivo de mysqlfrm y luego ingresé “mysqlfrm –server=user:[email protected] –port=3307 “path_to_.frm_file” > table_name.txt”. El archivo .txt debe guardarse en la misma carpeta donde se guardan sus utilidades si no especificó dónde desea que vaya.
  3. En el archivo de texto, verá las declaraciones CREATE TABLE, que incluyen todas las columnas e información (básicamente, la estructura original) de su tabla. Copie esa instrucción CREAR con toda esa información.
  4. En su comando MySQL, cree una nueva base de datos (CREATE DATABASE database_name). Hágalo con el mismo nombre que el nombre de su base de datos original.
  5. Cree una nueva tabla dentro de la nueva base de datos; no tiene que tener el mismo nombre que la carpeta. Puede crear la nueva tabla dentro del símbolo del sistema, pero creé mi tabla en PhpMyAdmin, una herramienta de software gratuita que maneja la administración de MySQL a través de la web. Simplemente hice clic en la base de datos en PhpMyAdmin, luego en la tabla SQL y pegué la estructura de la tabla del #3. (Como nota al margen, siempre recibí errores si nombraba mis tablas como “tabla” en mi símbolo del sistema, así que trate de evitar ese nombre).
  6. En su comando MySQL, ingrese a su base de datos e ingrese “ALTER TABLE table_name DISCARD TABLESPACE”, que esencialmente eliminará el archivo .ibd de esta tabla.
  7. Copie el archivo .ibd de su tabla original (la tabla que desea restaurar) en la tabla recién creada para reemplazar el archivo .ibd que acaba de eliminar. Cambie su archivo .ibd inicial al nombre de la tabla recién creada. Esto imitará el antiguo archivo .ibd que acaba de eliminar. Puede encontrar esta carpeta en la carpeta de datos de MySQL, en la carpeta de la base de datos recién creada en su computadora.
  8. Regrese a su comando MySQL, ingrese a su base de datos e ingrese “ALTER TABLE table_Name IMPORT TABLESPACE”. Recibirá una declaración de tipo de error de “advertencia” (1), pero simplemente ignórela.
  9. ¡Y hecho! si intenta acceder a su nueva tabla, debería contener todos los datos de su tabla anterior.

Espero haberte ayudado, y si tienes alguna pregunta o comentario, ¡avísame! Además, consulte http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file para obtener más detalles.

El archivo de datos principal de InnoDB, generalmente llamado ibdata – es esencial para que MySQL pueda comprender sus archivos .ibd.

Si necesita mover datos entre servidores usando los archivos binarios, debe detener MySQL limpiamente y luego mover todos los archivos de datos, incluidos los archivos ibdataentre directorios.

Un mecanismo más confiable para mover datos entre servidores en Windows sería usar (mysqldump) o una base de datos exportada desde PHPMyAdmin (o una herramienta similar).

Si el registro binario se ha habilitado todo el tiempo que su servidor ha estado funcionando (según los comentarios, este puede no ser el caso), también podría usar mysqlbinlog para recuperar cada instrucción SQL que haya ejecutado en el servidor desde los archivos mysql-bin y recrear la base de datos de esa manera. Debe haber marcas de tiempo de Unix en los archivos mysql-bin que lo ayuden a determinar qué tan atrás van.

Si ha perdido los archivos de la base de datos original y todo lo que le queda son los archivos .ibd individuales, es posible que deba recurrir a la recuperación de los datos según las sugerencias de akuzminsky en los comentarios.

MySQL 5.6 tiene algunas características nuevas para mover archivos de datos InnoDB .ibd (tablespaces transportables), pero requieren algo de esfuerzo y, para una base de datos lo suficientemente pequeña, será mucho más fácil transferir datos usando mysqldump.

Agradecemos que desees respaldar nuestro análisis añadiendo un comentario y puntuándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *