Transferir manualmente bancos de dados MySQL

4

Eu tenho um disco rígido externo que tem um clone não inicializável de uma máquina antiga (que eu não tenho mais). Uma das coisas que estava presente naquela máquina era uma instalação do MySQL (v 5.5.19) com vários bancos de dados que eu gostaria de salvar.

Eu andei por aí e descobri que há um diretório {root}/usr/local/mysql/data e que contém subdiretórios que parecem corresponder aos bancos de dados que eu gostaria de salvar.

Eu copiei um desses diretórios para minha máquina principal (também executando o MySQL 5.5.19) e obtive as permissões de arquivo e a propriedade configuradas corretamente ( _mysql:wheel , 0660 nos arquivos .frm, etc) .

Quando eu faço login no PHPMyAdmin agora, posso ver o banco de dados listado à esquerda, com o número correto de tabelas entre parênteses. No entanto, quando tento me conectar a esse banco de dados, ele diz que não há tabelas no banco de dados.

Obviamente, eu perdi alguma coisa. O que eu perdi, e há outra maneira de fazer isso que pode ser mais fácil? Eu poderia, talvez, alterar a miríade de arquivos .cnf para apontar para os arquivos MySQL no meu disco rígido externo e então usar mysqldump neles? Quais arquivos eu precisaria alterar?

    
por Dave DeLong 23.12.2011 / 18:48

2 respostas

5

Eu descobri!

Para a posteridade, eis o que fiz:

  1. eu matei o servidor MySQL
  2. copiei /usr/local/mysql/support-files/my-small.cnf para /etc/my.cnf
  3. Eu abri my.cnf e adicionei esta linha na seção [mysqld] :

    # point the datadir to the old stuff on the external hard drive
    datadir = /Volumes/Clone/usr/local/mysql/data
    
  4. salvei e fechei my.conf
  5. Eu reiniciei o servidor MySQL. O painel MySQL nas Preferências do Sistema tinha um aviso sobre como "/ Volumes / Clone / usr / local / mysql / data" não possuía a propriedade adequada, mas eu achei que não havia problema em ignorar. Também foi reconfortante ver que o MySQL estava procurando no lugar certo pelos dados.
  6. Eu abri o PHPMyAdmin e fiz o login.
  7. Eu exportei os bancos de dados com os quais eu me importava como arquivos .sql.gz
  8. Eu matei novamente o servidor MySQL e excluí o arquivo /etc/my.cnf
  9. Reiniciei o servidor MySQL e entrei no PHPMyAdmin
  10. Eu importei meus bancos de dados e tudo está ótimo!
por 23.12.2011 / 23:28
2

A primeira coisa que você deve fazer é isto:

chown -R mysql:mysql /usr/local/mysql/data

Você deve descobrir o tamanho dos arquivos InnoDB

  • ibdata1
  • ib_logfile0
  • ib_logfile1

Se ibdata1 for < 20M, e ib_logfile0 = 5M, então o mysql estava rodando sem um my.cnf no lugar. Você deve ser capaz de iniciar o mysql. Se eles são tamanhos diferentes, você precisa criar my.cnf com o seguinte

[mysqld]
innodb_log_file_size=???? (file of ib_logfile0 in M)

Espero que seja um bom começo

    
por 23.12.2011 / 19:20

Tags