Es una buena práctica realizar chequeos de las tablas
regularmente en lugar de esperar a que ocurran los problemas.
Una forma de chequear y reparar tablas MyISAM
es con los comandos CHECK TABLE
y
REPAIR TABLE
. Consulte
Sección 13.5.2.3, “Sintaxis de CHECK TABLE
” y Sección 13.5.2.6, “Sintaxis de REPAIR TABLE
”.
Otro modo de chequear tablas es usar
myisamchk. Para mantenimiento, puede usar
myisamchk -s. La opción
-s
(forma corta de
--silent
) hace que
myisamchk se ejecute en modo silencioso,
mostrando mensajes sólo cuando hay algún error.
Es una buena idea chequear las tablas al arrancar el servidor.
Por ejemplo, cada vez que la máquina se reinicia durante una
actualización, normalmente necesita chequear todas las tablas
que hayan podido ser afectadas. (Éstas son las ``tablas que
creemos que han fallado.'') Para chequear automáticamente
tablas MyISAM
, arranque el servidor con la
opción --myisam-recover
.
Un test todavía mejor sería chequear cualquier tabla cuya
fecha de última modificación es más reciente que la del
fichero .pid
.
Debe chequear las tablas regularmente durante operaciones
normales del sistema. En MySQL AB, utilizamos un trabajo
cron para chequear todas nuestras tablas
importantes una vez a la semana, usando una línea como esta en
un fichero crontab
:
35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI
Esto muestra información acerca de tablas que han fallado de forma que podemos examinarlas y repararlas cuando es necesario.
Como no hemos tenido tablas que hayan fallado inesperadamente (tablas que se corrompen por razones distintas a fallos de hardware) durante un par de años (esto es cierto), una vez a la semana es más que suficiente para nosotros.
Recomendamos que para empezar, ejecute myisamchk -s cada noche en todas la tablas que se hayan actualizado durante las últimas 24 horas, hasta que confíe en MySQL tanto como nosotros.
Normalmente, las tablas MySQL necesitan poco mantenimiento. Si
cambia las tablas MyISAM
con registros de
tamaño dinámico (tablas con columnas
VARCHAR
, BLOB
, o
TEXT
) o tiene tablas con muchos registros
borrados puede que quiera defragmentar/reaprovechar espacio de
las tablas de vez en cuendo (una vez al mes?).
Puede hacerlo con OPTIMIZE TABLE
en las
tablas en cuestión. O, si puede parar el servidor
mysqld por un rato, cambiando la
localización al directorio de datos y usando este comando
mientras el servidor está parado:
shell> myisamchk -r -s --sort-index -O sort_buffer_size=16M */*.MYI
É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.