Como restaurar um arquivo de despejo do mysqldump?

544

Recebi um arquivo de banco de dados MySQL que preciso restaurar como um banco de dados na minha máquina Windows Server 2008.

Tentei usar o MySQL Administrator, mas recebi o seguinte erro:

O arquivo selecionado foi gerado pelo mysqldump e não pode ser restaurado por este aplicativo.

Como faço para isso funcionar?

Zack Peterson
fonte

Respostas:

587

Deve ser tão simples quanto executar isso:

mysql -u <user> -p < db_backup.dump

Se o dump for de um único banco de dados, talvez seja necessário adicionar uma linha na parte superior do arquivo:

USE <database-name-here>;

Se foi um despejo de muitos bancos de dados, as instruções de uso já estão lá.

Para executar esses comandos, abra um prompt de comando (no Windows) e cdno diretório em que o mysql.exeexecutável está (você pode precisar procurar um pouco, isso dependerá de como você instalou o mysql, ou seja, independente ou como parte do um pacote como o WAMP). Quando estiver nesse diretório, você poderá digitar apenas o comando como o tenho acima.

Justin Bennett
fonte
1
Eu uso o "MySQL Command Line Client"? Eu nunca usei o MySQL antes.
Zack Peterson
1
Abra o arquivo de despejo em um editor de texto, é fácil escolher, se houver alguma instrução "using", então existem vários bancos de dados; se não houver, você precisará adicionar um na parte superior antes de poder execute esse comando.
Justin Bennett
6
É claro que o banco de dados que você colocou na instrução "using" precisará existir primeiro.
Justin Bennett
113
veja vogs responder. A sintaxe mysql -u<user> -p mydatabasename < db_backup.dump não é necessária para uma USEdeclaração no início do arquivo
Toskan
1
A sugestão "Abrir o arquivo de despejo em um editor de texto" parece estranha. Isso pode funcionar com bancos de dados pequenos ou com um editor de texto em buffer, como o EditPad, mas com todo o resto ele vai sufocar. Seria bom se você não precisasse dar esse passo.
Mikato
719

Se o banco de dados que você deseja restaurar ainda não existir, é necessário criá-lo primeiro.

Na linha de comando, se você estiver no mesmo diretório que contém o arquivo despejado, use estes comandos (com as substituições apropriadas):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;
Dónal
fonte
52
Eu pessoalmente gosto deste método. mostra o progresso do despejo e também exatamente quanto tempo o sql está demorando.
ToughPal
11
@Phrogz Na verdade, você pode fornecer a senha na linha de comando usando mysql -u root -psecret o espaço, mas tem a desvantagem de que sua senha apareça em texto não criptografado nas listas de processos e nos arquivos de log. É melhor, como você sugere, usar vazio -pe digitar no prompt.
93311 Joe Holloway
Este método tem o benefício de permitir que variáveis ​​baseadas em sessão (por exemplo, FOREIGN_KEY_CHECKS) sejam definidas sem a necessidade de editar o arquivo de despejo
Chris Cooper
tudo isso é ótimo ao fazer esse tipo de coisa manualmente, mas não funciona a partir de um script bash.
precisa saber é o seguinte
1
Uma desvantagem: ele não pode carregar despejo compactado (por exemplo gerado com mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos Um
246

Você simplesmente precisa executar o seguinte:

mysql -p -u[user] [database] < db_backup.dump

Se o despejo contiver vários bancos de dados, você deve omitir o nome do banco de dados:

mysql -p -u[user] < db_backup.dump

Para executar esses comandos, abra um prompt de comando (no Windows) e cdno diretório em que o mysql.exeexecutável está (você pode precisar procurar um pouco, isso dependerá de como você instalou o mysql, ou seja, independente ou como parte do um pacote como o WAMP). Quando estiver nesse diretório, você poderá digitar apenas o comando.

vog
fonte
60
mysql -u username -p -h localhost DATA-BASE-NAME < data.sql

veja aqui - passo 3 : dessa forma, você não precisa da instrução USE

womd
fonte
33

Quando criamos um arquivo de despejo mysqldump, o que ele contém é um grande script SQL para recriar o conteúdo do databse. Então, nós o restauramos usando o cliente de linha de comando do MySQL:

mysql -uroot -p 

(onde rootestá o nosso nome de usuário administrador para MySQL) e, uma vez conectado ao banco de dados, precisamos de comandos para criar o banco de dados e ler o arquivo nele:

create database new_db;
use new_db;
\. dumpfile.sql

Os detalhes variam de acordo com as opções usadas ao criar o arquivo de despejo.

pdc
fonte
19

Execute o comando para entrar no banco de dados

 # mysql -u root -p 

Digite a senha do usuário e crie um novo banco de dados

mysql> create database MynewDB;
mysql> exit

E faça exit. Após isso, execute este comando

# mysql -u root -p  MynewDB < MynewDB.sql

Em seguida, entre no db e digite

mysql> show databases;
mysql> use MynewDB;
mysql> show tables;
mysql> exit

É isso ........ Seu dump será restaurado de um banco de dados para outro banco de dados

Ou então, existe uma maneira alternativa de restauração de despejo

# mysql -u root -p 

Em seguida, entre no db e digite

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit
Javeed Shakeel
fonte
14

Eu consegui funcionar seguindo estas etapas ...

  1. Abra o MySQL Administrator e conecte-se ao servidor

  2. Selecione "Catálogos" à esquerda

  3. Clique com o botão direito do mouse na caixa inferior esquerda e escolha "Criar novo esquema"

    MySQL Administrator http://img204.imageshack.us/img204/7528/adminsx9.th.gif ampliar imagem

  4. Nomeie o novo esquema (exemplo: "dbn")

    Novo esquema do MySQL http://img262.imageshack.us/img262/4374/newwa4.th.gif ampliar imagem

  5. Abra o prompt de comando do Windows (cmd)

    Prompt de comando do Windows http://img206.imageshack.us/img206/941/startef7.th.gif ampliar imagem

  6. Mude o diretório para a pasta de instalação do MySQL

  7. Executar comando:

    mysql -u root -p dbn < C:\dbn_20080912.dump

    … Onde "root" é o nome do usuário, "dbn" é o nome do banco de dados e "C: \ dbn_20080912.dump" é o caminho / nome do arquivo mysqldump .dump

    Linha de comando de restauração de despejo do MySQL http://img388.imageshack.us/img388/2489/cmdjx0.th.gif ampliar imagem

  8. Aproveitar!

Zack Peterson
fonte
12

Você pode tentar a ferramenta 'Executar script SQL' do SQLyog para importar arquivos sql / dump.

insira a descrição da imagem aqui

Ashwin A
fonte
11

Se você deseja visualizar o progresso do despejo, tente o seguinte:

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

Obviamente, você precisará do 'pv' instalado. Este comando funciona apenas em * nix.

Hengjie
fonte
10

Como um exemplo específico de uma resposta anterior:

Eu precisava restaurar um backup para poder importá-lo / migrá-lo para o SQL Server. Instalei apenas o MySql, mas não o registrei como um serviço ou o adicionei ao meu caminho, pois não tenho a necessidade de mantê-lo em execução.

Eu usei o Windows Explorer para colocar meu arquivo de despejo em C: \ code \ dump.sql. Em seguida, abra o MySql no item do menu Iniciar. Criou o banco de dados e, em seguida, executou o comando source com o caminho completo da seguinte maneira:

mysql> create database temp
mysql> use temp
mysql> source c:\code\dump.sql
Michael
fonte
9

Usando um arquivo de despejo de 200 MB criado no Linux para restaurar no Windows com o mysql 5.5, tive mais sucesso com o

source file.sql

abordagem a partir do prompt do mysql do que com o

mysql  < file.sql

abordagem na linha de comando, que causou algum erro "o servidor 2006 foi embora" (no Windows)

Estranhamente, o serviço criado durante a instalação (mysql) refere-se a um arquivo my.ini que não existia. Copiei o arquivo de exemplo "grande" para o my.ini, que eu já havia modificado com os aumentos recomendados.

Meus valores são

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250
Jerome_B
fonte
9
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file
vkrishna17
fonte
É o mesmo que algumas das outras respostas, e essa é uma pergunta de oito anos.
miken32
2
Embora a resposta selecionada seja muito boa, essa resposta foi realmente mais útil para mim. Meu arquivo de banco de dados era ENORME, e abri-lo no Notepad ++ foi um pesadelo, ele simplesmente não suportava o tamanho e não me permitia adicionar o nome do banco de dados na parte superior do arquivo sql. Nesse caso, poder especificar o nome do banco de dados na linha de comando é realmente mais útil.
Najeeb
O mysqlcomando não aceita espaços entre as opções e seus argumentos. Em -u<username>vez disso, deve ser , e a senha não deve ser fornecida na linha de comando.
Roland Illig 18/04
4

Você não pode usar o menu Restaurar no MySQL Admin se o backup / despejo não tiver sido criado a partir daí. Vale a pena tentar. Se você optar por "ignorar erros" com a caixa de seleção para isso, ele dirá que foi concluído com êxito, embora saia claramente com apenas uma fração de linhas importadas ... isso ocorre com um despejo, lembre-se.


fonte
2

Comando de uma linha para restaurar o SQL gerado de mysqldump

mysql -u <username> -p<password> -e "source <path to sql file>;"
Jossef Harush
fonte
1
por exemplomysql -u root -p12345678 -e "source /tmp/backup.sql;"
Jossef Harush
Não use a senha assim: use -p e a linha de comando solicitará uma solicitação de senha segura depois que você pressionar enter.
user2473015
Quando você pode pagar pelo prompt interativo, está correto. Quando você não pode (por exemplo script automático), você provavelmente vai usá-lo em linha
Jossef Harush
1

Você também pode usar o menu de restauração no MySQL Administrator. Você só precisa abrir o arquivo de backup e clicar no botão restaurar.

user26087
fonte
0

Como restaurar o banco de dados MySQL com o MySQLWorkbench

Você pode executar a soltar e criar comandos em uma guia de consulta.

Descartar o esquema se ele existir atualmente

DROP DATABASE `your_db_name`;

Crie um novo esquema

CREATE SCHEMA `your_db_name`;

Abra seu arquivo de despejo

MySQLWorkbench abre arquivo sql

  1. Clique no ícone Abrir um script SQL em uma nova guia da consulta e escolha seu arquivo db dump.
  2. Em seguida, clique em Executar script SQL ...
  3. Ele permitirá que você visualize as primeiras linhas do script de despejo SQL.
  4. Você escolherá o nome do esquema padrão
  5. Em seguida, escolha o Conjunto de caracteres padrão O utf8 normalmente é uma aposta segura, mas você pode discerni-lo olhando as linhas de visualização para algo como character_set .
  6. Clique em Executar
  7. Seja paciente com scripts de restauração de banco de dados grandes e observe como o espaço em sua unidade diminui! 🎉
CTS_AE
fonte
0

Supondo que você já tenha o banco de dados em branco criado, também é possível restaurar um banco de dados a partir da linha de comando da seguinte maneira:

sudo mysql databasename < backup.sql
Suragch
fonte