Tenho um sistema que desenvolvi em Java Spring e que armazena dados em um banco de dados MySQL executado localmente no windows 10.
Ontem executei a última atualização do Windows e depois de 2 horas de trabalho meu computador travou... e desde então o Windows não quer iniciar e me dá a opção de reinstalar o Windows, com a possibilidade de manter meus dados pessoais. No entanto, acho que isso apagará o MySQL e todos os dados armazenados.
Eu tenho o Linux rodando na mesma máquina e estou tentando usar o Linux para acessar o banco de dados para fazer backup usando o mysqldump.
Para isso, tentei montar o diretório onde os dados são salvos no windows para o diretório linux usando o seguinte comando:
sudo mount --bind '/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data' /var/lib/mysql
Em seguida, reiniciei o servidor mysql e abri um console SQL. Eu poderia fazer login no SQL Console usando a senha do Windows (é diferente da senha do SQL no Linux) e listar todos os bancos de dados salvos na minha máquina Windows.
Isso quando fica mais complicado. O console SQL pode listar todas as tabelas do banco de dados em que estou interessado, mas por algum motivo não pode consultar o conteúdo das tabelas. Posso listar todas as tabelas, mas não consigo consultá-las. SQL me diz que tal tabela não existe, embora tenha acabado de listá-la.
Tenho uma captura de tela disso, não há erro de digitação, mas o site não me permite postar imagem...
Como posso resolver esse problema? Ou existe uma maneira mais inteligente de criar um despejo a partir do local do Windows, mesmo que o Windows não esteja iniciando?
Obrigado pela ajuda !
Responder1
O motivo de não funcionar é que eu havia renomeado o banco de dados no windows como "database_W", para diferenciá-lo do outro banco de dados no linux que tinha o mesmo nome e que havia recuperado de um backup que fiz 2 semanas atrás.
Eu copiei o arquivo ProgramData do Windows para um disco externo, então copiei o backup do banco de dados para minha pasta de destino e, em seguida, o console SQL e meu IDE puderam ver esse banco de dados original, todas as suas tabelas e todos os dados. Usei meu IDE para criar um arquivo de backup (dump).
Como Rinzwind apontou, é fundamental fazer backup dos dados regularmente, especialmente antes das atualizações do Windows... lição tirada!
Então o que fiz para recuperar os dados foi:
- Use o Linux para acessar os dados do Windows e fazer backup de todos os seus dados
- Para recuperar dados SQL, você está interessado no seguinte local:
'/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data'
. NÃO MUDE NENHUM NOME LÁ! - Use o seguinte comando para montar o arquivo ProgramData do Windows no diretório Linux apropriado:
sudo mount --bind '/media/guillaume/Windows/ProgramData/MySQL/MySQL Server 5.7/Data' /var/lib/mysql
- Reinicie seu serviço sql (usei este comando: service mysql restart)
- Verifique com seu console SQL no terminal Linux se você pode ver os bancos de dados do Windows do Linux e se pode acessar os dados (usando um tipo de instrução select * from table);
- Use seu IDE para conectar-se a este banco de dados (usando as credenciais do Windows) para criar um arquivo de despejo a partir do IDE.