Reparar tablas rotas en MySQL

Muchas veces las tablas se las bases de datos MySQL se rompen, esta es una forma de chequear su estado y repararlas:

  1. Deben reemplazar “base-de-datos_1″ por el nombre real de la BD y “laTabla” por el verdadero nombre de la tabla.
  2. SIEMPRE: hacer un backup de la tabla antes de proceder con la reparación, por las dudas que se cague aún más.

# Conectamos a MySQL desde la consola:

mysql -u root -p

# Nos movemos hacia la BD que tiene la tabla rota

mysql> use base-de-datos_1;

# Verificamos el estado de la tabla:

mysql> check table laTabla;
+------------------------------+-------+----------+------------------------------------------------------------------------------------+
| Table                        | Op    | Msg_type | Msg_text                                                                           |
+------------------------------+-------+----------+------------------------------------------------------------------------------------+
| base-de-datos_1.laTabla | check | error    | Table './base-de-datos_1/laTabla' is marked as crashed and should be repaired |
+------------------------------+-------+----------+------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

# La reparamos

mysql> repair table laTabla;

# Atención: si esto no arregla la tabla rota, lo que se debe hacer es lo siguiente:
# Salimos del shell mysql con “quit;” y volvemos al shell Linux como root, allí tipeamos lo siguiente:

[root@hostname.server.com]# myisamchk -r /var/lib/mysql/base-de-datos_1/laTabla.MYI
- recovering (with sort) MyISAM-table '/var/lib/mysql/base-de-datos_1/laTabla.MYI'
Data records: 43071
- Fixing index 1
- Fixing index 2
- Fixing index 3
- Fixing index 4
[root@hostname.server.com]

# Y si esto también falla, vamos a ir con otra variante al usar “–safe-recover”, esta opción demora más, pero es la recomendada si la anterior falla:

myisamchk -r --safe-recover /var/lib/mysql/base-de-datos_1/laTabla.MYI