Introducción
A veces, las tablas MySQL pueden corromperse, lo que significa que se ha producido un error y no se pueden leer los datos que contienen. Intentar leer una tabla dañada suele provocar un fallo del servidor.
Razones comunes para la corrupción de tablas
- El servicio MySQL se detiene en medio de la escritura de datos
- Modificación de la tabla por aplicación externa mientras está siendo modificada por el servidor
- Apagado inesperado del coche
- Fallo de hardware de la computadora
- Error de software en el código MySQL
Si sospecha que una de sus tablas está dañada, debería hacer una copia de seguridad de su directorio de datos antes de comenzar a repararla o solucionar problemas. Esto le ayudará a minimizar el riesgo de pérdida de datos.
Pasos para reparar una tabla dañada en MySQL
Primero, detenga el servicio MySQL:
sudo systemctl stop mysqlNota: En algunos sistemas, como Rocky Linux, el servicio MySQL puede llamarse MySQL Ser conocido.
Luego, copie todos sus datos a un nuevo directorio de respaldo. En sistemas Ubuntu, el directorio de datos predeterminado es /var/lib/mysql/ es:
cp -r /var/lib/mysql /var/lib/mysql_bkpDespués de realizar la copia de seguridad, puede comprobar si la tabla está dañada. Si el motor de almacenamiento no realiza una copia de seguridad de la tabla, MiISAM Si usa MySQL, puede reiniciarlo ejecutando el comando TABLA DE COMPROBACIONES Verifique desde el indicador de MySQL:
sudo systemctl start mysqlCHECK TABLE table_name;Si la tabla está dañada, se mostrará un mensaje de confirmación. Si una tabla MyISAM está dañada, normalmente se puede corregir con el comando MESA DE REPARACIÓN Lo arreglé:
REPAIR TABLE table_name;Si la reparación es exitosa, verá un mensaje similar a este en la salida:
Output
+--------------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+--------+----------+----------+
| database_name.table_name | repair | status | OK |
+--------------------------+--------+----------+----------+Si la tabla aún está dañada, la documentación de MySQL proporciona métodos alternativos para reparar tablas dañadas.
Reparación de tablas dañadas con el motor de almacenamiento InnoDB
Si la tabla está dañada desde el motor de almacenamiento InnoDB El proceso de reparación variará según la versión de MySQL que utilice. InnoDB se ha utilizado como motor de almacenamiento predeterminado para MySQL desde la versión 8.0 y cuenta con funciones automáticas de comprobación y reparación de datos corruptos. InnoDB detecta páginas incorrectas mediante las sumas de comprobación de cada página que lee y detiene automáticamente el servidor MySQL si encuentra una diferencia en las sumas de comprobación.
Es poco frecuente que sea necesario reparar tablas InnoDB, ya que InnoDB cuenta con un mecanismo de recuperación ante fallos que puede resolver la mayoría de los problemas reiniciando el servidor. Sin embargo, si necesita reconstruir una tabla InnoDB, la documentación de MySQL proporciona instrucciones sobre cómo hacerlo. Volcar y recargar recomienda. Este método implica recuperar el acceso a la tabla dañada mediante la herramienta volcado de MySQL Se utiliza para realizar una copia de seguridad lógica de una tabla que conserva la estructura de la tabla y los datos dentro de ella, y luego vuelve a insertar la tabla en la base de datos.
Reiniciar el servicio MySQL
Primero, intente reiniciar el servicio MySQL para ver si esto le da acceso al servidor:
sudo systemctl restart mysqlSi el servidor sigue inactivo o no está disponible, puedes usar la opción recuperación forzada Habilite InnoDB en la configuración. Para ello, cree un archivo. mysqld.cnf Editar. En los sistemas Ubuntu y Debian, este archivo suele estar ubicado en /etc/mysql/ En los sistemas Red Hat y Rocky, este archivo normalmente se encuentra en /etc/mi.cnf.d Esta ubicado.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnfEn la sección [mysqld] Añade la siguiente línea:
. . .
[mysqld]
. . .
innodb_force_recovery=1Después de guardar los cambios y cerrar el archivo, intente iniciar el servicio MySQL de nuevo. Si puede acceder a la tabla dañada, utilice la herramienta. volcado de MySQL Use esto para hacer una copia de seguridad de los datos de la tabla. Puede nombrar este archivo como desee, pero aquí se llamará salida.sql Lo llamamos:
mysqldump database_name table_name > out.sqlLuego, elimine la tabla de la base de datos. Para ello, puede usar el siguiente comando:
mysql -u user -p --execute="DROP TABLE database_name.table_name"Por último, crea la tabla utilizando el archivo vertedero Recupera el que creaste recientemente:
mysql -u user -p < out.sqlTenga en cuenta que el motor de almacenamiento InnoDB suele ser más resistente que el antiguo motor MyISAM. Las tablas que utilizan InnoDB aún pueden corromperse, pero gracias a sus funciones de autorreparación, el riesgo de corrupción y bloqueos es mucho menor.
Resultado
Siguiendo esta guía, aprendió a reparar tablas dañadas en MySQL y a utilizar diferentes métodos para resolver problemas en los motores de almacenamiento MyISAM e InnoDB. Realice siempre una copia de seguridad de sus datos antes de realizar cualquier cambio para evitar el riesgo de pérdida de datos.









