Windows Server 2008 R2 x64
Servidor MySQL 5.6.14 x64
Alguém mais está tendo um problema em que algumas tabelas são marcadas como travadas em um servidor Microsoft Windows? Temos alguns servidores Windows (não por opção) e meia dúzia de servidores Linux rodando MySQL. Por alguma razão, as tabelas nos servidores Windows são marcadas como "travadas" de vez em quando. Nunca tivemos esses problemas em nossos servidores Linux (Ubuntu).
2014-01-23 10:11:42 1868 [ERROR] MySQL: Table '.\elite_prod\ffcont' is marked as crashed and should be repaired
2014-01-23 10:11:42 1868 [ERROR] MySQL: Table '.\elite_prod\bldr' is marked as crashed and should be repaired
2014-01-23 10:11:43 1868 [ERROR] MySQL: Table '.\elite_prod\frtfwd' is marked as crashed and should be repaired
2014-01-23 10:11:44 1868 [ERROR] MySQL: Table '.\elite_prod\histry' is marked as crashed and should be repaired
Parece que temos que lidar com esse problema a cada duas semanas. Muito frustrante.
Pela mensagem de erro, posso dizer rapidamente o seguinte:
ffcount
,bldr
,frtfwd
, ehistry
são todas tabelas MyISAMPorque você está usando o MyISAM Storage Engine , você tem duas desvantagens principais :
HANDICAP #1
As alterações no MyISAM são armazenadas em cache de maneira diferente (independentemente do sistema operacional)
.MYI
pelo MyISAM Storage Engine.MYD
pelo sistema operacional (OUCH !!!!)HANDICAP #2
O Microsoft Windows é péssimo em armazenar alterações de disco em cache. Mesmo rodando
FLUSH TABLES;
no MySQL em um ambiente Windows não é uma panaceia. IMHO, qualquer pessoa que use PostgreSQL ou Oracle deve poder expressar essa mesma reclamação sobre o Windows. Vou deixar para os gurus do SQL Server responder como eles encontram o cache do Windows em termos de SQL Server.ANÁLISE
MyISAM mantém uma contagem de identificadores de arquivos abertos nas tabelas.
Se o processo mysqld ou o Windows Server travar, todo MyISAM que tinha manipuladores de arquivos abertos manterá a contagem de manipuladores de arquivos abertos internamente.
Quando você acessa uma tabela MyISAM pela primeira vez desde que o mysqld foi iniciado, ela deve ter um identificador de arquivo zero. Caso contrário, você receberá essa mensagem de erro
marked as crashed and should be repaired
. Isso explica as tabelas que aparecem periodicamente como travadas.Veja minha postagem A tabela MyISAM continua travando. Quais são minhas opções?
SUGESTÕES
Você pode mudar essas tabelas para o InnoDB e deixar o InnoDB Buffer armazenar tudo em cache, ou pelo menos um cache melhor. Eu ainda me preocuparia com o Windows a esse respeito porque a opção innodb_flush_method está desabilitada na versão Windows do MySQL. Eu digo desativado porque a documentação do MySQL diz:
Se você quiser deixar as tabelas como MyISAM, volte para o Ubuntu porque é um pouco mais diligente quando se trata de liberar alterações de disco, especialmente quando tem RAM suficiente. Mesmo um terabyte de RAM não fará nada pelas tabelas MyISAM no Windows.
por que você não os conserta
E depois, se o erro continuar, solucione o problema!