MySQL recuperar tablas corruptas

Seguramente alguna vez te has encontrado con tus tablas de MySQL ( MyISAM ) corruptas y vaya chasco!

Aquí os dejo unos pasos para intentar recuperarlas,

Entre comillas dobles y en cursiva os dejo los comando a ejecutar.

OJO, estas instrucciones solo funcionan con Bases de Datos y Tablas MyISAM

  1. en shell de MySQL: “check table nombre_tabla extended;” Comprobamos la tabla
  2. en shell de MySQL: “repair table nombre_tabla;” Reparamos la tabla con la utilidad de MySQL
  3. Si lo anterior no funciona, en shell del sistema: “myisamchk -r /var/lib/mysql/base-de-datos/laTabla.MYI” Repara un poquito mejor la tabla…o al menos lo intenta
  4. Si lo anterior no funciona, en shell del sistema: “myisamchk -r –safe-recover /var/lib/mysql/base-de-datos/laTabla.MYI” Repara la tabla un poquito mejor que la anterior opción
  5. Si lo anterior no funciona, la tabla está KO, puedes borrarla tranquilamente porque no la vas a recuperar en la vida y si acaso tirarnos de los pelos si no teníamos una copia de seguridad.

Aquí os dejo un ejemplito real ( con nombres ficticios ),

Paso 1
mysql> check table nombre_tabla extended;
+————————————————+——-+———-+————————————————————————————————————-+
| Table                                          | Op    | Msg_type | Msg_text                                                                                                    |
+————————————————+——-+———-+————————————————————————————————————-+
| basededatos.nombre_tabla | check | error

| Table upgrade required. Please do “REPAIR TABLE `nombre_tabla`” or dump/reload to fix it! |
+————————————————+——-+———-+————————————————————————————————————-+
1 row in set (0.00 sec)

Paso 2
mysql> repair table nombre_tabla;
+————————————————+——–+———-+——————————————————————————————————————-+
| Table                                          | Op     | Msg_type | Msg_text                                                                                                          |
+————————————————+——–+———-+——————————————————————————————————————-+
| basededatos.nombre_tabla | repair | Error    | Table ‘./basededatos/nombre_tabla’ is marked as crashed and last (automatic?) repair failed |
| basededatos.nombre_tabla | repair | Error    | Table ‘nombre_tabla’ is marked as crashed and last (automatic?) repair failed                   |
| basededatos.nombre_tabla | repair | status   | Table is already up to date                                                                                       |
+————————————————+——–+———-+——————————————————————————————————————-+
3 rows in set (0.01 sec)

Paso 3
[root@servidor sql]# myisamchk -r /var/lib/mysql/basededatos/nombretabla.MYI
– recovering (with sort) MyISAM-table ‘/var/lib/mysql/basededatos/nombre_tabla.MYI’
Data records: 2410985
– Fixing index 1
– Fixing index 2
– Fixing index 3
– Fixing index 4
– Fixing index 5
– Fixing index 6
– Fixing index 7
– Fixing index 8
[root@7por7 sql]#

Paso 4
En este caso no hizo falta con el Paso 3 la tabla se arregló 🙂

2 respuesta a “MySQL recuperar tablas corruptas”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *