Volver al blog

Soluciones rápidas para reparar tablas corruptas en MySQL: un tutorial

Soluciones rápidas para reparar tablas corruptas en MySQL: un tutorial

MySQL es uno de los sistemas de código abierto más populares de RDBMS (Sistemas de Gestión de Bases de Datos Relacionales). Es una parte integral del rápido crecimiento de LAMP Stack y ha ganado una impresionante base de seguidores entre desarrolladores y administradores de sistemas. En comparación con bases de datos no relacionales, SQL proporciona excelentes funcionalidades para organizar, almacenar y gestionar datos de manera eficaz. Las características distintivas de organización de tablas y las capacidades sobresalientes de la base de datos SQL la convierten en la opción preferida en todos los niveles de la organización, tanto grandes como pequeñas.

Las tablas de MySQL pueden dañarse en raras ocasiones, lo que indica que ha ocurrido un error de este tipo y que los datos almacenados en ellas son ilegibles. Cuando intenta leer datos de una tabla dañada, el servidor se cae y arroja un error o una lista de errores.

Razones potenciales detrás de la corrupción de tablas de MySQL

A continuación se presentan algunas de las razones más típicas de las tablas dañadas:

  • El servicio MySQL se cae después del reinicio.
  • La máquina se apaga inesperadamente debido a un corte de energía.
  • Memoria defectuosa o fallo de hardware.
  • Errores de software en el sistema operativo o en el código SQL.
  • MySQL se apaga mientras escribe.
  • El sistema se pone en OFF mientras se actualiza SQL.

Antes de reparar una tabla que sospeche que está dañada, cree una copia de seguridad de su directorio de información. Esto ayudará a reducir la probabilidad de pérdida de datos. En esta guía rápida, le guiaremos a través de los pasos de resolución de problemas para reparar tablas dañadas en MySQL.

Requisitos previos

Para seguir este tutorial, necesitará lo siguiente:

Paso 1: Detener el servicio MySQL y realizar una copia de seguridad de los datos

Inicialmente, detenga el servicio MySQL utilizando el systemctl comando:

Después de detener el servicio SQL, el siguiente paso es crear copias de seguridad de todos los archivos existentes en un nuevo directorio. Utilice el directorio de datos predeterminado de Ubuntu /var/lib/mysql/ para copiar todos los datos del sistema:

Paso 2: Identificar el error

A continuación, comenzaremos nuestra investigación e identificaremos la tabla dañada. Si la tabla está utilizando el motor de almacenamiento MyISAM, utilice la instrucción CHECK TABLE y verifique el estado de la tabla:

Verá un mensaje como salida que confirma la tabla o tablas dañadas.

Paso 3: Reparar la tabla dañada

Si hay un error en la tabla MyISAM y la ha identificado, utilice la instrucción REPAIR TABLE para solucionar el error:

Si la reparación fue exitosa, debería ver el siguiente mensaje libre de errores como salida:

Sin embargo, si ve que el error vuelve a aparecer, siga el documento oficial de la versión 8.0 de MySQL para reconstruir o reparar tablas.

A diferencia del motor de almacenamiento MyISAM, el proceso de InnoDB involucrado en la reparación de tablas es diferente en el motor de almacenamiento InnoDB. InnoDB es el motor de almacenamiento predeterminado en MySQL 8.0. Cuenta con operaciones automatizadas de comprobación y reparación de daños. El MySQL InnoDB comprueba si hay páginas dañadas realizando sumas de comprobación en cada página que lee. Si se detecta una discrepancia, detendrá automáticamente el servidor MySQL.

En resumen, rara vez es necesario reparar las tablas InnoDB. InnoDB cuenta con un mecanismo de recuperación de caídas que puede resolver la mayoría de los problemas mediante un reinicio.

Intente reiniciar el servicio MySQL para ver si puede obtener acceso al servidor:

Si no logra reconstruir una tabla InnoDB dañada incluso después del reinicio, intente el método “Volcado y recarga” sugerido en la documentación de MySQL. Este método implica recuperar el acceso a la tabla dañada, utilizando la utilidad mysqldump. Se debe crear una carpeta para almacenar y conservar la copia de seguridad lógica de la tabla. Una vez que se corrige el error, vuelve a cargar la tabla en la base de datos.

Paso 4: Aprovechar la opción innodb_force_recovery

Si el servidor sigue caído o inaccesible, intente utilizar la opción force_recovery en InnoDB. Poner en ON la opción force_recovery es una excelente manera de restaurar bases de datos MySQL. Puede habilitar esta opción modificando el archivo mysqld.cnf en el editor de texto nano:

Inserte la siguiente línea debajo de la sección [mysqld]:

innodb force recovery

Guarde y cierre el archivo después de reiniciar el servicio MySQL.

Paso 5: Crear un archivo mysqldump

Si puede acceder a la tabla dañada, utilice la opción mysqldump para colocar todos los volcados en el nuevo archivo. Nombre el nuevo archivo según su preferencia y asegúrese de agregar la extensión .sql al final. Aquí nombraremos el archivo como demo.sql:

Después de eso, use la consulta DROP TABLE para eliminar la tabla de la base de datos. Puede utilizar la siguiente sintaxis para evitar tener que volver a abrir el símbolo del sistema de MySQL:

Then, using the dump document demo.sql que acaba de preparar, restaure la tabla:

Ha reparado con éxito su tabla dañada de MySQL y está listo para trabajar con la base de datos sin problemas.

Conclusión

Es probable que ocurran corrupciones de tablas o caídas inesperadas del sistema si está trabajando con un gran volumen de datos. Vale la pena mencionar que el motor de almacenamiento MySQL InnoDB es más tolerante a fallos que el anterior motor MyISAM. Las tablas que utilizan el motor de almacenamiento InnoDB aún pueden dañarse, aunque el peligro de corrupción de tablas y fallos se reduce significativamente gracias a sus funciones de autorrecuperación.

Finalmente, hay muchos temas y tutoriales sobre bases de datos que puede explorar en nuestro blog:

¡Feliz computación!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.