Configurando um Regime de Manutenção das Tabelas
Desde o MariaDB v3.23.13, você pode conferir tabelas MyISAM com o comando CHECK TABLE
. Leia "Sintaxe de CHECK TABLE
". Você pode reparar tabelas com o comando REPAIR TABLE
. Leia "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 é umatabela 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 MariaDB Foundation, 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 MariaDB 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: