Tabla de contenido
    Reparación de bases de datos MySQL

    Las mejores formas de reparar la corrupción de tablas InnoDB en MySQL


    Tabla de contenido

      Resumen: Usted puede experimentar la corrupción de tablas InnoDB debido a la caída del servidor MySQL, fallo de hardware o errores, etc. Este blog hablará sobre la tabla de base de datos corrupta en MySQL y lo que lo causa. Además, se describen las mejores maneras de reparar la corrupción de tablas InnoDB en MySQL y algunas de las mejores prácticas que puede seguir para evitar que InnoDB se corrompa.

      IMPORTANTE Reparar manualmente una tabla dañada puede funcionar, pero implica el riesgo de pérdida de datos. Si no puede arriesgarse a perder datos, intente restaurar la base de datos a partir de una copia de seguridad reciente. Sin embargo, si la copia de seguridad no es la más reciente, puede perder aún más datos. Puede evitar el riesgo de pérdida de datos al reparar tablas InnoDB (o tablas MyISAM) corruptas utilizando el software Stellar Repair for MySQL. Ayuda a recuperar datos de tablas corruptas o dañadas en el formato original en sólo unos clics.

      InnoDB es el motor de almacenamiento MySQL utilizado por defecto en MySQL 5.5 y versiones posteriores. También es conocido como un motor de almacenamiento a prueba de fallos (a diferencia de MyISAM), debido a su capacidad para recuperar datos después de un fallo. Sin embargo, en algunas circunstancias, parece que la tabla InnoDB puede corromperse. Cuando esto ocurre, los datos contenidos en la tabla se vuelven ilegibles. Además, una tabla corrupta puede causar la corrupción de archivos InnoDB.

      Corrupción de archivos InnoDB

      ¿Qué causa la corrupción de tablas InnoDB en MySQL?

      Algunas razones que pueden dar lugar a una tabla corrupta son las siguientes:

      • El servicio MySQL se bloquea después de reiniciar
      • MySQL Server se reinicia automáticamente
      • Fallo de alimentación o mala memoria detiene MySQL Server al escribir en la tabla de base de datos
      • Hay un error en el sistema operativo o en el código MySQL
      • Fallo de hardware
      • La máquina en la que se ejecuta MySQL se apaga inesperadamente.

      Usted puede encontrar tabla InnoDB problema de corrupción con más frecuencia en el sistema operativo Windows, mientras que la base de datos se ejecuta en un entorno virtualizado. Ahora, vamos a discutir cómo diagnosticar y reparar tabla InnoDB en MySQL.

      Antes de proceder

      Intente identificar con precisión a qué se enfrenta. Esto le ayudará a solucionar el problema de InnoDB de una manera más eficiente sin perder tiempo buscando métodos alternativos.

      Para diagnosticar problemas de InnoDB, realice lo siguiente:

      1. Analizar el registro del servidor MySQL

      Si sospecha o encuentra corrupción en las tablas InnoDB, examine el registro de errores del Servidor MySQL para encontrar información relevante sobre errores InnoDB específicos. El registro de errores le ayudará a entender:

      • Si la tabla se corrompe debido a la corrupción de la página de base de datos. Una página corrupta en la base de datos MySQL puede conducir a la corrupción en una tabla db.
      • Si el fallo ocurre debido a un bloqueo, ejecute con la sentencia innodb_print_all_deadlocks habilitada. Los detalles sobre todos los bloqueos de InnoDB se imprimirán en el registro de errores del Servidor MySQL.
      • Si se encuentra con problemas de fallo del diccionario de datos InnoDB, deberá resolver los errores “imposibilidad de abrir archivos .InnoDB”, “sentencia CREATE TABLE fallida” y “el sistema no puede encontrar la ruta especificada”. La resolución de estos errores permitirá acceder al diccionario de datos InnoDB.

      2. Comprobación de errores en la tabla

      Aunque comprobar el registro de errores de MySQL puede ayudarle a identificar la corrupción, puede tener problemas para identificar qué tabla se vio afectada por ella. Puede comprobar si hay errores en la tabla InnoDB utilizando dos métodos. Sin embargo, el método que se puede utilizar aquí depende de si MySQL Server se está ejecutando o está fuera de línea / se estrelló.

      • Si el servidor está funcionando, utilice el comando CHECK TABLE para encontrar errores en la tabla InnoDB.

      mysql> CHECK TABLE nombre_tabla;

      • Si el servidor está desconectado o se ha bloqueado, utilice Innochecksum para comprobar si hay errores de corrupción de página en una tabla InnoDB.

      shell> innochecksum [opciones] nombre_archivo

      ¿Cómo reparar una tabla InnoDB corrupta en MySQL?

      InnoDB viene con un mecanismo de recuperación de fallos que ayuda a reparar y recuperar tablas db de fallos automáticamente. Además, puede utilizar el método ‘Dump and Reload’ para reconstruir una o más tablas dañadas. Sin embargo, en caso de corrupción grave, puede que le resulte difícil reiniciar el servidor MySQL. Y así, usted tendrá que arreglar manualmente el archivo InnoDB en MySQL que tiene la tabla corrupta.

      Nota: Antes de intentar reparar la corrupción de archivos InnoDB causada por una tabla corrupta, realice la recuperación a partir de una copia de seguridad reciente. Si la copia de seguridad está dañada o no es la más reciente, siga los pasos que se indican a continuación.

      Siga un procedimiento paso a paso para reparar una tabla InnoDB dañada

      Nota: Asegúrese de hacer una copia de seguridad del archivo InnoDB antes de realizar el procedimiento de reparación para evitar daños mayores en los datos de la tabla.

      Paso 1: Intente reiniciar el servicio MySQL y compruebe si puede acceder al servidor. Para ello, siga estos pasos:

      • Pulsa a la vez las teclas “Windows” y “R”.
      • En el cuadro de diálogo que aparece, escriba services.msc y pulse Intro.
      • En el cuadro de diálogo Servicios, busque el Servicio MySQL y haga clic con el botón derecho sobre él, y haga clic en detener, iniciar o reiniciar el servicio.

      Si no puede acceder al Servidor, forcing InnoDB recovery puede ayudar. Para ello, active la opción ‘innodb_force_recovery‘ en el archivo de configuración my.cnf de MySQL realizando lo siguiente:

      • Abra el fichero de configuración, y en la sección [mysqld], añada la siguiente línea:

      [mysqld]

      innodb_force_recovery=1

      • Ahora guarde y cierre el archivo my.cnf.
      • Intente reiniciar el servicio MySQL de nuevo.
      • Si puedes acceder a la tabla corrupta, vuelca los datos de la tabla utilizando el comando mysqldump:

      mysqldump -u usuario -p nombre_base_tabla nombre_tabla > single_dbtable_dump.sql

      Puede volcar varias tablas separadas por espacios en blanco en el comando anterior.

      • A continuación, elimine la tabla de la base de datos:

      mysql -u usuario -p -execute=”DROP TABLA nombre_base_de_datos.nombre_tabla”

      • Ahora intente restaurar la tabla utilizando el archivo de volcado recién creado:

      mysql -u usuario -p < single_dbtable_dump.sql

      Paso 2: Detenga el servicio MySQL y, a continuación, desactive el modo de recuperación InnoDB. Para ello, introduzca la siguiente línea en la sección [mysqld]:

      #innodb_force_recovery=…

      Paso 3: Guarde los cambios en el archivo my.cnf y reinicie el servicio MySQL utilizando el siguiente comando:

      service mysqld start

      Restaure la tabla de la base de datos a partir del volcado (es decir, el archivo de copia de seguridad) que acaba de crear.

      ¿Qué hacer cuando los consejos manuales de solución de problemas de InnoDB no consiguen recuperar los datos?

      Si encuentra alguna dificultad al reparar manualmente las tablas InnoDB de la base de datos MySQL o falta alguno de los componentes de la base de datos, puede probar MySQL repair software para reparar y restaurar las tablas InnoDB dañadas.

      Características principales de Stellar Repair for MySQL

      • Recupera todos los objetos de la base de datos, incluyendo tablas, claves, tipos de datos, propiedades de tablas, triggers, vistas, etc.
      • Repara las tablas InnoDB y MyISAM.
      • Puede manejar todo tipo de errores de corrupción de MySQL, como la corrupción de espacio de tablas InnoDB, archivo de base de datos que falta, la corrupción del archivo de índice de MySQL, etc.
      • Repara bases de datos MySQL creadas en sistemas basados en los sistemas operativos Windows (10, 8.1, 8, 7, Vista y XP) y Linux.
      • Admite el procesamiento por lotes de archivos de bases de datos MySQL corruptos simultáneamente en un solo intento.

      Conclusión

      Reparar manualmente una tabla InnoDB corrupta puede provocar la pérdida de datos. Por lo tanto, si no puede arriesgarse a perder datos, utilice el software Stellar Repair for MySQL para reparar tablas InnoDB dañadas en MySQL. El software ayuda a reparar la tabla de base de datos corrupta y recupera las propiedades de la tabla, las restricciones de relación y las claves.

      Una vez que haya solucionado la corrupción de archivos InnoDB, siga estas prácticas recomendadas para evitar la corrupción de InnoDB.

      • Es una buena práctica agrupar los conjuntos asociados a las tareas DML en transacciones. Esto puede hacerse poniendo entre corchetes las operaciones DML con sentencias START TRANSACTION y COMMIT.
      • Cuando utilice las columnas más consultadas, especifique la clave primaria de cada tabla. También puede utilizar un valor de autoincremento en caso de que no exista clave primaria.
      • Active la opción innodb_file_per_table para colocar los índices y datos de tablas individuales en archivos distintos.
      • Si persiste algún problema con el motor indicado en la cláusula ENGINE= de CREATE TABLE, ejecute el Servidor con la opción -sql_mode=NO_ENGINE_SUBSTITUTION para evitar que las tablas se formulen con un motor de almacenamiento diferente.
      • Es aconsejable no utilizar la sentencia LOCK TABLES y utilizar la sintaxis SELECT … FOR UPDATE para desbloquear las filas que se requieren actualizar con el fin de adquirir acceso exclusivo de escritura a un conjunto de filas. InnoDB posee la capacidad de manejar múltiples sesiones de escritura de lectura en la misma tabla simultáneamente.
      • Ejecute MySQL Server desde el símbolo del sistema mientras soluciona problemas de Innodb en lugar de desde el servicio de Windows o mysqld_safe
      • Asegúrese de que los Monitores InnoDB están habilitados para adquirir información sobre el problema existente. Si el problema persistente está relacionado con el rendimiento y el Servidor se congela, asegúrese de habilitar el Monitor estándar para imprimir información relacionada con el estado interno de InnoDB. De lo contrario, habilite los monitores de bloqueo si el problema parece estar relacionado con los bloqueos.

      Was this article helpful?

      No NO

      Sobre el autor

      Himanshu Shakya

      Himanshu is a Tech Enthusiast and Blogger at Stellar, with expertise in data recovery solutions and a keen interest in emerging technologies. Fluent in Japanese, he brings a diverse skill set to his role, contributing to global tech conversations. Outside of work, Himanshu enjoys playing chess, sharpening his strategic thinking and problem-solving skills in his spare time.

      Publicación relacionada

      POR QUÉ STELLAR® ES LÍDER MUNDIAL

      ¿Por qué elegir Stellar?

      • 0M+

        Clientes

      • 0+

        Años de excelencia

      • 0+

        Ingenieros de I+D

      • 0+

        Países

      • 0+

        SOCIOS

      • 0+

        Premios recibidos