Como posso mover um banco de dados MySQL para outra unidade?

34

Estou usando o MySQL 5.5 em uma máquina local para analisar uma grande quantidade de dados do governo. Eu criei um banco de dados local que reside na minha unidade padrão (Win7 C: drive). Gostaria de armazenar os dados na minha unidade E:, uma grande unidade externa eSATA.

Que passos devo tomar?


fonte
Você não consegue exportar o dB como um arquivo sql, salve o arquivo fazer e: em seguida, no futuro, se você deseja restaurar o dB, você pode importar este arquivo
@tq - Isso não vai funcionar. Ele quer mudar o diretório de dados do servidor MySQL. Se ele exportar e importar, ainda estará na mesma unidade!
Uma palavra de cautela ao mover os arquivos do banco de dados para a unidade externa, você deverá mantê-lo conectado ao computador, caso contrário, o banco de dados
falhará,

Respostas:

35
  1. Desligamento mysql.
  2. Mova todos os arquivos no diretório de dados atual para o novo local (verifique o local na etapa 3 - datadirparâmetro).
  3. Localize o my.iniarquivo (ele está no diretório de instalação do mysql). Altere o datadirvalor do parâmetro para apontar para o novo local.
  4. Inicie o mysql.

fonte
Isso me deu erros ao tentar iniciar o mysql (problemas de permissões). Decidi a solução que coloco aqui , que espero ajudar a poupar alguém.
precisa saber é o seguinte
1
pergunta @snapfractalpop é para janelas
adam
O @adam windows é mencionado no corpo da pergunta, mas não é marcado como uma pergunta apenas do Windows, nem é mencionado no título. Eu postei o link nos comentários, porque é possível que outros usuários que não sejam Windows também tropeçam nessa questão.
Snapfractalpop #
Eu descobri que tinha que usar /e não \ como separadores de diretório no caminho do diretório datadir. Eu estou usando o WampServer no Windows 10.
Steve
O diretório ProgramData pode estar oculto no seu explorador de arquivos. Eu pensei que não existia até alterar a configuração para mostrar Arquivos Ocultos.
WestAce 21/02
6

Embora você esteja solicitando janelas, aqui estão algumas boas instruções para quem acaba aqui procurando instruções de linux / ubuntu:

Suposições:

  • Você tem dados mysql em uma unidade externa / usb / alternativa /mountpoint/var/lib/mysql, talvez de um computador que tenha morrido ou de uma instalação antiga
  • Você deseja movê-lo para sua nova instalação do Ubuntu localmente /var/lib/mysql
  • Parar MySQL com:
    sudo /etc/init.d/mysql stop.
  • Faça um backup do atual diretório de dados (limpo) MySQL com:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Em seguida, copie o diretório de dados antigo da unidade antiga com:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    onde mountpointestá o caminho para a montagem.
  • Agora reinicie o MySQL com:
    sudo /etc/init.d/mysql start

Com alguma sorte, o MySQL deve reiniciar e você deve ter seus bancos de dados antigos de volta.

Fonte [email protected]

Cyrille
fonte
3
Isso não vai funcionar porque configuração ainda está apontando para o local de idade (!)
ADOConnection
4

Solução 1:

  1. Primeiro, faça backup dos seus dados usando o `mysqldump.
  2. Se você instalar o Mysql Server a partir do pacote oficial, poderá fazê-lo executando o programa MySQLINstanceConfig.exe a partir do diretório bin do seu servidor.
  3. Importar dados

MySQLINstanceConfig.exe

Segunda solução (não recomendada, mas funciona na mesma máquina)

  1. Pare o servidor Mysql.
  2. Copie dados do seu diretório de dados para o seu novo diretório
  3. Abra o arquivo my.cnf (no meu caso "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. encontre a linha como datadir = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" e altere o caminho para seu novo local
  5. Inicie seu servidor

A partir da versão 5.6, o MySQLInstanceConfig.exe não está mais distribuído. Essa funcionalidade está sendo substituída pelo instalador. http://bugs.mysql.com/bug.php?id=66306

rkosegi
fonte
Existe um programa Linux equivalente para mover os dados
Ron Piggott
Depois de mover os dados com a segunda abordagem, não consegui iniciar o MariaDB (versão 5.5). Depois de conceder ao usuário do serviço acesso ao novo datadir, o serviço é iniciado e eu consigo conectar-me ao banco de dados. No entanto acessar qualquer mesa ainda falhar: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. Como posso garantir que as permissões sejam definidas corretamente?
Bram
2

Para Windows, a partir do MySQL Installer 1.4.6 (07-04-2015) , o local dos dados pode ser especificado em uma chave do Registro que especifica o local do my.iniarquivo, portanto, se os dados foram inicialmente instalados em um local não padrão o my.iniarquivo não estará em C:\ProgramData\MySQL\MySQL Server x.x\.

A localização dos valores do registro é (pelo menos a partir do MySQL 5.6):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationé um REG_SZque aponta para a pasta onde os arquivos do aplicativo MySQL estão localizados; por padrão:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationé um REG_SZque aponta para a pasta onde my.iniestá localizado; por padrão também:C:\Program Files\MySQL\MySQL Server x.x\

Além disso, o my.inicaminho do arquivo está incluído no comando service sob essa chave do Registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXno ImagePath REG_EXPAND_SZvalor

O valor padrão dessa sequência é: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Portanto, a conclusão é que, para mover arquivos de dados nesse cenário, você deve seguir as etapas postadas pelo @ITCuties com algumas adições.

Aqui estão as etapas completas:

  1. Desligamento mysql.
  2. Procure o DataLocationvalor do registro acima para encontrar o my.inilocal atual do arquivo e, se desejar mover o my.iniarquivo, atualize o DataLocationcaminho e mova o my.iniarquivo para esse novo caminho.
  3. Se você estiver alterando o local do my.iniarquivo, precisará atualizar o caminho na chave de registro de comando de serviço listada acima.
  4. Abra o my.iniarquivo, localize o datadirparâmetro Mova os arquivos desse datadircaminho para o caminho em que você deseja que os dados residam e também atualize o datadirparâmetro com esse novo caminho.
  5. Inicie o mysql.
nextgentech
fonte