Las tablas marcadas como crashed deben repararse lo cual, si las tablas son extensas, lleva su tiempo.
Para tablas MyISAM tenemos dos comandos:
msqlcheck: comprueba tablas con en servidor MySQL en funcionamiento.
myisamchk: comprueba tablas con en servidor MySQL parado.
Si el problema es serio usar myisamchk que es mas potente. Parar el servidor MySQL y reparar el problema.
Las bases de datos MySQL se encuentran en el directorio /var/lib/mysql/
Dentro de este directorio hay subdirectorios con el nombre de cada base de datos que contienen los ficheros correspondientes a cada tabla.
Comandos:
- myisamchk --check /var/lib/mysql/mybasededatos/*.MYI
- myisamchk --silent --fast /var/lib/mysql/mybasededatos/*.MYI
- myisamchk –recover -q /var/lib/mysql/mybasededatos/*.MYI
- myisamchk –recover /var/lib/mysql/mybasededatos/*.MYI
- myisamchk –safe-recover /var/lib/mysql/mybasededatos/*.MYI
- myisamchk –o /var/lib/mysql/mybasededatos/*.MYI
Protocolo:
0) Parar el servidor MySQL:
# service mysql stop
1) Chequear integridad de todas las tablas de todas las bases de datos MySQL:
Rápida: solo chequea las que están marcadas como rotas:
# myisamchk --silent --fast /var/lib/mysql/*/*.MYI
Este comando esta bien para detectar de forma rápida si hay tablas marcadas como crased.
2) Reparando las tablas rotas:
Como son procesos que duran mucho tiempo es recomendable probar primero la reparación rápida.
Reparación rápida: solo intenta reparar el arbol del índice:
3) Optimizar las tablas de una base de datos
# myisamchk -o tabla.MYI una tabla
# myisamchk -o -B basededatos todas las tablas de las bases indicadas
2) Reparando las tablas rotas:
Como son procesos que duran mucho tiempo es recomendable probar primero la reparación rápida.
Reparación rápida: solo intenta reparar el arbol del índice:
# myisamchk -r -q tabla.MYI
Reparacion estandard:
# myisamchk -r tabla.MYI
Reparación safe-recover, no esta en el manual?
# myisamchk -r --safe-recover tabla.MYI
3) Optimizar las tablas de una base de datos
# myisamchk -o tabla.MYI una tabla
# myisamchk -o -B basededatos todas las tablas de las bases indicadas
# myisamchk -o /var/lib/mysql/*/*.MYI optimizar todo
También he visto este comando que no he usado:
También he visto este comando que no he usado:
# myisamchk --silent --force --update-state -O key_buffer=64M -O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M *.MYI
Ref.:
8.6. El programa mysqlcheck para mantener y reparar tablas
Ref.:
8.6. El programa mysqlcheck para mantener y reparar tablas
Hola,
ResponderEliminaractualice a MySQL5.5 y perdi todas mis tablas de MySQL5.0, ¿puedo recuperarlas a partir de la carpeta data(son tanlas tipo MyISAM) de MySQL?
he intentado reparar los indices de las tablas con la herramienta myisamchk pero al arrancar MySQL no me muestra las BBDDs(pero la carpeta de la BBDD existe en la carpeta data de MySQL) ¿alguna sugerencia?
Gracias