Hace poco me he encontrado con un par de tablas corruptas en una BBDD de MySQL y a continuación explico como es la forma más fácil de recuperar esas tablas marcadas como corruptas.
Yo me tope con este fallo al tratar de hacer un dump de la BBDD:
$ mysqldump -u root -p mibasededatos > ./mibasededatos.sql got error 144 Table 'mibasededatos.mytable' is marked as crashed and last (automatic?) repair failed" when using LOCK TABLES
Así que tenemos dos opciones: la ‘lenta‘ y la ‘rápida‘.
La lenta es iniciar sesión en MySQL e intentar reparar la tabla en cuestión de la siguiente manera:
$ mysql -u root -p mibasededatos > repair table mytable;
En mi caso esta opción fue un poco frustrante ya que no devuelve ninguna salida, una forma de ver
el progreso de la recuperación, es iniciar otra sesión visualizar los procesos activos:
$ mysql -u root- p mibasededatos > show processlist;
La rápida y mas verbose es usar el comando: myisamchk. Con esta opción debemos buscar el directorio donde se encuentran los archivos de la BBDD, en mi caso:
/var/lib/mysql/mibasededatos
Primero debemos comprobar que ficheros están corruptos ejecutando:
$ myisamchk -v /var/lib/mysql/mibasededatos/*MYI
Verán que de esta forma el comando nos va informando de cada uno de los ficheros que esta chequeando y de cual exactamente esta corrupto. Una vez tengamos el fichero corrupto, podemos ejecutar:
$ myisamchk -r /var/lib/mysql/mibasededatos/mytable#P#pmax.MYI
Si de esta forma la tabla no se puede recuperar podemos forzarlo, pero tener en cuenta que esta opción podría provocar perdida de datos:
$ myisamchk -fr /var/lib/mysql/mibasededatos/mytable#P#pmax.MYI
0 Comentarios