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

Métodos gratuitos para reparar una base de datos MySQL corrupta

Cuando una base de datos MySQL se corrompe, es posible que se pregunte por qué la base de datos se corrompió en primer lugar. Esta publicación describirá las posibles razones detrás de la corrupción de la base de datos antes de responder a la pregunta:¿cómo reparar una base de datos MySQL corrupta?

Razones detrás de la corrupción de la base de datos MySQL

Una base de datos MySQL puede corromperse por cualquiera de estos motivos:

  • Cierre repentino del servidor
  • Defecto en el hardware utilizado para almacenar y recuperar datos como subsistema de disco, controladores de disco, controladores, etc.
  • El proceso 'mysqld' se cancela mientras hay una actualización en curso
  • Error de software

Puede ser un desafío identificar la causa de una base de datos dañada. Cualquiera que sea la causa, la preocupación que debe tener es cómo reparar la base de datos MySQL corrupta.

¿Cómo reparar una base de datos MySQL corrupta?

Lo primero que debe mirar es el mensaje de error que recibe. Los siguientes son algunos mensajes de error que puede encontrar cuando la base de datos MySQL se corrompe:

Error 144: La mesa está colapsada y la última reparación falló

Error 141: Clave única duplicada o restricción de escritura o actualización

Error 136: No más espacio en el archivo de índice

Error 134: El registro ya fue eliminado

Error 126: El archivo de índice está bloqueado/formato de archivo incorrecto

Error: No se pudo encontrar el archivo 'wtlicensemanager.dll'

Si desea realizar la reparación de forma gratuita, tiene dos opciones:

  1. Hágalo manualmente.
  2. Hágalo con la ayuda del software durante el período de prueba.

Un software de recuperación de base de datos puede hacer un trabajo mejor y más rápido para reparar la base de datos dañada.

Aquí hay una aplicación de software que puede usar para reparar la base de datos MySQL dañada:

Esta herramienta de reparación de base de datos MySQL repara la base de datos creada con los motores de base de datos InnoDB y MyISAM de MySQL. Puede descargar la versión de demostración de la herramienta de reparación de SQL para obtener una vista previa de la base de datos recuperable antes de guardarla.

Características principales:

  • Puede recuperar la base de datos MySQL en sistemas Windows y Linux.
  • Recupera archivos InnoDB (.ibdata, .ibd y .frm) y archivos MyISAM (myd, .myi y .frm)
  • Restaura objetos de base de datos como tablas, propiedades de tablas, tipos de datos, vistas, disparadores, etc.
  • Permite la recuperación selectiva de los componentes de la base de datos

¿Cómo reparar manualmente una base de datos MySQL corrupta?

Hay dos tipos de motores de almacenamiento en MySQL:InnoDB y MyISAM. La tabla InnoDB contiene archivos FRM, IBDATA e IDB, mientras que la tabla MyISAM contiene archivos FRM, MYD y MYI.

Antes de continuar

Aquí hay algunas cosas que debe considerar antes de intentar la recuperación manual:

  • No reiniciar el servidor

Cuando reinicia el servidor, el servidor puede poner la base de datos dañada en modo sospechoso. Esto desactivará la base de datos. También puede crear errores al conectarse a la base de datos. Debe intentar la recuperación sin reiniciar el servidor.

  • Usar el modo de usuario único

Asegúrese de que es el único usuario conectado a la base de datos. El modo de usuario único le brinda todo el control, eliminando la interferencia de otros usuarios.

  • No actualizar MySQL

Puede pensar en actualizar la base de datos MySQL para reparar los archivos dañados. Pero este no es el caso. La actualización puede provocar la pérdida permanente de datos.

  • Realice una copia de seguridad de la base de datos MySQL dañada

Es importante tener una copia de seguridad del archivo dañado, ya que puede haber errores que pueden causar la pérdida de datos. No hay garantía de que sus pasos manuales no afecten los archivos saludables. Por lo tanto, es seguro tener una copia de seguridad antes de intentar la recuperación manual.

Para hacer una copia de seguridad, use el siguiente comando:

mysqldump nombre_bd> nombre_base_datos.sql

Simplemente ingrese el nombre de su base de datos en lugar de nombre_de_la_base de datos.

Si lo anterior no funciona, intente lo siguiente:

mysqldump –u[nombre de usuario] –p[contraseña] [nombre_de_la_base_de_datos]> [archivo_de_volcado].sql 

Hay otra forma de hacer una copia de seguridad de la base de datos:

detener el servicio mysqld

cp -r /var/lib/mysql /var/lib/mysql_bkp

Ahora que tenemos la copia de seguridad, podemos intentar reparar la base de datos MySQL corrupta.

¿Cómo recuperar la base de datos MySQL manualmente?

Reparación de la base de datos MyISAM

Si está utilizando el motor de almacenamiento de base de datos MyISAM para su tabla de base de datos, puede utilizar los siguientes comandos para reparar la tabla:

Mysqlcheck

Si su servidor MySQL se está ejecutando, ejecute el siguiente comando mysqlcheck para reparar su tabla:

mysqlcheck -r [nombre_de_la_base_de_datos]

Asegúrese de reemplazar 'database_name' con el nombre de su base de datos.

Miisamchk

Si el servidor no se está ejecutando, intente reparar la tabla de la base de datos utilizando el comando myisamchk:

Nota: Antes de ejecutar este comando, asegúrese de que el servidor no tenga mesas abiertas.

nombre_tabla myisamchk

Repare el nombre de la tabla con el nombre de la tabla en su caso. Este comando arregla automáticamente tu tabla.

Para reiniciar el servidor, escriba lo siguiente:

inicio del servicio mysqld

Forzar la recuperación de InnoDB

Deberá realizar la recuperación forzada de InnoDB para extraer datos de una tabla de base de datos de InnoDB dañada.

Paso 1: Primero, debe abrir el archivo my.cnf.

En este archivo, busque la sección [mysqld].

Agregue la siguiente línea a esta sección:

innodb_force_recovery=1

Ahora guarde el archivo de configuración y reinicie el servidor MySQL. Puede establecer el valor de innodb_force_recovery de 1 a 6. Sin embargo, no se recomienda un valor superior a 4, ya que puede dañar los datos.

Paso 2: Volcar los datos de la tabla en un archivo nuevo.

Para hacerlo, use el siguiente comando:

mysqldump –u usuario –p db_name nombre_tabla> single_dbtable_dump.sql

Paso 3: Elimina la tabla corrupta de la base de datos.

mysql –u usuario –p –execute=”DROP TABLE db_name.table_name”

Paso 4: Restaure la tabla desde el archivo de volcado.

mysql –u usuario –p

Paso 5: Una vez reparados los archivos, deshabilite el modo de recuperación forzada con el siguiente comando:

#innodb_force_recovery=…

Ahora puede reiniciar el servicio MySQL en el modo normal.

Esperamos que los métodos anteriores lo ayuden a reparar la base de datos MySQL corrupta.