Tengo un MySQL InnoDB que tiene todos los archivos de la tabla de la base de datos, pero MySQL no los ve y no los carga.
El problema ocurrió porque he eliminado estos tres archivos: ibdata1, ib_logfile0yib_logfile1
porque estaba teniendo problemas con el inicio de mysql, y lo que leí fue eliminarlos porque MySQL simplemente los regenerará (sé que debería haberlos respaldado pero no lo hice).
¿Qué puedo hacer para que MySQL vuelva a ver las tablas?
about_member.frm site_stories.frm
about_member.ibd site_stories.ibd
db.opt stories.frm
FTS_00000000000000bb_BEING_DELETED_CACHE.ibd stories.ibd
FTS_00000000000000bb_BEING_DELETED.ibd story_comments.frm
FTS_00000000000000bb_CONFIG.ibd story_comments.ibd
FTS_00000000000000bb_DELETED_CACHE.ibd story_likes.frm
FTS_00000000000000bb_DELETED.ibd story_likes.ibd
FTS_00000000000000f5_BEING_DELETED_CACHE.ibd story_tags.frm
FTS_00000000000000f5_BEING_DELETED.ibd story_tags.ibd
FTS_00000000000000f5_CONFIG.ibd story_views.frm
FTS_00000000000000f5_DELETED_CACHE.ibd story_views.ibd
FTS_00000000000000f5_DELETED.ibd story_view_totals.frm
member_favorites.frm story_view_totals.ibd
member_favorites.ibd tags.frm
members.frm tags.ibd
members.ibd

Respuestas:
Aquí es por qué MySQL no puede ver esos archivos: El espacio de tabla del sistema (ibdata1) tiene un diccionario de datos específico de Storage-Engine que permite a InnoDB mapear el uso potencial de la tabla:
Mover tablas de InnoDB de un lugar a otro requiere comandos como
Aquí hay una parte de la documentación de MySQL 5.5 que explica lo que debe considerarse
Dadas estas advertencias y protocolos, aquí hay un curso de acción sugerido
Para este ejemplo, intentemos restaurar la
tagstabla a lamydbbase de datos.PASO 1
Asegúrese de tener copias de seguridad de esos
.frmy.ibdarchivos en/tmp/innodb_dataPASO 2
Obtenga la
CREATE TABLE tagsdeclaración y ejecútela comoCREATE TABLE mydb.tags .... Asegúrese de que sea exactamente la misma estructura que el originaltags.frmPASO 3
Eliminar el vacío
tags.ibdusando MySQLETAPA 4
Traiga la copia de seguridad de
tags.ibdPASO # 5
Agregar
tagstabla al diccionario de datos InnoDBPASO 6
Probar la accesibilidad de la mesa
Si obtiene resultados normales, felicidades, importe una tabla InnoDB.
PASO 7
En el futuro, no elimine ibdata1 y sus registros.
Darle una oportunidad !!!
He discutido cosas como esta antes
Apr 23, 2012: MySQL: ¿cómo restaurar la tabla almacenada en un archivo .frm y .ibd?Sep 28, 2011: Cómo recuperar una tabla InnoDB cuyos archivos se movieronADVERTENCIA
¿Qué pasa si no conoce la estructura de la tabla
tags?Hay herramientas para obtener la instrucción CREATE TABLE simplemente usando el
.frmarchivo. También escribí una publicación sobre esto: ¿Cómo puedo extraer el esquema de la tabla solo del archivo .frm? . En esa publicación, copié un archivo .frm en una máquina Windows desde un cuadro de Linux, ejecuté la herramienta de Windows y obtuve laCREATE TABLEdeclaración.fuente
weblyize.tags'existe. DESECHE el espacio de tabla antes de IMPORTAR. Entonces trato de ejecutar primero el tablespace alter y obtengo este error: ERROR 1146 (42S02): La tabla 'weblyize.tags' no existe . ¿Que puedo hacer?CREATE TABLE ...y seguí tus pasos. ¡Me salvaste de tener que reescribirlos al 100% desde cero! No importó claves externas, pero está bien, ¡puedo hacerlo yo mismo! ¡Gracias otra véz!Tengo la misma situación, no puedo soltar o crear tblname específico. Mi procedimiento de reparación es:
Detener MySQL
Elimine ib_logfile0 e ib_logfile1.
Eliminar archivos tblname. ADVERTENCIA: ESTO BORRARÁ PERMANENTEMENTE SUS DATOS
Inicia MySQL.
fuente
Yo tuve este problema también. Eliminé
ibdata1accidentalmente y se perdieron todos mis datos.Después de 1-2 días de búsqueda en Google y SO, finalmente encontré una solución que me salvó la vida (tenía tantas bases de datos y tablas con grandes registros).
tomar una copia de seguridad de
/var/lib/mysqlrecuperar el esquema de la tabla del
.frmarchivo con dbsake (¡había otra opción! mysqlfrm . pero no funcionó para mí)crear nueva tabla (con nuevo nombre) con esquema exportado.
descarte los nuevos datos de la tabla con este comando:
/var/lib/mysql/database-namey si hay datos (.ibdarchivo) para la tabla anterior, elimínelos.fuente