Existe alguma maneira de obter um banco de dados MySQL de um backup / var?

1

Eu fiz o upgrade de Ubuntu 12.10 para Ubuntu 13.10 . Depois de algum tempo, descobri que não exportava todos os meus bancos de dados MySQL. Alguns deles estão faltando. Eu ainda tenho um backup da minha partição /var/ , mas não posso simplesmente copiar os bancos de dados (diretórios) que estão faltando em /var/lib/mysql/ , ele não funcionará. O daemon do MySQL falhará ao reiniciar.

Eu não posso substituir todo o atual /var/lib/mysql/ com o backup, apenas para exportar as tabelas ausentes e mover o novo diretório de volta e importar as tabelas exportadas. Os bancos de dados e tabelas foram exibidos em phpMyAdmin , mas todo o conteúdo estava vazio.

O mais irritante é que o daemon irá falhar ao reiniciar após mexer rapidamente. O MySQL transformou * em uma garotinha sensível. quando eu mover uma cópia exata do meu diretório mysql (novo, intocado e pós-upgrade) de volta, ele ainda não será reiniciado e eu tenho que apt-get install mysql-server-5.5 --reinstall para ele funcionar.

Então, há alguma maneira de recuperar um banco de dados de arquivos de backup? Eles estão sentados lá tão convenientemente, nomeados exatamente como o banco de dados, com arquivos chamados exatamente como as tabelas.

*) Isso costumava funcionar. Normalmente eu exporto minhas coisas, então da última vez que fiz isso, alguns anos atrás, mas costumava funcionar. Agora o MySQL age como um bebê chorão. Novo nem sempre é melhor.

Pelo menos o MongoDB apenas come os arquivos que você colocar em /var/lib/mongodb , desde que seja adequado bson .

Embora o log de erros seja muito detalhado, realmente não me ajuda.

Cem deles:

  

131120 5:23:48 [ERRO] Não foi possível encontrar ou abrir a tabela some_database / some_table de   o dicionário interno de dados do InnoDB, embora o arquivo .frm para o   tabela existe. Talvez você tenha apagado e recriado dados do InnoDB   arquivos, mas esqueceu-se de excluir os arquivos .frm correspondentes   de tabelas InnoDB, ou você moveu arquivos .frm para outro banco de dados?   ou, a tabela contém índices que esta versão do mecanismo   não suporta.   Consulte o link   como você pode resolver o problema.

E algumas outras mensagens sobre o InnoDB que eu não posso reproduzir porque eu acidentalmente atualizei o log no meu editor enquanto reinstalava o mysql pela n-ésima vez.

O que é esse material do InnoDB? É como o fraco irmão chorão ou irmã do MySQL desenvolvido e versátil. Eles fizeram o padrão no servidor 5.5. Provavelmente com um bom motivo, mas até agora não me fez nenhum sanduíche.

    
por Redsandro 20.11.2013 / 05:59

1 resposta

2

InnoDB é um mecanismo de armazenamento, como MyISAM é.

O método antigo de copiar arquivos ainda funciona com bancos de dados MyISAM, mas o InnoDB tem alguns recursos (como aderência ao ACID e controles de bloqueio mais finos) que vêm com o preço de que não funciona mais.

Este tópico no StackOverflow tem algumas respostas em como restaurar um banco de dados InnoDB dos arquivos .

    
por drc 20.11.2013 / 09:50