Cómo reparar tablas de base de datos MySQL corruptas paso a paso

En el mundo moderno, las empresas no dependen solamente de una plataforma de servidor de base de datos específica. Existen muchas plataformas de base de datos disponibles que son adecuadas para manejar cargas de trabajo moderadas y requisitos de clientes de alta disponibilidad y recuperación ante desastres. MySQL es una de esas plataformas de base de datos que proporciona muchas características y alta performance.

Al igual que otras RDBMS, MySQL también es propenso a la corrupción de las bases de datos y las tablas. La reciente interrupción de servicio causada por Microsoft y CrowdStrike también afectó los servidores de base de datos MySQL. Debido a fallos del sistema operativo, las tablas de la base de datos o bases de datos enteras se corromperían.

En este artículo, les mostraré cómo podemos corromper y reparar una tabla de la base de datos de MySQL. Este artículo es útil para DBAs para simular los fallos y les ayuda a determinar la mejor manera posible para restaurar o reparar la tabla corrupta de MySQL.

Comprensión de la Corrupción de la Base de Datos MySQL

La corrupción de la base de datos de MySQL puede manifestarse de varias maneras, incluidas:

Tablas Inaccesibles

La tabla completa o una subcategoría específica de la tabla se hace inaccesible. Cuando intentas acceder a la tabla corrupta, encontrarás errores que señalan la corrupción del archivo de índice o del archivo de datos de una tabla.

Errores de Inconsistencia de Datos

Si la tabla se corrompe, en lugar de datos significativos, su consulta podría devolver algunos valores basura o resultados inconsistentes o incompletos.

Apagones Inesperados

En algunos casos, MySQL puede fallar mientras accede a la tabla o ejecuta las copias de seguridad utilizando mysqldump. Una vez encontré este error mientras simulaba el escenario de corrupción. Corrompí el archivo de datos de una tabla. Después de iniciar el servicio, cuando intenté acceder a la tabla usando una sentencia SELECT, el servicio de MySQL se cayó automáticamente.

Mensajes de Error Durante las Operaciones de Base de Datos

Al acceder a la tabla corrupta, podría encontrar ciertos errores como:

Plain Text

 

Estos errores indican que el archivo de datos o los archivos de índice asociados están corrompidos.

Es crucial entender la causa raíz de la corrupción para prevenir futuras apariciones y asegurar la integridad de los datos.

Prerequisitos para Reparar las Tablas de MySQL

Antes de intentar cualquier reparación, asegúrese de que tiene lo siguiente:

  • Copia completa de su base de datos de MySQL
  • Espacio de disco suficiente
  • Acceso administrativo al servidor de MySQL

Ahora, simulemos la corrupción de la tabla.

Tabla MySQL Corrupta

Antes de aprender el proceso de reparación de la base de datos, primero entendremos cómo corromper la base de datos. Para la demostración, he creado una base de datos llamada “CorruptDB” en un servidor de base de datos MySQL. También he creado una tabla llamada corrupt_table en la base de datos CorruptDB.

Aquí está el código para crear una base de datos y una tabla.

MySQL

 

He añadido un millón de registros a la tabla ejecutando la siguiente consulta.

MySQL

 

Tenga en cuenta que la simulación de la corrupción de la tabla se ha realizado en mi portátil. No intente esto en producción, desarrollo o cualquier otro entorno. La tabla que estoy usando en esta demostración se creó con el motor de base de datos MyISAM. Puede leer sobre Motores de Almacenamiento Alternativos para aprender más sobre los motores de base de datos de MySQL Server.

He realizado los siguientes pasos para corromper la tabla.

Paso 1: Detenga los Servicios del Servidor MySQL

Necesita detener el servidor MySQL. Para hacerlo, ejecute PowerShell como administrador y ejecute el siguiente comando.

Plain Text

 

Alternativamente, también puede detenerlo desde Servicios.

Paso 2: Corromper el Archivo de Índice de la Tabla

Ahora, debemos corromper el archivo de índice de la tabla. Cuando creas cualquier tabla en el motor de base de datos MyISAM, se crean tres archivos cuando creas una tabla usando el motor de base de datos MyISAM.

  • Archivos MYD: Este archivo contiene los datos actuales.
  • Archivos MYI: Este es un archivo de índice.
  • Archivos Frm: El archivo contiene una estructura de tabla.

Vamos a corromper el archivo de índice. Los archivos de datos se encuentran en la ubicación predeterminada, que es “C:\ProgramData\MySQL\MySQL Server 8.0\Data\corruptdb.” Para la corrupción, estamos utilizando un editor hexadecimal.

Descargue e instale el editor hexadecimal. Abra los archivos MYI con él. El archivo se parece a la siguiente imagen:

Reemplace los primeros 5 bytes con algunos valores aleatorios. Guarde el archivo y cierre el editor.

Ahora, empecemos el servicio y intentemos acceder a la tabla.

Paso 3: Iniciar los Servicios de MySQL y Acceder a la Tabla

Primero, inicie los Servicios de MySQL ejecutando el siguiente comando en PowerShell.

Plain Text

 

Una vez que los servicios estén iniciados, ejecute la siguiente consulta en la línea de comandos de MySQL.

MySQL

 

La consulta devolvió el siguiente error:

El error indica que el índice de la tabla corrupt_table se ha corromper y debe ser reparado.

Métodos manuales para reparar tablas de MySQL

Hay ciertos métodos que puede utilizar para reparar la tabla corrompida de MySQL. El primer método es utilizar los comandos chequear tabla y reparar tabla.

Comandos Chequear Tabla y Reparar Tabla

Puede restaurar la tabla utilizando los comandos integrados CHECK TABLE y REPAIR TABLE de MySQL. Estos comandos se utilizan para diagnosticar y reparar cualquier tabla MyISAM.

La orden de comprobar la tabla verifica la integridad de la tabla. Comprueba la estructura de la tabla, índices y datos para cualquier corrupción y muestra los detalles. La sintaxis es la siguiente:

Plain Text

 

Puedes especificar las diferentes opciones.

  1. QUICK: Esta opción verifica rápidamente y identifica problemas como la corrupción de los índices.
  2. FAST: Chequea las tablas que no se cierran correctamente.
  3. CHANGED: Esta opción verifica solo aquellas tablas que han sido modificadas después de la última ejecución de CHECK TABLE.
  4. MEDIUM: Esta opción verifica los registros y verifica que los enlaces entre la tabla y los datos son correctos.
  5. EXTENDED: Esta opción escanea detalladamente y verifica la estructura de la tabla y sus contenidos.

En esta demostración, realizaremos una escaneo rápido. Aquí está la orden.

Plain Text

 

Captura de pantalla:

Como puede ver en la captura de pantalla anterior, el error indica que el índice de la tabla corrupt_table está corrupto y necesita ser arreglado.

Usaremos la orden REPAIR TABLE para arreglar la corrupción en la tabla. La orden REPAIR TABLE se utiliza para recuperar la estructura de la tabla y los datos de la corrupción, especialmente la tabla que tiene el motor de base de datos MyISAM. En caso de que el índice de la tabla esté corrupto, la orden REPAIR TABLE reconstruye los índices.

La sintaxis de REPAIR TABLE es la siguiente:

Plain Text

 

Puedes especificar las siguientes opciones:

  • QUICK: Solamente repara el archivo de índice de una tabla. No accede al archivo de datos de una tabla.
  • EXTENDIDO: Cuando utilizamos esta opción, la orden realizará una reparación minuciosa. También repara o recrea el archivo de índice examinando todos los registros de la tabla.

En esta demostración, hemos corrompido el índice de la tabla; por lo tanto, utilizaremos la opción RÁPIDO. Ejecute la siguiente orden.

Plain Text

 

Captura de pantalla:

Como puede ver en la captura de pantalla anterior, la tabla corrupt_table ha sido reparada con éxito. Para verificar, ejecute la siguiente consulta en MySQL Workbench:

MySQL

 

Salida de consulta:

Como puede ver, la tabla ahora es accesible.

Restaurar Tabla Usando la Orden mysqldump

El segundo método es restaurar toda la tabla desde la copia de seguridad. Este método se puede utilizar cuando la tabla está muy corrompida y no se puede reparar usando la orden REPAIR TABLE.

Para restaurar una tabla de MySQL desde la copia de seguridad, podemos usar la orden mysqldump. Puede leer el artículo “mysqldump — Un Programa de Copia de Seguridad de Base de Datos” para aprender más acerca de cómo usar la orden mysqldump. La sintaxis para restaurar la tabla se muestra a continuación.

MySQL

 

En la sintaxis:

  • Nombre de usuario: Ingrese el nombre de usuario que utiliza para conectarse a la base de datos de MySQL.
  • -p: Especifique la contraseña. Si la deja en blanco, MySQL le pedirá una contraseña.
  • [nombre_de_base_de_datos]: Especifique el nombre de la base de datos en la que está intentando restaurar la tabla.
  • Table_dump.sql: Especificar el nombre completo del archivo de respaldo.

Para la demostración, he realizado un respaldo de la base de datos CorruptDB que se encuentra en el directorio C:\MySQLData\Backup.

Para restaurar la corrupt_table, podemos utilizar el siguiente comando.

MySQL

 

Una vez que se ejecute correctamente el comando, podrá acceder a la tabla. Ejecute la siguiente consulta para verificar.

MySQL

 

Salida de consulta:

Como puede ver en la captura de pantalla anterior, la tabla ha sido restaurada exitosamente.

Usando phpMyAdmin

También puede usar la herramienta phpMyAdmin para reparar cualquier base de datos MySQL corrupto. phpMyAdmin es una interfaz de usuario gráfico para administrar y mantener MySQL y MariaDB. Para la demostración, la he instalado en mi portátil.

  • Para reparar la tabla, inicie phpMyAdmin y navegue a la base de datos en la que existe la tabla corrupta.
  • En el panel derecho, puede ver la lista de tablas creadas en la base de datos CorruptDB.
  • Seleccione Corrupt_table de la lista y seleccione la opción Reparar tabla del cuadro desplegable.

Aquí tienen una captura de pantalla como referencia:

Una vez que se repare la tabla, pueden ver que el estado de la corrupt_table se convierte en OK. Aquí tienen la captura de pantalla:

Conclusión

En este artículo, aprendimos sobre las posibles razones de la corrupción de la base de datos MySQL y cómo solucionarlas. He explicado un proceso paso a paso para corromper tablas de MySQL usando un editor hexadecimal. También he cubierto cómo solucionarlos usando las órdenes CHECK TABLE y REPAIR TABLE. También hemos aprendido cómo restaurar la tabla usando la utilidad mysqldump

La reparación de una tabla de base de datos MySQL corrupta puede ser desafiante, pero con las herramientas y métodos adecuados, es manejable. Los métodos manuales proporcionan una solución básica, mientras que phpMyAdmin ofrece una opción de recuperación amplia y fiable. Siempre asegúrese de hacer copias de seguridad regulares y mantener la salud de su base de datos para minimizar el riesgo de corrupción.

Source:
https://dzone.com/articles/repair-corrupt-mysql-database-tables-step-by-step