Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como corrigir problemas comuns com o banco de dados MySQL?


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:
  1. Pare o serviço MySQL digitando:
serviço mysqld stop

cd /var/lib/mysql
  1. Mude para o diretório onde o banco de dados está localizado.
cd /var/lib/mysql/table_name

myisamchk
  1. Para reparar uma tabela danificada, execute o seguinte comando substituindo TABLE pelo nome da tabela que deseja reparar:
myisamchk –recover
  1. Reinicie seu serviço MySQL.
início do serviço mysqld

Etapa 3:forçar a recuperação do InnoDB


Para corrigir a corrupção nas tabelas do InnoDB, use o 'innodb_force_recovery' opção. Essa opção força o mecanismo de banco de dados InnoDB a inicializar sem nenhuma operação em segundo plano, o que permite despejar suas tabelas.
  1. Abra seu arquivo de configuração do MySQL (my.cnf) e adicione o seguinte à seção [mysqld]:
[mysqld]

innodb_force_recovery=1

reinicialização do mysql do serviço

Você pode iniciar innodb_force_recovery com um valor de 1 e aumentar o valor, conforme necessário. Depois de iniciar a recuperação do innodb, reinicie seu servidor MySQL e, em seguida, despeje suas tabelas. No entanto, em algumas situações, pode ser necessário definir o valor de 4 a 6, o que pode corromper os dados.

Cuidado! Se você conseguir despejar as tabelas com um valor innodb_force_recovery=3 ou menos, poderá realizar o processo de recuperação com segurança. No entanto, definir innodb_force_recovery para um valor maior que 4 envolve risco de perda de dados.
  1. Se você conseguir iniciar seu banco de dados, execute o seguinte comando mysqldump para exportar todos os bancos de dados para um arquivo SQL (ou seja, arquivo de backup que contém todas as instruções para restaurar o banco de dados):
mysqldump –all-databases –add-drop-database –add-drop-table> mydump.sql
  1. Inicie o serviço MySQL e tente eliminar o banco de dados que contém as tabelas afetadas usando o comando DROP DATABASE. Se você não conseguir descartar um banco de dados, tente excluí-lo manualmente executando as etapas abaixo após interromper o servidor MySQL.
cd /var/lib/mysql

rm -rf
  1. Depois de executar o comando acima, comente a linha abaixo no [mysqld] para desabilitar a recuperação do InnoDB:
#innodb_force_recovery=…
  1. Salve todas as alterações feitas no arquivo my.cnf e inicie o servidor.
início do serviço mysqld
  1. Restaure o banco de dados e a tabela do dump MySQL (arquivo de backup) que você criou na Etapa 2:
mysql -u user -p

A execução dessas etapas restaurará o banco de dados MySQL e suas tabelas. Se os dados ainda estiverem faltando, você precisará usar um software profissional de reparo de banco de dados MySQL, como Stellar Repair for MySQL para restaurar seu banco de dados e recuperar seus dados. O software pode reparar as tabelas InnoDB e MyISAM mantendo os dados intactos. Ele suporta o reparo de tabelas MySQL em sistemas Windows e Linux.

Conclusão


As tabelas de banco de dados MySQL podem ficar corrompidas devido ao desligamento repentino do sistema, travamento do servidor, falhas de hardware, bugs no código MySQL, etc. A corrupção na tabela MySQL resulta nos erros listados neste artigo. Você pode tentar reparar tabelas MyISAM corrompidas usando o utilitário 'myisamchk' ou forçar a recuperação do InnoDB. No entanto, pode levar um tempo considerável para reparar as tabelas MyISAM e executar a recuperação do InnoDB manualmente. Além disso, o processo de recuperação manual pode resultar em perda de dados. Uma alternativa melhor é usar o software Stellar Repair for MySQL. O software permite reparar as tabelas de banco de dados MyISAM e InnoDB sem fazer nenhuma alteração nos dados originais.