Falha no MySql: arquivo de chave incorreto para tabela

2

Temos um banco de dados MySql 5.5 rodando o InnoDB no Linux. Uma tabela (chamada table_search) está executando o MyISAM para poder realizar pesquisas de texto completo. A tabela tem 823 368 linhas.

Ontem tivemos uma falha no servidor, para recuperá-lo novamente, movemos os dados brutos para um novo servidor e agora estamos executando no novo servidor.

Funcionou bem no começo, mas depois de uma hora recebemos algo assim nos logs de erros:

1. Duplicate entry 'X-Y-Z' for key index_titles (where index_titles is an index in table_search)

2. After this there where lots of errors: Incorrect key file for table './database/table_search.MYI'; try to repair it

3. After this there where lots of errors: Table './database/table_search' is marked as crashed and should be repaired

Nós tentamos repará-lo usando:

myisamchk table_search.MYI

Temos um erro assim:

myisamchk: error: Keypointers and record positions doesn't match
MyISAM-table 'table_search.MYI' is corrupted

Então tentamos:

myisamchk -r -o table_search.MYI

Agora tudo estava funcionando novamente até uma hora atrás, quando a mesma coisa aconteceu novamente. Então usamos o myisamchk novamente e está funcionando.

Mas não parece tão estável como aconteceu novamente. O que podemos fazer para garantir que isso não aconteça novamente? Por que isso está corrompido? Qual é a solução?

    
por Martin 09.05.2012 / 15:16

2 respostas

2

A solução foi outra coisa. Nós reiniciamos o servidor usando:

ft_min_word_len=3

(desculpe por não mencionar isso na pergunta)

Por meio deste documento no MySql , aprendemos que:

If you use myisamchk to perform an operation that modifies table indexes (such as repair or analyze), the FULLTEXT indexes are rebuilt using the default full-text parameter values for minimum and maximum word length and the stopword file unless you specify otherwise. This can result in queries failing.

Esta foi a solução:

shell> myisamchk --recover --ft_min_word_len=3 table_search.MYI

Agora, o servidor está funcionando bem por quase 24 horas.

    
por 10.05.2012 / 14:33
0

Isso soa porque sua tabela está corrompida e está além do que o myisamchk é capaz de recuperar.

Acho que sua melhor tentativa é recuperar a tabela de um backup ou, se apenas o índice de pesquisa for afetado, recriar e preencher novamente essa tabela.

    
por 09.05.2012 / 17:19