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

Métodos gratuitos para reparar banco de dados MySQL corrompido


Quando um banco de dados MySQL fica corrompido, você pode se perguntar por que o banco de dados foi corrompido em primeiro lugar. Esta postagem descreverá as possíveis razões por trás da corrupção do banco de dados antes de responder à pergunta:como reparar um banco de dados MySQL corrompido?

Razões por trás da corrupção do banco de dados MySQL


Um banco de dados MySQL pode ficar corrompido devido a qualquer um destes motivos:
  • Desligamento repentino do servidor
  • Defeito no hardware usado para armazenar e recuperar dados como subsistema de disco, controladores de disco, drivers, etc.
  • O processo ‘mysqld’ é encerrado enquanto uma atualização em andamento está em processo
  • Bug de software

Pode ser um desafio identificar a causa de um banco de dados corrompido. Qualquer que seja a causa, a preocupação que você deve ter é como reparar o banco de dados MySQL corrompido.

Como reparar banco de dados MySQL corrompido?


A primeira coisa que você precisa observar é a mensagem de erro que você recebe. A seguir estão algumas mensagens de erro que você pode encontrar quando o banco de dados MySQL for corrompido:

Erro 144: A mesa falhou e o último reparo falhou

Erro 141: Duplicar chave exclusiva ou restrição na gravação ou atualização

Erro 136: Não há mais espaço no arquivo de índice

Erro 134: O registro já foi excluído

Erro 126: O arquivo de índice está travado/formato de arquivo errado

Erro: Não foi possível encontrar o arquivo 'wtlicensemanager.dll'

Se você quiser fazer o reparo gratuitamente, você tem duas opções:
  1. Faça isso manualmente.
  2. Faça isso com a ajuda do software usando o período de avaliação.

Um software de recuperação de banco de dados pode fazer um trabalho melhor e mais rápido ao reparar o banco de dados corrompido.

Aqui está um aplicativo de software que você pode usar para reparar o banco de dados MySQL corrompido:

Esta ferramenta de reparo de banco de dados MySQL repara o banco de dados criado usando os mecanismos de banco de dados InnoDB e MyISAM do MySQL. Você pode baixar a versão demo da ferramenta de reparo SQL para visualizar o banco de dados recuperável antes de salvá-lo.

Características principais:
  • Pode recuperar banco de dados MySQL em sistemas Windows e Linux.
  • Recupera arquivos InnoDB (.ibdata, .ibd e .frm) e arquivos MyISAM (myd, .myi e .frm)
  • Restaura objetos de banco de dados como tabelas, propriedades de tabela, tipos de dados, visualizações, gatilhos etc.
  • Permite a recuperação seletiva de componentes de banco de dados

Como reparar o banco de dados MySQL corrompido manualmente?


Existem dois tipos de mecanismos de armazenamento no MySQL:InnoDB e MyISAM. A tabela InnoDB contém arquivos FRM, IBDATA e IDB, enquanto a tabela MyISAM contém arquivos FRM, MYD e MYI.

Antes de prosseguir


Aqui estão algumas coisas que você deve considerar antes de tentar a recuperação manual:
  • Não reinicie o servidor

Quando você reinicializa o servidor, o servidor pode colocar o banco de dados corrompido no modo suspeito. Isso irá desligar o banco de dados. Ele também pode criar erros ao se conectar ao banco de dados. Você deve tentar a recuperação sem reinicializar o servidor.
  • Usar o modo de usuário único

Certifique-se de que você é o único usuário conectado ao banco de dados. O modo de usuário único oferece controle total, eliminando a interferência de outros usuários.
  • Não atualize o MySQL

Você pode pensar em atualizar o banco de dados MySQL para reparar os arquivos corrompidos. Mas este não é o caso. A atualização pode causar perda permanente de dados.
  • Fazer backup do banco de dados MySQL corrompido

É importante ter um backup do arquivo corrompido, pois pode haver erros que podem causar a perda de dados. Não há garantia de que suas etapas manuais não afetarão os arquivos íntegros. Portanto, é seguro ter um backup antes de tentar a recuperação manual.

Para fazer backup, use o seguinte comando:

mysqldump db_name> database_name.sql

Basta digitar o nome do banco de dados no lugar de database_name.

Se o acima não funcionar, tente o seguinte:

mysqldump –u[username] –p[password] [database_name]> [dump_file].sql 

Há outra maneira de fazer backup do banco de dados:

parada de serviço mysqld

cp -r /var/lib/mysql /var/lib/mysql_bkp

Agora que temos o backup, podemos tentar reparar o banco de dados MySQL corrompido.

Como recuperar o banco de dados MySQL manualmente?

Reparando o banco de dados MyISAM

Se você estiver usando o mecanismo de armazenamento de banco de dados MyISAM para sua tabela de banco de dados, poderá utilizar os seguintes comandos para reparar a tabela:

Mysqlcheck

Se o seu servidor MySQL estiver em execução, execute o seguinte comando mysqlcheck para reparar sua tabela:

mysqlcheck -r [database_name]

Certifique-se de substituir ‘database_name’ pelo nome do seu banco de dados.

Myisamchk

Se o servidor não estiver em execução, tente reparar a tabela do banco de dados usando o comando myisamchk:

Observação: Antes de executar este comando, certifique-se de que o servidor não tenha nenhuma tabela aberta.

myisamchk table_name

Repare o nome da tabela com o nome da tabela no seu caso. Este comando corrige automaticamente sua tabela.

Para reiniciar o servidor, digite o seguinte:

início do serviço mysqld
Forçar a recuperação do InnoDB

Você precisará executar a recuperação forçada do InnoDB para extrair dados de uma tabela de banco de dados InnoDB corrompida.

Etapa 1: Primeiro, você precisa abrir o arquivo my.cnf.

Neste arquivo, localize a seção [mysqld].

Adicione a seguinte linha a esta seção:

innodb_force_recovery=1

Agora salve o arquivo de configuração e reinicie o servidor MySQL. Você pode definir o valor de innodb_force_recovery de 1 a 6. No entanto, um valor além de 4 não é recomendado, pois pode corromper os dados.

Etapa 2: Despeje os dados da tabela em um novo arquivo.

Para isso, use o seguinte comando:

mysqldump –u usuário –p db_name table_name> single_dbtable_dump.sql

Etapa 3: Solte a tabela corrompida do banco de dados.

mysql –u usuário –p –execute=”DROP TABLE db_name.table_name”

Etapa 4: Restaure a tabela do arquivo de despejo.

mysql –u usuário –p

Etapa 5: Depois que os arquivos forem reparados, desative o modo de recuperação forçada com o seguinte comando:

#innodb_force_recovery=…

Agora você pode reiniciar o serviço MySQL no modo normal.

Esperamos que os métodos acima o ajudem a reparar o banco de dados MySQL corrompido.