Quando o banco para o administrador entra em crise
Author: Ricardo Soares - Postado em: 31/05/2007
Relacionado as categorias: Diversos | 1 Comment
Resenha:
Se “quando o banco para o país está em crise”, podemos dizer em TI que “quando o banco para o administrador entra em crise”! Descrevo minha última experiência com crash em uma base de dados MySQL. Se você é um administrador de banco de dados reze para não ler este artigo! ….
Dissertação:
A primeira coisa que fiz foi um simples comando para otimizar as tabelas, como o comando optmize tables direto no shell do sgdb, mas ele continuava falando …
error : Table ‘<>’ is marked as crashed and last (automatic?) repair failed
… entrei em desespero! Minha primeira ação foi dar uma googleada, abrir uns 10 sites, todos ao mesmo tempo, dar uma rápida olhada no que era interessante, fechar as besteiras e começas a estudar o que me parecia útil até encontrar um comentário que poderia ser o princípio da salvação de minha lavoura. Fui um thread de um forum que discernia sobre um software, o vbulletin e um processo para resolver craches do banco.
Depois de estudar bem as dicas repassadas no thread, de navegar um pouco mais para encontrar os diversos tipos de erros que podem vir a ocorrer com a base de dados e compreender o funcionamento do mysqlcheck resolvi então ler por completo a página de manual do comando. Finalmente cheguei na seguinte seqüência de comandos …
# desliguei o apache prevenindo novas conexões
httpd stop
# Esperei até que todos os processos fossem finalizados
mysqladmin proc stat -v -u usuario -psenha
# efetuei o flush de todas as informações
mysqladmin flush-tables -u usuario -psenha
# Rodei o comando para otimizar as tabelas
mysqlcheck -o –all-databases –user=usuario –password=senha
# este comando corrige os problemas.
mysqlcheck -F -r -v –all-databases –user=usuario –password=senha
# restartei o apache
httpd start
Vamos as explicações
As explicações obvias do porquê parei o apache e o porquê resolvi descarregar os buffers é básica, pergunte ao amigo/superior ao lado. Mas porquê optei por otimizar as tabelas antes de corrigi-las? Simples, a opção “-F” faz com que o mysqlchek proceda as correções apenas nas tabelas que não tenham sido marcadas como “fechadas apropriadamente”, não estudei o suficiente, entretanto acredito que desta forma o sistema irá marcar as tabelas menos utilizadas do sistema como estáveis e ao passar o segundo comando de correção este só atuará sobre tabelas problemáticas, dando então maior velocidade ao corrigir as tabelas. A segunda execução do mysqlcheck já temos a opção -v, para apresentar informações do que está acontecendo, evitando assim de entrarmos em desespero caso o relógio “aperte”, e por fim a opção “-r”, que ao que compreendi simplesmente resolveria todos os problemas possíveis de ocorrerem com a base de dados, segundo o que compreendi do manual, se a opção “-r” não solucionar o seu problema, larga tudo e dá uma passada na igreja para se benzer pois vai precisar de reza braba.
Ainda não tive tempo, porem vou colocar as três últimos comandos para rodar no cron todo sábado à noite, na espera de que tal processo diminua a possibilidade de ocorrência de um bug maior.
Minha alegria é chegar na empresa e descobrir que um servidor não está funcionando, meu cardiologista já disse que literalmente não conseguiria mais viver sem mim e agradece!
Comments
One Response to “Quando o banco para o administrador entra em crise”
Leave a Reply
perfect thank you