A partir do MySQL Versão 3.23.13, você pode conferir tabelas
MyISAM com o comando CHECK TABLE
. See
Secção 4.5.4, “Sintaxe de CHECK TABLE
”. Você pode reparar tabelas com o
comando REPAIR TABLE
. See
Secção 4.5.5, “Sintaxe do REPAIR TABLE
”.
É uma boa idéia verificar as tabelas regularmente em vez de
esperar que ocorram problemas. Para propósitos de manutenção
você pode utilizar o myisamchk -s
para
verificar as tabelas. A opção -s
(abreviação de --silent
) faz com que o
myisamchk
execute em modo silencioso,
exibindo mensagens somente quando ocorrem erros.
É também uma boa idéia verificar as tabelas quando o servidor
inicia. Por exemplo, sempre que a máquina reinicia no meio de
uma atualização, você normalmente precisará conferir todas
as tabelas que podem ter sido afetadas. (Isto é uma``tabela com
falhas esperadas''.) Você pode adicionar um teste ao
mysqld_safe
que executa
myisamchk
para conferir todas tabelas que
foram modificadas durante as últimas 24 horas se existir um
arquivo .pid
(process ID) antigo depois do
último reboot. (O arquivo .pid
é criado
pelo mysqld
quando ele inicia e removido
quando ele termina normalmente. A presença de um arquivo
.pid
durante a inicialização do sistema
indica que o mysqld
terminou de forma
anormal.)
Um teste ainda melhor seria verificar qualquer tabela cuja a
data da última modificação é mais recente que a do arquivo
.pid
.
Você também deve verificar suas tabelas regularmente durante a
operação normal do sistema. Na MySQL AB, nós executamos uma
tarefa agendada cron
para conferir todas
nossas tabelas importantes uma vez por semana utilizando uma
linha com esta no arquivo crontab
:
35 0 * * 0 /diretório/do/myisamchk --fast --silent /diretório/de/dados/*/*.MYI
Isto exibe informações sobre tabelas com falhas para que possamos examiná-las e repará-las quando necessário.
Como nós não estamos tendo tabelas com falhas inesperadas (tabelas corrompidas por razões diferentes de problemas de hardware) por vários anos (isto realmente é verdade), uma vez por semana é mais que suficiente para nós.
Nós recomendamos que para iniciar, você execute
myisamchk -s
a cada noite em todas as tabelas
que foram atualizadas durantes as últimas 24 horas, até que
você confie no MySQL como nós confiamos.
Normalmente você não precisará de tanta manutenção em suas
tabelas MySQL. Se você estiver alterando tabelas com registros
de tamanho dinâmico (tabelas com colunas
VARCHAR
, BLOB
ou
TEXT
) ou tem tabelas com vários registros
apagados você pode desejar de tempos em tempos (uma vez ao
mês?) desfragmentar/recuperar espaço das tabelas.
Você pode fazer isto utilizando OPTIMIZE
TABLE
nas tabelas em questão ou se você puder
desligar o servidor mysqld
por um tempo
faça:
isamchk -r --silent --sort-index -O sort_buffer_size=16M */*.ISM myisamchk -r --silent --sort-index -O sort_buffer_size=16M */*.MYI
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.