Resumo: Este artigo lista alguns dos erros comuns que você pode encontrar quando uma tabela MySQL fica corrompida. Ele também descreve as possíveis razões por trás da corrupção da tabela do banco de dados MySQL. O artigo também explica o que você pode fazer para corrigir tabelas corrompidas e como um software de reparo de banco de dados MySQL pode ser útil para recuperar dados dentro da tabela e todos os outros objetos de banco de dados.
Como usuário do banco de dados MySQL, você pode encontrar algum destes erros:
- "A tabela está marcada como travada e deve ser reparada"
- "A tabela falhou e o último reparo falhou"
- “A tabela tbl_name não existe”
- “Arquivo de chave incorreto para a tabela:‘…’. Tente repará-lo”, etc.
Estes são sinais de alerta de que sua tabela MySQL está corrompida.
O que causa corrupção na tabela do banco de dados MySQL?
A seguir estão os possíveis motivos que levam à corrupção da tabela do banco de dados MySQL:
- Problemas na plataforma subjacente usada pelo MySQL, incluindo subsistema de disco, drivers, controladores etc.
- Desligamento abrupto do sistema ou falha do servidor
- O processo MySQL é morto no meio da gravação no banco de dados
- Bug de software ou falha de hardware
Encontrar qualquer um desses erros de corrupção do MySQL pode tornar os dados dentro das tabelas inacessíveis. Vamos discutir as soluções para corrigir as tabelas danificadas.
Como corrigir erros de corrupção do banco de dados MySQL?
Se você tiver um backup atualizado do seu banco de dados, restaure o banco de dados do backup para recuperar os dados da tabela inacessíveis. Se o backup não estiver disponível, execute as etapas na sequência abaixo para corrigir tabelas MySQL corrompidas e recuperar dados:
Observação: Faça um backup de seu banco de dados e tabelas MySQL para evitar mais danos durante o processo de reparo e recuperação.
Etapa 1:verifique se há erros na tabela
Primeiro, você deve verificar a tabela do banco de dados quanto a erros de corrupção. Você pode usar o VERIFICAR TABELA comando para diagnosticar tabelas InnoDB e MyISAM corrompidas:
VERIFICAR TABELA tbl_name opção; |
Aqui, substitua ‘tbl_name’ pelo nome da tabela de banco de dados corrompida. E substitua 'opção' por qualquer uma destas opções:RÁPIDO, RÁPIDO, MÉDIO, ESTENDIDO e ALTERADO.
Opção | Descrição |
RÁPIDO | Repara mais rapidamente as tabelas InnoDB e MyISAM. Ignora a verificação das linhas para procurar links incorretos |
RÁPIDO | Verifique apenas as tabelas MyISAM que não foram fechadas corretamente. Não se aplique a tabelas InnoDB. |
ALTERADO | Verifique apenas as tabelas MyISAM que não foram fechadas desde a última verificação. Não se aplique a tabelas InnoDB. |
MÉDIO | Verifique se os links excluídos são válidos verificando as linhas. Aplica-se apenas a tabelas MyISAM. |
ESTENDIDO | Executa uma pesquisa de chave completa para todas as chaves de cada linha da tabela MyISAM. Demora muito tempo para executar. |
Para verificar se há corrupção em mais de uma tabela, use o seguinte comando:
VERIFICAR TABELA tbl_name1, tbl_name2, tbl_name 3 opção; |
Observação: O comando CHECK TABLE só pode ser usado quando o processo MySQL está em execução. Mas, se o processo/servidor não estiver em execução, você pode usar o seguinte comando ‘myisamchk’ para verificar se há corrupção nas tabelas MyISAM:
myisamchk [opções] tbl_name …
Este comando verifica uma única tabela.
Execute o seguinte comando para verificar todas as tabelas no banco de dados MySQL quanto à corrupção:
myisamchk /path/to/datadir/*/*.MYI
O utilitário myisamchk não funciona para tabelas InnoDB.
Etapa 2:Repare a Tabela Corrompida
Observação: O comando myisamchk só se aplica a tabelas MyISAM e não funciona para tabelas InnoDB. Para reparar e recuperar uma tabela do Innodb, pule para a Etapa 3.
O utilitário myisamchk também pode ajudar a reparar uma tabela MyISAM corrompida (danificada). Para usar o utilitário para reparar a mesa danificada, faça o seguinte:
- Pare o serviço MySQL digitando:
serviço mysqld stop cd /var/lib/mysql |
- Mude para o diretório onde o banco de dados está localizado.
cd /var/lib/mysql/table_name myisamchk
|