Come ripristinare un file di dump da mysqldump?


544

Mi è stato assegnato un file di database MySQL che è necessario ripristinare come database sul mio computer Windows Server 2008.

Ho provato a utilizzare MySQL Administrator, ma ho riscontrato il seguente errore:

Il file selezionato è stato generato da mysqldump e non può essere ripristinato da questa applicazione.

Come faccio a farlo funzionare?

Risposte:


587

Dovrebbe essere semplice come eseguire questo:

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

Se il dump è di un singolo database, potrebbe essere necessario aggiungere una riga nella parte superiore del file:

USE <database-name-here>;

Se è stato un dump di molti database, le istruzioni d'uso sono già presenti.

Per eseguire questi comandi, apri un prompt dei comandi (in Windows) e cdnella directory in cui si trova l' mysql.exeeseguibile (potresti doverlo cercare un po ', dipenderà da come hai installato mysql, cioè standalone o come parte di un pacchetto come WAMP). Una volta che sei in quella directory, dovresti essere in grado di digitare il comando come ho sopra.


1
Uso "MySQL Command Line Client"? Non ho mai usato MySQL prima.
Zack Peterson,

1
Apri il file di dump in un editor di testo, è abbastanza facile da consultare, se ci sono istruzioni "utilizzo", quindi è di più database, se non ce ne sono, dovrai aggiungerne uno in alto prima di poter esegui quel comando.
Justin Bennett,

6
Naturalmente il database inserito nell'istruzione "using" dovrà esistere per primo.
Justin Bennett,

113
vedi la risposta di vogs. La sintassi mysql -u<user> -p mydatabasename < db_backup.dump non è necessaria per una USEdichiarazione all'inizio del file
Toskan,

1
Il suggerimento "Apri il file di dump in un editor di testo" sembra strano. Ciò potrebbe funzionare con piccoli database o un editor di testo con buffer come EditPad, ma con tutto il resto si strozzerà. Sarebbe bello se non dovessi fare questo passo.
Mikato,

719

Se il database che si desidera ripristinare non esiste già, è necessario prima crearlo.

Sulla riga di comando, se ci si trova nella stessa directory che contiene il file scaricato, utilizzare questi comandi (con le sostituzioni appropriate):

C:\> mysql -u root -p

mysql> create database mydb;
mysql> use mydb;
mysql> source db_backup.dump;

52
personalmente mi piace questo metodo. mostra l'avanzamento della discarica e anche esattamente quanto tempo impiega sql diverso.
ToughPal,

11
@Phrogz In realtà è possibile fornire la password dalla riga di comando utilizzando mysql -u root -psecret senza lo spazio, ma ha lo svantaggio che la password viene visualizzata in chiaro negli elenchi dei processi e nei file di registro. È meglio, come suggerisci, usare vuoto -pe digitarlo nel prompt.
Joe Holloway,

Questo metodo ha il vantaggio di consentire l'impostazione delle variabili basate sulla sessione (ad esempio FOREIGN_KEY_CHECKS) senza dover modificare il file di dump
Chris Cooper,

va benissimo quando si fa questo genere di cose a mano, ma non funziona con uno script bash.
chacham15,

1
Unico inconveniente: non è possibile caricare la discarica gzip (ad esempio generata con mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos il

246

Devi semplicemente eseguire questo:

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

Se il dump contiene più database, è necessario omettere il nome del database:

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

Per eseguire questi comandi, apri un prompt dei comandi (in Windows) e cdnella directory in cui si trova l' mysql.exeeseguibile (potresti doverlo cercare un po ', dipenderà da come hai installato mysql, cioè standalone o come parte di un pacchetto come WAMP). Una volta che ti trovi in ​​quella directory, dovresti essere in grado di digitare semplicemente il comando.


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

guarda qui - passaggio 3 : in questo modo non hai bisogno dell'istruzione USE


33

Quando creiamo un file di dump con mysqldump, ciò che contiene è un grande script SQL per ricreare il contenuto del databse. Quindi lo ripristiniamo utilizzando l'avvio del client della riga di comando di MySQL:

mysql -uroot -p 

(dove si roottrova il nostro nome utente admin per MySQL) e una volta connessi al database abbiamo bisogno di comandi per creare il database e leggere il file al suo interno:

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

I dettagli varieranno in base alle opzioni utilizzate durante la creazione del file di dump.


19

Eseguire il comando per accedere al DB

 # mysql -u root -p 

Immettere la password per l'utente, quindi Creare un nuovo DB

mysql> create database MynewDB;
mysql> exit

E fai exit.Afetr that.Run this Command

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

Quindi entra nel db e digita

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

Questo è tutto ........ Il dump verrà ripristinato da un DB a un altro DB

Altrimenti esiste un modo alternativo per ripristinare il dump

# mysql -u root -p 

Quindi entra nel db e digita

mysql> create database MynewDB;
mysql> show databases;
mysql> use MynewDB;
mysql> source MynewDB.sql;
mysql> show tables;
mysql> exit

14

L'ho fatto funzionare seguendo questi passaggi ...

  1. Apri MySQL Administrator e connettiti al server

  2. Seleziona "Cataloghi" a sinistra

  3. Fai clic destro nella casella in basso a sinistra e scegli "Crea nuovo schema"

    MySQL Administrator http://img204.imageshack.us/img204/7528/adminsx9.th.gif ingrandire l'immagine

  4. Denominare il nuovo schema (esempio: "dbn")

    MySQL New Schema http://img262.imageshack.us/img262/4374/newwa4.th.gif ingrandire l'immagine

  5. Apri prompt dei comandi di Windows (cmd)

    Prompt dei comandi di Windows http://img206.imageshack.us/img206/941/startef7.th.gif ingrandire l'immagine

  6. Cambia directory nella cartella di installazione di MySQL

  7. Esegui comando:

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

    ... dove "root" è il nome dell'utente, "dbn" è il nome del database e "C: \ dbn_20080912.dump" è il percorso / nome file del file mysdldump .dump

    Riga di comando di ripristino dump MySQL http://img388.imageshack.us/img388/2489/cmdjx0.th.gif ingrandire l'immagine

  8. Godere!


12

Puoi provare lo strumento 'Esegui script SQL' di SQLyog per importare file sql / dump.

inserisci qui la descrizione dell'immagine


11

Se si desidera visualizzare l'avanzamento del dump, provare questo:

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

Ovviamente avrai bisogno di 'pv' installato. Questo comando funziona solo su * nix.


10

Come esempio specifico di una risposta precedente:

Avevo bisogno di ripristinare un backup in modo da poterlo importare / migrare in SQL Server. Ho installato solo MySql, ma non l'ho registrato come servizio o aggiunto al mio percorso in quanto non ho la necessità di mantenerlo in esecuzione.

Ho usato Windows Explorer per inserire il mio file di dump in C: \ code \ dump.sql. Quindi ha aperto MySql dalla voce del menu Start. Creato il DB, quindi eseguito il comando source con il percorso completo in questo modo:

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

9

Utilizzando un file di dump da 200 MB creato su Linux per ripristinare su Windows con mysql 5.5, ho avuto più successo con

source file.sql

approccio dal prompt mysql che con il

mysql  < file.sql

approccio sulla riga di comando, che ha causato l'errore "Il server è scomparso" (su Windows)

Stranamente, il servizio creato durante l'installazione (mysql) si riferisce a un file my.ini che non esisteva. Ho copiato il file di esempio "grande" in my.ini che avevo già modificato con gli aumenti consigliati.

I miei valori sono

[mysqld]
max_allowed_packet = 64M
interactive_timeout = 250
wait_timeout = 250

9
./mysql -u <username> -p <password> -h <host-name like localhost> <database-name> < db_dump-file

È uguale a un paio di altre risposte e questa è una domanda di otto anni.
miken32,

2
Sebbene la risposta selezionata sia molto buona, questa risposta è stata in realtà più utile per me. Il mio file di database era ENORME e aprirlo in Notepad ++ è stato un incubo, non riusciva a gestire le dimensioni e non mi avrebbe permesso di aggiungere il nome del database nella parte superiore del file sql. In tal caso, essere in grado di specificare il nome db dalla riga di comando è effettivamente più utile.
Najeeb,

Il mysqlcomando non accetta spazi tra le opzioni e i loro argomenti. Deve essere -u<username>invece e la password non deve essere fornita nella riga di comando.
Roland Illig,

4

Non è possibile utilizzare il menu Ripristina in MySQL Admin se il backup / dump non è stato creato da lì. Vale la pena provare comunque. Se scegli di "ignorare gli errori" con la casella di controllo per questo, dirà che è stato completato con successo, anche se esce chiaramente con solo una frazione delle righe importate ... questo è con un dump, intendiamoci.


2

Comando one-liner per ripristinare l'SQL generato da mysqldump

mysql -u <username> -p<password> -e "source <path to sql file>;"

1
ad es.mysql -u root -p12345678 -e "source /tmp/backup.sql;"
Jossef Harush,

Non usare la password in questo modo, basta usare -p e la riga di comando ti chiederà una richiesta di password sicura dopo aver premuto Invio.
user2473015

Quando puoi permetterti un prompt interattivo, hai ragione. Quando non puoi (ad es. Sceneggiatura automatica) probabilmente lo userai in linea
Jossef Harush,

1

Puoi anche utilizzare il menu di ripristino in MySQL Administrator. Devi solo aprire il file di backup, quindi fare clic sul pulsante di ripristino.


0

Come ripristinare il database MySQL con MySQLWorkbench

È possibile eseguire il rilascio e creare comandi in una scheda della query.

Eliminare lo schema se esiste attualmente

DROP DATABASE `your_db_name`;

Crea un nuovo schema

CREATE SCHEMA `your_db_name`;

Apri il tuo file di dump

MySQLWorkbench apre il file sql

  1. Fare clic sull'icona Apri uno script SQL in una nuova scheda della query e selezionare il file dump del db.
  2. Quindi fare clic su Esegui script SQL ...
  3. Ti consentirà quindi di visualizzare in anteprima le prime righe dello script di dump SQL.
  4. Sceglierai quindi il Nome schema predefinito
  5. Quindi scegli il set di caratteri predefinito utf8 è normalmente una scommessa sicura, ma potresti essere in grado di discernerlo guardando le linee di anteprima per qualcosa come character_set .
  6. Fai clic su Esegui
  7. Sii paziente per gli script di ripristino di database di grandi dimensioni e guarda mentre il tuo spazio su disco si scioglie! 🎉

0

Supponendo che sia già stato creato il database vuoto, è anche possibile ripristinare un database dalla riga di comando in questo modo:

sudo mysql databasename < backup.sql
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.