Pular para o conteúdo principal

Recuperação MySQL Innodb após Problemas Elétricos e/ou Corrompimento de alguma base de Dados


Eu me deparei com um problema em meu servidor Zabbix, onde quando se tentava levantar o serviço do MySQL ele dava uma falha. Então deu uma olhada no arquivo de LOG e eis o que tinha:

------------------------------------------------------------------------------------------------------------
InnoDB: stored checksum 3103110567, prior-to-4.0.14-form stored checksum 438929502
InnoDB: Page lsn 66 2543532480, low 4 bytes of lsn at page end 2544351964
InnoDB: Page number (if stored to page already) 131080,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page may be an index page where index id is 0 381
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 131080.
------------------------------------------------------------------------------------------------------------

Utilizar o programa mysqlcheck não era uma opção, pois ele precisa que o MySQL esteja iniciado e operacional.
Então utilizamos o parâmetro innodb_force_recovery, que possui os níveis de 0 a 6, sendo que 0 é o padrão e significa que não haverá uma recuperação forçada, e 6 pode ser considerado o mais agressivo, pois com este valor nenhuma recuperação é executada.
Coloquei esse parâmetro dentro do my.cnf no meu cado é um servidor linux no caminho /etc/mysql/my.cnf no grupo [mysqld]  innodb_force_recovery = "0 a 6".
A intenção deste parâmetro é que caso não haja um backup recente disponível e o MySQL possa ser iniciado e ter seus dados exportados. É uma opção para ser utilizada em último caso, contando com a sorte para que os dados possam ser exportados. No meu caso eu tinha backups, mas existem muitos casos que não possuem.
Fui então incrementando o valor do parâmetro progressivamente e tentando iniciar o MySQL, mas só consegui com o 6.

Depois de tudo isso passado, eu segui os seguintes passos:
1.   Parei o serviço do MySQL que tinha sido executado com o modo recovery.
2.   Comentei a linha do recovery = dentro do my.cnf
3.   Removi todo o conteúdo da pasta mysql que no meu caso o caminho era /var/lib/mysql.
4.   Reinstalei a base e os arquivos de controle com os seguintes comandos: mysql_installdb --user=mysql  (Isso vai recriar a base mysql).
5.   Levantei o serviço do mysql: servise mysql start. (isso vai criar o ibdata, iblogfile* (tem que aguardar um pouco).
6.   Pronto, agora criei as bases de dados novamente e restaurei os backups.

Referências: 
innodb_force_recovery: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

mysqlcheck: http://dev.mysql.com/doc/refman/5.5/en/mysqlcheck.html


Comentários

+ Vistas

  Melhorando o atendimento ao cliente com mensagens de alto impacto Mensagens entre empresas e clientes não são uma novidade. Essa é uma estratégia consagrada com resultados comprovados, e uma pesquisa recente da Forrester descobriu que, antes de 2020, as mensagens ocupavam a quinta opção mais popular de atendimento e passaram a ser a segunda em 2021. 1 Agora, só porque uma empresa usa mensagens, não significa que ela esteja as usando da melhor forma. O que diferencia as empresas é sua capacidade de criar interações com mensagens de alto impacto. Aproveitando a personalização, esse tipo de mensagem cria conexões individuais com cada cliente que interage com a marca. O que é uma mensagem de alto impacto? As mensagens de alto impacto chamam a atenção dos clientes e agregam valor imediato. Mensagens com um CTA, uma lista e um chatbot, assim como outros recursos interativos, envolvem os clientes e fornecem a eles exatamente o que querem, quando querem. Elas não prolongam a conversa sem nec

A Importância do Controle de Estoques para o Sucesso do Seu Negócio

O controle de estoques é um processo crucial para qualquer empresa que lida com produtos físicos, independentemente do seu porte ou segmento de atuação. Ele garante a visibilidade completa sobre a movimentação de itens, desde a entrada no armazém até a venda para o cliente final. Mas qual a real importância desse processo? 1. Otimização do Capital de Giro: Estoque excessivo: Capital parado, sem gerar retorno financeiro, além de custos extras com armazenagem e depreciação dos produtos. Estoque insuficiente: Perda de vendas, insatisfação dos clientes e possíveis danos à reputação da marca. O controle de estoques eficaz encontra o equilíbrio ideal, evitando esses problemas e liberando recursos para investimentos mais estratégicos. 2. Redução de Custos: Combate à obsolescência: Identificação e descarte de produtos com baixa rotatividade, evitando prejuízos. Negociação com Fornecedores: Poder de barganha para obter melhores preços e prazos de pagamento, otimizando o custo das compr

Derrubar usuários Linux (Debian Servidores) Ociosos

Derrubar um Usuário no servidor Linux pela linha de comando: Logue como root ou use "sudo" se tiver configurado no arquivo sudoers do linux. Use o "W" para ver os usuários online no servidor. # w Para ver qual processo quer derrubar utilize o seguinte comando: # ps -u <nome_usuario> Encontre o PID no resultado do comando acima e utilize o seguinte comando: # kill -9 <PID> Agora se você é um administrador de ERP na empresa, e quer deixar esse processo automatizado, utilize o scrypt abaixo fornecido por nosso amigo, "Guilherme Moura de Souza": Baixe aqui :  mataUsuarioOcioso.sh Até a Próxima.