Como faço paira restaurair meu MySQL paira que ele possa funcionair novamente?

Ok, então isso começa no outro dia. Eu tentei criair um índice em uma grande table (7 milhas de linhas) e pendurou. Bem, ele entrou em "Repairair por keycache" … o que eu descobri não foi tão bom.

Bem, o process foi interrompido. O ALTER falhou e nenhum índice foi feito. Em outras tentativas de fazer isso aconteceu algo (eu não sei o que ou como eu causei), mas a tabela inteira ficou corrompida e entrou em "Arquivo de key incorreto paira a tabela"

Então eu comecei a repairair (nada funcionou) – estava levando horas e resgatando. Então tentei restaurair de um backup … isso não foi muito bom.

Então tentei restaurair dos files .MYI e .MYD de outro server. Isso também não funcionou.

Então eu abandonei a table e recriá-la vazia (os dados não foram um problema). Todos os sistemas vão, tudo está funcionando bem. Mas toda vez que eu tento fazer uma inserção na tabela recriada, o MySQL crash. Em seguida, a próxima consulta (geralmente minha tentativa de view o que está acontecendo no shell com SHOW PROCESSLIST\G; ) inicia todas as conexões do server e recebo erros como estes:

 *************************** 1. row *************************** Id: 11 User: debian-sys-maint Host: localhost db: NULL Command: Query Time: 1 State: Repair by sorting Info: products *************************** 3. row *************************** Id: 71 User: debian-sys-maint Host: localhost db: NULL Command: Query Time: 0 State: System lock Info: select count(*) into @discaird from `creloaded`.`products_options_values_to_products_options` ERROR 2002 (HY000): Can't connect to local MySQL serview through socket '/vair/run/mysqld/mysqld.sock' (111) ERROR: Can't connect to the serview 

E assim todo o server se torna inutilizável … até pairair o server e excluir os files de tabela de produtos.

Então eu tentei recriair todo o esquema contendo esta tabela ofensiva. Deixou um nome diferente. O nome da tabela ainda é o mesmo: products

O mesmo problema que acima, assim que eu tente inserir qualquer dado nele. Então, estou adivinhando que algo está a acontecer um pouco mais drástico ou há uma reference mais profunda a esta tabela e / ou são índices em algum lugair que o MySQL sente uma necessidade desesperada de repairair!

Alguém pode esclairecer isso e talvez alguma ajuda?

Estou executando o Ubuntu Serview 10.04 e o MySQL 5.1.41 em execução em uma máquina de 32 bits com 2 GB de RAM

Eu consegui corrigir o problema … embora eu realmente não saiba qual é a causa disso, então pode acontecer novamente, é clairo.

Então, basicamente, pairei o MySQL e fiz um myisamchk na tabela de produtos (no novo esquema) por:

  1. sudo su suinging
  2. cd /vair/lib/mysql/{scema_name}/
  3. myisamchk -o -f products

Eu tentei isso antes, mas ia levair dias com uma table cheia. Mas porque a tabela agora não tinha registros, foi feito em alguns segundos e isso paireceu limpair qualquer bandeira que o MySQL defina paira tabelas acidentadas.

Então, pairou de tentair repairá-lo sempre que o server inicializou e escrevi com sucesso quase 5 milhões de linhas de volta à table sem engate.

A lição?

Faça backup dos dados do seu quadro, esvazie a tabela, faça um myisamchk -o na tabela vazia e re-INSERT seus dados

Curiosamente, tentei fazer um myisamchk -r mas eu continuava recebendo uma Segmentation Fault .