Restaurando uma Base de Dados MySQL

Ultimamente, durante minhas aulas de Openstack, algo que tem acontecido com uma certa frequência é pessoas estarem com o banco de dados do MySQL corrompido no dia seguinte por terem desligado os servidores de forma incorreta. A ideia por trás desse post é ensinar como recuperar a base de dados caso alguém enfrente o mesmo problema futuramente.

Recuperando o MySQL Server

Provavelmente você deve estar no ponto aonde seu MySQL não inicia mais, e no log aponta erro de Innodb corrompido. Nessa situação, a primeira etapa para recuperar uma base de MySQL é desativar todas as checagens de segurança, pois são elas que te impedem de iniciar o serviço para não piorar mais ainda a base. Para isso iremos abrir o arquivo my.cnf e incluir a linha innodb_force_recovery para um valor acima de 0 (aumente gradualmente até 6 se for preciso). Feito isso, inicie o MySQL novamente e veja se agora o serviço fica no ar.

# vim /etc/mysql/my.cnf
[mysqld]
innodb_force_recovery = 1
# systemctl start mysql

Se o serviço iniciar, lembre-se que ainda não é hora de colocar ele em produção: sua base foi comprometida e é necessário extrair os dados e recomeçar a instalação do MySQL tudo de novo. Execute o dump de cada uma das bases através do comando mysqldump e então pare o serviço do MySQL novamente para apagarmos todos os seus arquivos.

# mysqldump -uroot -psenha base > base.sql
# systemctl stop mysql

Com o MySQL encerrado, abra o diretório /var/lib/mysql e apague todos os dados que se encontram nesse diretório. Lembre-se: após apagar esse diretório, se não fez o backup ainda seus dados serão perdidos!

# cd /var/lib/mysql
# rm -rf *

Agora reinicie a instalação do MySQL através do comando mysql_install_db. Isso irá criar uma instalação limpa do MySQL, assim resolvendo o problema do Innodb corrompido . Apague a linha do innodb_force_recovery do arquivo my.cnf e então reinicie o MySQL.

# mysql_install_db
# vim /etc/mysql/my.cnf
# systemctl restart mysql

Por ultimo, inicie o processo do secure install para criar uma senha de administrador e então sua base de MySQL estará recuperada e pronta para que os dados sejam reimportados para ela.

# mysql_secure_installation

Com isso concluímos esse post de recuperação do MySQL. Abaixo segue os links que utilizei para consulta para criar esse artigo, e até uma próxima!

  • https://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *