Table './um_dos_bds/nome_da_tabela' is marked as crashed and should be repaired
O que isso significa?
Significa que a tabela foi corrompida e requer manutenção. Simples assim.
Como realizar essa manutenção?
Neste site encontrei algumas opções e optei pelo comando mysqlcheck.
Essa manutenção é algo bem tranquilo de se fazer com o mysqlcheck:
mysqlcheck -uuser -ppassword --auto-repair meu_bancodedados;
Normalmente, esse comando só faz uma verificação das tabelas do banco de dados e informa a situação delas. Mas com o parâmetro --auto-repair ele já faz o que pode para corrigir.
Por questão de facilidade, fiz um shell script, baseado
neste daqui, para consertar todos os bancos de dados do mysql local:
### login e senha (de preferencia root para ter privilegios em todos os bancos de dados) ### MYUSER="root" MYPASS="password" ### faz um laco passando por todos os bancos de dados do mysql local ### DBS="$(mysql -u$MYUSER -p$MYPASS -Bse 'SHOW DATABASES')" for db in $DBS do #verifica e conserta todas as tabelas do db $db mysqlcheck -u$MYUSER -p$MYPASS --auto-repair $db; #otimiza tabela por tabela de todos os bancos de dados do mysql local for i in `echo "SHOW TABLES" | mysql -u $MYUSER -p$MYPASS $db | grep -v Tables_in_`; do mysql -u$MYUSER -p$MYPASS -Bse "OPTIMIZE TABLE ${db}.${i}"; done doneJá que estou trabalhando sobre todas as tabelas, já rodo uma otimização sobre cada uma. Isso reduz espaço em disco consumido por elas, além de otimizar seus índices e organização. Similar a uma desfragmentação de disco.
Algo que ajudaria bastante seria colocar no cron uma tarefa para dar um trato nos bancos de dados periodicamente. Mas como, principalmente a otimização, pode ser uma tarefa extremamente pesada para o sistema, é melhor que seja realizada em períodos de meses conforme o nível de atividade do seu banco de dados, assim como numa desfragmentação de disco.
É isso. Espero que seja útil para alguém!
Nenhum comentário:
Postar um comentário