10 de Abril, 2008

Tablas de MySQL corruptas

Resulta que el otro día al servidor le pasaba algo... hacía bien NAT pero no respondía a ningún servicio.

No sabía qué le pasaba, y tampoco podía hacer gran diagnóstico desde Valencia así que pedí un botonazo remoto a mi hermana.

Todo parecía correcto hasta que me he percatado de un error esta tarde:

Can't create/write to file '/tmp/#sql_2aa1_0.MYD'

Además siempre en el mismo punto, en la misma query. Eliminaba el fichero indicado, y en cuestión de minutos volvíamos al mismo sitio.

Algo estaba pasando y era serio :(.

Buscando sobre ese error, he encontrado un problema que hace referencia a MySQL 5, pero dado que yo uso MySQL 4, no tenía nada que ver... pero me ha hecho pensar por el contexto que quizás el botonazo hubiera fastidiado algo en las tablas de la base de datos.

Es un momento realmente tenso cuando puede que tengas tablas tocadas :S. Pero bueno, a ver qué se puede hacer... y ningún problema: myisamchk al rescate (porque uso MyISAM como backend para MySQL).

# cd /var/mysql/blackshell
# myisamchk *.MYI 
Checking MyISAM file: tblCategoria.MYI
Data records:     486   Deleted blocks:       0
myisamchk: warning: 11 clients are using or haven't closed the table properly
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check record links
MyISAM-table 'tblCategoria.MYI' is usable but should be fixed

---------

Checking MyISAM file: tblComentario.MYI
Data records:    2202   Deleted blocks:       0
myisamchk: warning: 1 client is using or hasn't closed the table properly
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check record links
MyISAM-table 'tblComentario.MYI' is usable but should be fixed

---------

Checking MyISAM file: tblNoticia.MYI
Data records:    1145   Deleted blocks:       0
myisamchk: warning: 12 clients are using or haven't closed the table properly
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check record links
MyISAM-table 'tblNoticia.MYI' is usable but should be fixed

---------

Checking MyISAM file: tblTrackback.MYI
Data records:      50   Deleted blocks:       1
myisamchk: warning: 4 clients are using or haven't closed the table properly
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check record links
MyISAM-table 'tblTrackback.MYI' is usable but should be fixed

Efectivamente, están todas las tablas fastidiadas :S.

En este punto he seguido la receta para recuperar tablas, empleando los parámetros -r y -q, y todo parece haber ido bien... el problema no se ha vuelto a reproducir y myisamchk ahora no detecta ninguna pega :).

Nota mental para el tema botonazos y para aquellos que no cierran MySQL con un shutdown, como recomienda la prudencia :D.

Anotación por Juan J. Martínez, clasificada en: mysql.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: