Pregunta Las tablas MySQL InnoDB faltan y no se cuentan en la estructura de la base de datos


Tengo un problema serio en mis tablas de MySQL, una vez hubo tablas de InnoDB que estaban EN USO y ahora están de alguna manera ocultas

mira esto [pic] * Enlace eliminado - el número de tablas en el encabezado es 79 y el número contado real es 74.

Estas tablas son las que estaban en uso.

No tengo ninguna copia de seguridad reciente de mi base de datos, por lo que este sería un juego de vida o muerte para mí.

Revisé mi VPS, los encontré en / etc / lib / mysql / db_name /.

EDITAR:

Busqué en Internet y descubrí que cada tabla debería tener 3 archivos relacionados.

Por ejemplo, la tabla. table_users tiene:

 -- table_users.frm
 -- table_users.MYD
 -- table_users.MYI

y para esas tablas ocultas, solo hay archivos .frm y faltan los otros dos archivos de una tabla.

Debería cambiar mi pregunta a: ¿Cómo recuperar una tabla innodb de un archivo .frm?


5
2018-06-03 07:21


origen


Respuestas:


InnoDB no tiene esos tres archivos

Los datos de InnoDB se almacenan en "ibdata1" para todas las bases de datos y tablas. la definición de la tabla se almacena en "tablename.frm"

Yo diría que su archivo InnoDB se ha corrompido, es posible que desee echar un vistazo a estas herramientas: https://launchpad.net/percona-innodb-recovery-tool


6
2018-06-03 09:39



ACTUALIZADO

En primer lugar, sobre los archivos:

  • .frm - estructura de la tabla;
  • .myd - datos de la tabla;
  • .myi - índices.

Para recuperar tablas, puede intentar (hacer una copia de seguridad primero):

1) ejecutar check table tablename - para todas las tablas db;
2) ejecutar repair table tablename - Para las mesas necesarias.


ACTUALIZADO UNA VEZ OTRA VEZ

Otra idea ... Prueba esto:

  1. Cree una nueva base de datos para restaurar y crear las tablas con el mismo nombre que los archivos .frm (con un campo, solo para crear nuevos archivos .frm);
  2. Detenga el servicio mysql y reemplace los archivos .frm creados con los suyos;
  3. Inicia el servicio mysql y comprueba.

Espero tablas correctas (sin datos, por supuesto). Y lo siento, por ahora no tengo PC para verificar, antes de sugerir ...


1
2018-06-03 08:07



en realidad yo también estaba teniendo el mismo problema con los dos archivos faltantes. luego descubrí que cuando el tipo de tabla es innodb, entonces la carpeta de la base de datos tendría solo un archivo asociado.

pero puede cambiar el tipo de tabla a myisam para obtener los tres archivos para la tabla.

ahora según la copia de seguridad, puede exportar la base de datos cuando y donde quiera :)

PHP es genial :)


1
2017-07-12 12:51



! [imagen innodb] [1] HABITACIÓN DEL SISTEMA INNODB

El espacio de tablas del sistema INNODB está contenido en el directorio de datos mysql ---

INNODB es el espacio de tabla del sistema se divide en dos partes

1> .frm       puede describir el formato de la tabla o puede decir que es un mesa *definición*

2> .ibd        contiene todo el archivo relacionado con el sistema y también contiene datos e índice y (el espacio de tabla principal de InnoDB contiene - ibdata1 - y rehace los registros - ib_logfile *.) ibdata1 contiene su base de datos InnoDB e ib_logfile0 y ib_logfile1 son archivos de registro para InnoDB.

Si elimina su archivo ibdata1, se perderán todas las tablas de InnoDB.

De forma predeterminada, InnDB utiliza un "espacio de tabla" compartido, que es uno o más archivos de un área de almacenamiento lógico único. Todas las tablas de InnoDB se almacenan juntas dentro del tabespace (de todas las bases de datos). Por defecto, InnoDB crea dos archivos de registro de 5MB en el directorio de datos: iblogfile0 e iblogfile1. La información se registra de forma circular, y la información anterior se sobrescribe cuando el registro se llena. Por consiguiente, un registro más grande permite que InnoDB se ejecute por más tiempo sin tener que forzar los cambios registrados en los registros para que se apliquen a la red. espacio de tabla en el disco.


1
2017-08-14 11:44