Si ejecuta mysqld con
--skip-external-locking
(lo que es la
opción por defecto en algunos sistemas, como Linux), no puede
utilizar myisamchk de manera segura para
comprobar una tabla si mysqld está
utilizando esta misma tabla. Si puede asegurarse de que nadie
está accediendo a las tablas a través de
mysqld mientras ejecuta
myisamchk, entonces solo tendrá que hacer
mysqladmin flush-tables antes de comenzar
la comprobación de las tablas. Si no puede garantizar esto,
entonces debe parar mysqld mientras
comprueba las tablas. Si ejecuta myisamchk
mientras mysqld está actualizando las
tablas, puede obtener un aviso de que una tabla está corrupta
aún cuando no sea así.
Si no está utilizando
--skip-external-locking
, puede utilizar
myisamchk para comprobar tablas en
cualquier momento. Mientras hace esto, todos los clientes que
intenten actualizar la tabla esperarán hasta que
myisamchk esté listo para continuar.
Si utiliza myisamchk para reparar u
optimizar tablas, debe siempre asegurarse
de que el servidor mysqld no está
utilizando la tabla (esto es también aplicable cuando el
usted esté utilizando
--skip-external-locking
). Si no apaga
mysqld, al menos debe hacer un
mysqladmin flush-tables antes de ejecutar
myisamchk. Sus tables podrían
corromperse si el servidor y
myisamchk acceden a las tablas
simultáneamente.
Esta sección describe como comprobar y actuar si existe corrupción en bases de datos MySQL. Si sus tablas se corrompen frecuentemente, usted debería intentar encontrar la razón. Consulte Sección A.4.2, “Qué hacer si MySQL sigue fallando (crashing)”.
Para una explicación de como las tablas
MyISAM
pueden corromperse, consulte
Sección 14.1.4, “Problemas en tablas MyISAM
”.
Cuando realice recuperación de fallos, es importante entender
que cada tabla MyISAM
con nombre
tbl_name
en una base de datos
corresponde a tres archivos en el directorio de la base de
datos:
Archivo | Propósito |
|
Archivo de definición (formato) |
|
Archivo de datos |
|
Archivo de índices |
Cada uno de estos tres tipos de archivos tiene un tipo de peligro de corrupción diferente, pero la mayoría de problemas ocurren más frecuentemente en los archivos de datos e índices.
myisamchk trabaja creando una copia de el
archivo de datos .MYD
registro a
registro. Finaliza el estadio de reparación borrando el viejo
archivo .MYD
y renombrando el nuevo
archivo a el nombre original. Si utiliza
--quick
, myisamchk no
crea un archivo.MYD
temporal, sino que
asume que el archivo .MYD
está correcto
y solo genera un nuevo archivo de índices sin tocar el
archivo .MYD
. Esto es seguro porque
myisamchk automáticamente detecta sí el
archivo .MYD
está corrompido, y para la
reparación si lo está. También puede especificar la opción
--quick
dos veces. En este caso,
myisamchk no aborta al encontrar algunos
errores (como erroes de clave duplicada), sino que intenta
resolverlo modificando el archivo .MYD
.
Normalmente, la utilización de dos opciones
--quick
es útil sólo si tiene muy poco
espacio libre para realizar una reparación normal. En este
caso, al menos debería hacer una copia de seguridad antes de
ejecutar myisamchk.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.