Por alguna razón, cuando intento abrir mis tablas que están almacenadas en .frm
y .ibd
archivos (ya sea en MySQL o phpmyadmin) me da un error de sintaxis, o dice que no existe.
He leído la otra publicación que tenía un problema similar a este, pero no sé cómo verificar si innodb_file_per_table
está habilitada, y en general estoy realmente confundido. También convertí una copia de mi mysql-bin.000002
archivo a un archivo txt, así que veo que los datos de mi base de datos no se pierden por completo.
La base de datos fue creada el año pasado. Tengo 6 de esos mysql-bin.00000
archivos, pero por alguna razón .000002
es el más grande. En este momento, tengo los archivos .ibd
y .frm
para todas mis bases de datos, pero no sé cómo puedo restaurarlo de nuevo en MySQL, o al menos en algo que pueda leer.
Estoy usando WampServer 2.4 y MySQL 5.6.12 en Windows 2003 Server. Además, ¿debo descargar un complemento en InnoDB?
Respuestas:
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.
Espero que esto haya ayudado, y avíseme si tiene alguna pregunta o comentario. Además, consulte http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file para obtener más detalles.
fuente
Got error -1 from storage engine
cuando ejecuteIMPORT TABLESPACE
. Pero para mí MySQL 5.6 funcionó para tablas que fueron creadas usando MySQL 5.5, así que todo está bien;). Si está atascado con 5.5, debe seguir las instrucciones en el enlace de Chriscalender que planteó.innodb_file_per_table
habilitado.El archivo de datos principal de InnoDB, generalmente denominado
ibdata
, es esencial para que MySQL pueda comprender sus archivos .ibd.Si necesita mover datos entre servidores utilizando los archivos binarios, debe detener MySQL limpiamente y luego mover todos los archivos de datos, incluidos los archivos ibdata , entre directorios.
Un mecanismo más confiable para mover datos entre servidores en Windows sería usar (
mysqldump
) o una exportación de base de datos desde PHPMyAdmin (o una herramienta similar).Si el registro binario se ha habilitado todo el tiempo que su servidor ha estado ejecutándose (según los comentarios, este puede no ser el caso), también puede usar
mysqlbinlog
para recuperar cada declaración SQL que haya ejecutado en el servidor desde los archivos mysql-bin , y recrear la base de datos de esa manera. Debería haber marcas de tiempo de Unix en los archivos mysql-bin que lo ayuden a determinar qué tan atrás van.Si ha perdido sus archivos de base de datos originales y todo lo que le quedan son los archivos .ibd individuales, es posible que tenga que recurrir a la recuperación de datos según las sugerencias de akuzminsky en los comentarios.
MySQL 5.6 tiene algunas características nuevas para mover archivos de datos .ibd de InnoDB (espacios de tablas transportables ), pero estos requieren un poco de esfuerzo y, para una base de datos suficientemente pequeña, será mucho más fácil transferir datos usando
mysqldump
.fuente
Respuesta de Wiki generada a partir de comentarios de preguntas de akuzminsky
Si ve
*.ibd
archivos, entoncesinnodb_file_per_table
esON
, de lo contrario, todas las tablas estarían enibdata1
.Si dice que no existe una tabla, entonces la tabla falta en el diccionario InnoDB. Intente volcar todas las tablas en volcados de sql separados (una tabla - un archivo). Las tablas que no puede volcar puede restaurar con el kit de herramientas de recuperación TwinDB .
No hay paquetes binarios todavía. Tienes que obtener el código fuente de GitHub y compilarlo. Vea las instrucciones en el diccionario Recuperar InnoDB . Es bastante sencillo:
y entonces
fuente