Haciendo uso de mysqlcheck podemos comprobar el estado de las tablas de una, o varias, bases de datos en un servidor mysql. Su uso es muy sencillo:
mysqlcheck base-de-datos -u usuario -p password
Al hacerlo, mysqlcheck nos genera una salida con las tablas de la base de datos indicada y su estado:
base-de-datos.tabla-1 OK base-de-datos.tabla-2 OK base-de-datos.tabla-3 OK base-de-datos.tabla-4 warning : Table is marked as crashed warning : 2 clients are using or haven't closed the table properly warning : Size of datafile is: 448416 Should be: 447568 error : Wrong record length 168 of 176 at 87156 error : Corrupt
Si la lista es muy larga la selección de sólo aquellas tablas con problemas puede no ser inmediata. Un modo de verlas sólo a estas es ejecutando:
mysqlcheck base-de-datos -u usuario -p password | grep -v OK$
con lo que seleccionamos sólo las lineas que no terminen en OK, que son las que tienen problemas:
base-de-datos.tabla-4 warning : Table is marked as crashed warning : 2 clients are using or haven't closed the table properly warning : Size of datafile is: 448416 Should be: 447568 error : Wrong record length 168 of 176 at 87156 error : Corrupt
Ahí os queda eso 🙂 Ah, un modo de reparar todas las tablas de todas las bases de datos lo podéis encontrar en Shell script to optimize all tables in all databases (MySQL)