MySQL “perdeu” todos os dados (InnoBD)

2

Hoje eu estava fazendo algum trabalho com o site e recebo o erro que o MySQL não pode renomear arquivo (para fazer alterações no BD). Em seguida tentei reiniciar o MySQL e ele não conseguiu parar o MySQL. Então eu fui para /var/lib/mysql e tudo que eu vejo é: ib_logfile0+1 , ibdata1 , e site folder, com as tabelas que eu estava mudando (não as próprias tabelas, apenas #sql-b61_25a8e.MYI ).

Posso recuperar meus dados do MySQL? Eu não preciso de todas as tabelas, porque eu tenho backup antigo deles. Eu só preciso de uma tabela com todos os usuários (eu estava mudando de tabela com os usuários). E sim, eu fiz o shutdown do MySQL por algum motivo estúpido.

    
por fhntv24 16.02.2014 / 12:50

1 resposta

1

Primeiramente, onde estão seus backups? Se você não tiver, essa deve ser sua primeira tarefa depois de recuperar seus dados.

De qualquer forma, contanto que você tenha uma cópia dos seus arquivos .frm, você pode recuperar os dados. Esses arquivos geralmente estão localizados no mesmo diretório que os dados do seu banco de dados, e. g. / var / lib / mysql, mas talvez sua configuração seja diferente. Se você não tiver uma cópia dos seus arquivos .frm, precisará recriá-los. Os arquivos frm armazenam estatisticamente o layout da tabela, portanto, não deve ser muito difícil recriar, desde que você tenha mantido seus documentos de design ou use um aplicativo fornecido, como o Wordpress. Em seguida, basta criar uma nova instância do aplicativo e copiar os arquivos frm para sua máquina de recuperação.

Para a recuperação, siga estas etapas simples:

  1. Configure um novo servidor MySQL em outra máquina, mas não inicie mysqld ainda.
  2. Copie seus ibdata1 , ib_logfile0 e ib_logfile1 para a pasta /var/lib/mysql da nova máquina.
  3. Certifique-se de que esses arquivos pertençam ao usuário do MySQL, e. g. chown mysql ibdata1 ...
  4. Encontre o tamanho dos arquivos de log em bytes, e. g. ls -l .
  5. Torne-se o usuário do MySQL, e. g. su mysql .
  6. Inicie o mysqld com opções de recuperação, i. e. %código%

Agora você deve ver algumas mensagens do MySQL, como quais opções você definiu. Depois de um tempo, /usr/sbin/mysqld –innodb_log_file_size=<size_inbytes> –innodb_force_recovery=6 deve estar em funcionamento. Assim que isso acontecer, você poderá obter uma cópia correta do banco de dados com mysqld e importar a cópia para a sua máquina de produção.

    
por 16.02.2014 / 14:44