como: resgatar dados do MySQL (apenas arquivos no disco rígido à esquerda)

1

Depois de finalmente conseguir atualizar meu servidor virtual debian do etch para o lenny. (Leia aqui a matéria completa: debian: atualização do etch para o lenny falha )

Eu agora perdi os dados (incluindo todas as tabelas) do meu banco de dados MySQL. Os arquivos ainda estão presentes no disco rígido e o phpMyAdmin (ainda referenciado como PMA) ainda me mostra todos os nomes de bancos de dados, mas sem tabelas. Os bancos de dados 'mysql' e '' information_schema 'ainda possuem suas tabelas. Mas acessando, e. 'mysql.user' me dá o seguinte erro:

#1017 - Can't find file: './mysql/user.frm' (errno: 13) 

Claro (como qualquer 1337 PEBKAC ) eu não tenho um arquivo de despejo mySQL. ( usando a palavra F várias vezes )

Alguém sabe de uma ferramenta que pode restaurar os dados perdidos da estrutura do arquivo?

Agradecemos antecipadamente por qualquer ajuda concedida a esse problema da camada 8 a.k.a. me

    
por yas4891 12.08.2010 / 14:18

4 respostas

1

SE você tiver os arquivos, você poderá visualizar os dados (exceto tabelas innodb). Este erro é comumente dado quando você tem um problema de permissão - tente alterar os arquivos / var / lib / mysql para o mysql: mysql e veja se ele o corrige.
chown -R mysql:mysql /var/lib/mysql

    
por 12.08.2010 / 14:22
1

Primeiras coisas primeiro: não entre em pânico. Muito provavelmente tudo não está perdido, você só precisa descobrir o que aconteceu.

  • O caminho do diretório de dados do MySQL mudou durante a atualização? (Eu não penso assim - se a minha memória me serve, tanto o Etch quanto o Lenny servem coisas do / var / lib / mysql por padrão. Mas se você alterou o caminho manualmente, então algo pode ter acontecido)

  • Se você cd para o seu / var / lib / mysql, você pode encontrar o diretório mysql e o arquivo user.frm abaixo dele? Se você não pode, find / -iname 'user.frm' retorna alguma coisa?

  • Vale a pena notar em / var / log , especialmente em / var / log / mysql ?

Se tudo o mais falhar, instale outra instalação Debian em algum outro computador (ou em uma máquina virtual), instale um Debian Etch lá, copie o diretório de dados do MySQL e veja se isso funciona. Em seguida, execute um mysqldump adequado e restaure-o para o seu novo Lenny.

EDIT: Ok, esta foi apenas uma questão de permissão. Vou deixar minha resposta aqui mesmo assim, caso ajude alguém.

    
por 12.08.2010 / 14:31
0

Bem, algumas coisas:

Primeiro, faça backup dos arquivos que você possui atualmente. Algumas das operações podem fazer modificações nelas, então você não quer estar pior do que está agora.

Assumirei que seu diretório de dados atual possui um arquivo mysql/user.frm . Se for esse o caso, o problema é que a nova versão do MySQL está procurando no lugar errado por seus dados. Confira a documentação sobre my.cnf , especificamente a parte sobre DATADIR . Você pode alterar o datadir padrão para apontar para o seu antigo conjunto de arquivos. Depois de fazer isso, você vai querer executar o comando mysql_upgrade para verificar suas tabelas e atualizar qualquer estrutura da tabela. Veja a documentação .

Se não houver nenhum arquivo mysql/user.frm em seu diretório de dados, então algo deu errado. Você precisará completar manualmente a instalação novamente (não reinstalar, apenas as etapas de pós-instalação). Para fazer isso, execute o programa mysql_install_db . Isso deve restaurar as tabelas do usuário. Observe que você perderá todas as informações de autenticação (já que ele já passou, pois o arquivo user.frm não existe).

Vou deixar por enquanto, considerando que até você escolher uma dessas rotas, eu não posso realmente ajudar mais. Deixe-me saber qual você escolher e tentarei continuar ajudando da melhor maneira possível.

    
por 12.08.2010 / 14:47
0

isto é arquivos de índice eles podem ser gerados reparo do mysql

Faça o backup dos arquivos mysql e, no phpmyadmin, digite a consulta:

REPAIR TABLE tbl_name [, tbl_name] USE_FRM;

O Mysql irá consertá-lo.

    
por 12.08.2010 / 14:58