MySQL no Docker reiniciando automáticamente como resolver

MySQL no Docker reiniciando automáticamente como resolver

Se você está sofrendo com o MySQL dentro de um container Docker então este post é para você. Resolvi escrever por que eu já passei pelo mesmo problema e a saída mais simples eu resolvi detalhar e colocar em um guia de recuperação de bancos de dados MySQL mortos pós-migração.

  • Identificando o problema
    O primeiro passo para resolver este tipo de problema é ver os logs do MySQL dentro do container. Você consegue ficar escutando os logs do Docker através do comando:
docker logs -f container-mysql

O mais comum principalmente quando você migra o MySQL de servidor é dar problema na cópia do mysql.sock que fica dentro da base database do MySQL.

No exemplo abaixo você encontra um problema de mysql.sock não encontrado, isto faz com que o MySQL não inicie corretamente e fique reiniciando.

  • Resolvendo o problema

A forma mais fácil para resolver este problema é você fazer um backup do diretório database ou renomeie para database_backup e crie um novo.

Finalize o container do MySQL e coloque para rodar novamente, verifique se o status dele está iniciado. Se sim faça um dump do banco de dados em um arquivos por exemplo backup.sql e salve dentro do diretório database/data.

Entre dentro do container Docker utilizando o comando:

docker exec -it container-mysql /bin/bash

Depois de entrar no container execute o comando:

mysql -u root -p

adicione a sua senha para logar no MySQL. Depois disto você pode entrar no banco de dados aqui no meu exemplo appDb:

use appDb;
source backup.sql;

Veja que no primeiro comando da linha acima nós selecionamos o banco de dados
e na segunda linha nós carregamos o arquivo do dump do banco de dados backup.sql

Depois dos dados carregados é interessante que você reinicie o container e veja o comportamento dele se ele irá parar de reiniciar ou não.