jueves, 3 de mayo de 2012

Error Mysql "Checking for corrupt, not cleanly closed and upgrade needing tables"

En otro de los capítulos de la migración del servidor web de la empresa, hemos tenido un gran problema a la hora de migrar la base de datos.

De repente el servidor de mysql dejo de funcionar. Al ver que es lo que ocurría vimos que no se iniciaba el servicio. Fallaba.

El problema parecía que el sistema de mysql se había corrompido con el cambio de servidor, cosa que no entendemos porque ha ocurrido.

Sin más, la solución era aparentemente sencilla: reinstalar el pequte de mysql-server. Pero, y he aquí lo que nos ocupa, ahora al iniciar el servicio nos provocaba el siguiente error:
hostalescomohoteles:~# /etc/init.d/mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..





La razón por la que nos arroja este error la comprobamos en el syslog del sistema:

May  3 10:02:12 hostalescomohoteles mysqld[14950]: 120503 10:02:12 [Note] Retrying repair of: './hosteltouristworld_com/registros_ip' with keycache

Lo que nos indica es que la tabla registros_ip de la base de datos hosteltouristworld_com esta corrupta. Por lo que pasamos a repararla con el siguiente comando de la shell:
myisamchk -r --safe-recover /var/lib/mysql/hosteltouristworld_com/registros_ip.MYI

Esto recupera los registros de la tabla que se hallen corruptos, y devuelve el servidor al estado óptimo de inicio.

También se podría dar el caso de que la tabla corrupta sea una de las tabla del sistema, por lo que la forma de solucionarlo sería mucho más delicada. Para recuperar este tipo de tablas podéis consultar este artículo, que ofrece información detellada sobre los pasos a seguir. Saludos curiosos.

2 comentarios:

flama .net dijo...

como viste el syslog de mysql??

Jesús Muñoz dijo...

Dentro del fichero /var/log/syslog. Este el fichero de de log del sistema y registra todos los sucesos que ocurren en él. En ese fichero vimos la línea mencionada anteriormente.
Puedes ver este archivo con el comando: #tail -f /var/log/syslog

Espero haberte ayudado. Un saludo.

Install Drupal 8 in CentOS

Drupal is an open source, flexible, highly scalable and secure Content Management System (CMS) which allows users to easily build and create...