sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo solucionar problemas comunes con la base de datos MySQL?

Resumen: Este artículo enumera algunos de los errores comunes que puede encontrar cuando una tabla MySQL se corrompe. También describe las posibles razones detrás de la corrupción de la tabla de la base de datos MySQL. El artículo también explica lo que puede hacer para reparar tablas corruptas y cómo un software de reparación de bases de datos MySQL puede ser útil para recuperar datos dentro de la tabla y todos los demás objetos de la base de datos.

Como usuario de la base de datos MySQL, es posible que encuentre alguno de estos errores:

  • "La mesa está marcada como bloqueada y debe repararse"
  • "La tabla se bloqueó y la última reparación falló"
  • “La tabla tbl_name no existe”
  • "Archivo de clave incorrecto para la tabla:'...'. Intenta repararlo”, etc.

Estas son señales de advertencia de que su tabla MySQL está dañada.

¿Qué causa la corrupción en la tabla de la base de datos MySQL?

Las siguientes son posibles razones que conducen a la corrupción de la tabla de la base de datos MySQL:

  • Problemas en la plataforma subyacente utilizada por MySQL, incluido el subsistema de disco, controladores, controladores, etc.
  • Cierre abrupto del sistema o caída del servidor
  • El proceso de MySQL se elimina en medio de la escritura en la base de datos
  • Error de software o falla de hardware

Encontrar cualquiera de estos errores de corrupción de MySQL puede hacer que los datos dentro de las tablas sean inaccesibles. Discutamos las soluciones para arreglar las mesas dañadas.

¿Cómo corregir los errores de corrupción de la base de datos MySQL?

Si tiene una copia de seguridad actualizada de su base de datos, restaure la base de datos desde la copia de seguridad para recuperar los datos de la tabla inaccesibles. Si la copia de seguridad no está disponible, realice los pasos en la secuencia a continuación para reparar las tablas MySQL corruptas y recuperar datos:

Nota: Realice una copia de seguridad de su base de datos y tablas MySQL para evitar más daños durante el proceso de reparación y recuperación.

Paso 1:Comprobar si hay errores en la tabla

Primero, debe verificar la tabla de la base de datos en busca de errores de corrupción. Puede utilizar la TABLA DE COMPROBACIÓN comando para diagnosticar tablas corruptas de InnoDB y MyISAM:

opción CHECK TABLE tbl_name;

Aquí, reemplace 'tbl_name' con el nombre de la tabla de la base de datos corrupta. Y reemplace "opción" con cualquiera de estas opciones:RÁPIDO, RÁPIDO, MEDIO, EXTENDIDO y CAMBIADO.

Opción Descripción
RÁPIDO Repara más rápidamente las tablas InnoDB y MyISAM. Omite escanear las filas para buscar enlaces incorrectos
RÁPIDO Verifique solo las tablas de MyISAM que no se hayan cerrado correctamente. No aplicar a tablas InnoDB.
CAMBIADO Verifique solo las tablas de MyISAM que no se hayan cerrado desde que se realizó la última verificación. No aplicar a tablas InnoDB.
MEDIA Verifique si los enlaces eliminados son válidos escaneando las filas. Se aplica solo a las tablas MyISAM.
EXTENDIDO Realiza una búsqueda de clave completa para todas las claves de cada fila de la tabla MyISAM. Se tarda mucho tiempo en ejecutarse.

Para verificar más de una tabla en busca de corrupción, use el siguiente comando:

COMPROBAR TABLA tbl_name1, tbl_name2, tbl_name 3 opción;

Nota: El comando CHECK TABLE solo se puede usar cuando se está ejecutando el proceso MySQL. Pero, si el proceso/servidor no se está ejecutando, puede usar el siguiente comando 'myisamchk' para verificar si las tablas de MyISAM están dañadas:

myisamchk [opciones] tbl_name …

Este comando comprueba una sola tabla.

Ejecute el siguiente comando para comprobar si todas las tablas de la base de datos MySQL están dañadas:

myisamchk /ruta/a/datadir/*/*.MYI

La utilidad myisamchk no funciona para tablas InnoDB.

Paso 2:reparar la tabla corrupta

Nota: El comando myisamchk solo se aplica a las tablas MyISAM y no funciona para las tablas InnoDB. Para reparar y recuperar una tabla Innodb, vaya al paso 3.

La utilidad myisamchk también puede ayudar a reparar una tabla MyISAM corrupta (dañada). Para usar la utilidad para reparar la tabla dañada, haga lo siguiente:

  1. Detenga el servicio MySQL escribiendo:
detener el servicio mysqld

cd /var/lib/mysql

  1. Cambie al directorio donde se encuentra la base de datos.
cd /var/lib/mysql/table_name

myisamchk

  1. Para reparar una tabla dañada, ejecute el siguiente comando reemplazando TABLE con el nombre de la tabla que desea reparar:
myisamchk –recover
  1. Reinicie su servicio MySQL.
inicio del servicio mysqld

Paso 3:Forzar la recuperación de InnoDB

Para corregir la corrupción en las tablas de InnoDB, utilice ‘innodb_force_recovery’ opción. Esta opción obliga al motor de base de datos InnoDB a iniciarse sin ninguna operación en segundo plano, lo que le permite volcar sus tablas.

  1. Abra su archivo de configuración de MySQL (my.cnf) y agregue lo siguiente a la sección [mysqld]:
[mysqld]

innodb_force_recovery=1

reinicio del servicio mysql

Puede iniciar innodb_force_recovery con un valor de 1 y aumentar el valor, según sea necesario. Una vez que haya iniciado la recuperación de innodb, reinicie su servidor MySQL y luego descargue sus tablas. Sin embargo, en algunas situaciones, es posible que deba establecer el valor entre 4 y 6, lo que puede dañar los datos.

¡Precaución! Si puede volcar las tablas con un valor innodb_force_recovery=3 o menos, puede realizar el proceso de recuperación de forma segura. Sin embargo, establecer innodb_force_recovery en un valor superior a 4 implica un riesgo de pérdida de datos.

  1. Si puede iniciar su base de datos, ejecute el siguiente comando mysqldump para exportar todas las bases de datos a un archivo SQL (es decir, un archivo de copia de seguridad que contiene todas las instrucciones para restaurar la base de datos):
mysqldump –todas-las-bases-de-datos –add-drop-database –add-drop-table> mydump.sql
  1. Inicie el servicio MySQL y luego intente descartar la base de datos que contiene las tablas afectadas mediante el comando DROP DATABASE. Si no puede eliminar una base de datos, intente eliminarla manualmente realizando los pasos a continuación después de detener el servidor MySQL.
cd /var/lib/mysql

rm -rf

  1. Después de ejecutar el comando anterior, comente la siguiente línea en [mysqld] para deshabilitar la recuperación de InnoDB:
#innodb_force_recovery=…
  1. Guarde todos los cambios que haya realizado en el archivo my.cnf y luego inicie su servidor.
inicio del servicio mysqld
  1. Ty restaurar la base de datos y la tabla desde el volcado de MySQL (archivo de copia de seguridad) que ha creado en el Paso 2:
mysql -u usuario -p

Realizar estos pasos restaurará la base de datos MySQL y sus tablas. Si aún faltan los datos, deberá utilizar un software profesional de reparación de bases de datos MySQL, como Stellar Repair for MySQL. para restaurar su base de datos y recuperar sus datos. El software puede reparar tablas InnoDB y MyISAM manteniendo los datos intactos. Admite la reparación de tablas MySQL en sistemas Windows y Linux.

Conclusión

Las tablas de la base de datos MySQL pueden corromperse debido a un apagado repentino del sistema, fallas del servidor, fallas de hardware, errores en el código MySQL, etc. La corrupción en la tabla MySQL da como resultado los errores enumerados en este artículo. Puede intentar reparar las tablas MyISAM dañadas utilizando la utilidad 'myisamchk' o forzar la recuperación de InnoDB. Sin embargo, puede llevar un tiempo considerable reparar las tablas MyISAM y realizar la recuperación de InnoDB manualmente. Además, el proceso de recuperación manual puede provocar la pérdida de datos. Una mejor alternativa es usar Stellar Repair para el software MySQL. El software permite reparar las tablas de la base de datos MyISAM e InnoDB sin realizar ningún cambio en los datos originales.