Wie stelle ich eine Dump-Datei aus mysqldump wieder her?


544

Ich erhielt eine MySQL-Datenbankdatei, die ich als Datenbank auf meinem Windows Server 2008-Computer wiederherstellen muss.

Ich habe versucht, MySQL Administrator zu verwenden, habe jedoch den folgenden Fehler erhalten:

Die ausgewählte Datei wurde von mysqldump generiert und kann von dieser Anwendung nicht wiederhergestellt werden.

Wie bringe ich das zum Laufen?

Antworten:


587

Es sollte so einfach sein wie das Ausführen von:

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

Wenn es sich bei dem Speicherauszug um eine einzelne Datenbank handelt, müssen Sie möglicherweise oben in der Datei eine Zeile hinzufügen:

USE <database-name-here>;

Wenn es sich um einen Speicherauszug vieler Datenbanken handelte, sind die use-Anweisungen bereits vorhanden.

Um diese Befehle auszuführen, öffnen Sie eine Eingabeaufforderung (unter Windows) und cddas Verzeichnis, in dem sich die mysql.exeausführbare Datei befindet (möglicherweise müssen Sie sich ein wenig danach umsehen. Dies hängt davon ab, wie Sie MySQL installiert haben, dh eigenständig oder als Teil von ein Paket wie WAMP). Sobald Sie in diesem Verzeichnis sind, sollten Sie in der Lage sein, den Befehl einfach so einzugeben, wie ich ihn oben habe.


1
Benutze ich "MySQL Command Line Client"? Ich habe MySQL noch nie benutzt.
Zack Peterson

1
Öffnen Sie die Dump-Datei in einem Texteditor. Es ist ziemlich einfach, sie zu durchsuchen. Wenn es "using" -Anweisungen gibt, müssen Sie mehrere Datenbanken hinzufügen. Wenn keine vorhanden sind, müssen Sie oben eine hinzufügen, bevor Sie können Führen Sie diesen Befehl aus.
Justin Bennett

6
Natürlich muss die Datenbank, die Sie in die Anweisung "using" einfügen, zuerst vorhanden sein.
Justin Bennett

112
siehe vogs antworten. Die Syntax mysql -u<user> -p mydatabasename < db_backup.dump erfordert keine USEAnweisung am Anfang der Datei
Toskan

1
Der Vorschlag "Öffnen Sie die Dump-Datei in einem Texteditor" scheint seltsam. Das könnte mit kleinen Datenbanken oder einem gepufferten Texteditor wie EditPad funktionieren, aber mit allem anderen wird es ersticken. Es wäre schön, wenn Sie diesen Schritt nicht machen müssten.
Mikato

718

Wenn die Datenbank, die Sie wiederherstellen möchten, noch nicht vorhanden ist, müssen Sie sie zuerst erstellen.

Wenn Sie sich in der Befehlszeile in demselben Verzeichnis befinden, in dem sich die Speicherauszugsdatei befindet, verwenden Sie die folgenden Befehle (mit entsprechenden Ersetzungen):

C:\> mysql -u root -p

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

52
Ich persönlich mag diese Methode. Es zeigt den Fortschritt des Dumps und auch genau, wie viel Zeit verschiedene SQL benötigt.
ToughPal

11
@Phrogz Eigentlich können Sie das Passwort in der Befehlszeile mysql -u root -psecret ohne Leerzeichen eingeben, haben aber den Nachteil, dass Ihr Passwort in Prozesslisten und Protokolldateien im Klartext angezeigt wird . Wie Sie vorschlagen, ist es besser, leer zu verwenden -pund es in die Eingabeaufforderung einzugeben.
Joe Holloway

Diese Methode hat den Vorteil, dass sitzungsbasierte Variablen (z. B. FOREIGN_KEY_CHECKS) festgelegt werden können, ohne dass die Dump-Datei bearbeitet werden muss
Chris Cooper

Das ist alles schön und großartig, wenn man so etwas von Hand macht, aber es funktioniert nicht mit einem Bash-Skript.
Chacham15

1
Ein Nachteil: Es kann kein gezippter Dump geladen werden (z. B. generiert mit mysqldump db | gzip -9 > dumpfile.sql.gz)
Marinos An

246

Sie müssen lediglich Folgendes ausführen:

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

Wenn der Speicherauszug mehrere Datenbanken enthält, sollten Sie den Datenbanknamen weglassen:

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

Um diese Befehle auszuführen, öffnen Sie eine Eingabeaufforderung (unter Windows) und cddas Verzeichnis, in dem sich die mysql.exeausführbare Datei befindet (möglicherweise müssen Sie sich ein wenig danach umsehen. Dies hängt davon ab, wie Sie MySQL installiert haben, dh eigenständig oder als Teil von ein Paket wie WAMP). Sobald Sie sich in diesem Verzeichnis befinden, sollten Sie nur noch den Befehl eingeben können.


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

Schauen Sie hier - Schritt 3 : Auf diese Weise benötigen Sie die USE-Anweisung nicht


33

Wenn wir eine Dump-Datei mit erstellen mysqldump, enthält sie ein großes SQL-Skript zum Neuerstellen des Datenbankinhalts. Wir stellen es also wieder her, indem wir den Befehlszeilenclient von MySQL starten:

mysql -uroot -p 

(wo rootist unser Administrator-Benutzername für MySQL) und sobald wir mit der Datenbank verbunden sind, benötigen wir Befehle, um die Datenbank zu erstellen und die Datei darin einzulesen:

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

Die Details hängen davon ab, welche Optionen beim Erstellen der Speicherauszugsdatei verwendet wurden.


19

Führen Sie den Befehl aus, um in die Datenbank einzutreten

 # mysql -u root -p 

Geben Sie das Kennwort für den Benutzer ein und erstellen Sie eine neue Datenbank

mysql> create database MynewDB;
mysql> exit

Und machen Sie exit.Afetr that.Run diesen Befehl

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

Geben Sie dann die Datenbank ein und geben Sie ein

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

Das war's ........ Ihr Speicherauszug wird von einer Datenbank in eine andere Datenbank wiederhergestellt

Oder es gibt eine alternative Möglichkeit für die Dump-Wiederherstellung

# mysql -u root -p 

Geben Sie dann die Datenbank ein und geben Sie ein

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

14

Ich habe es nach diesen Schritten zum Laufen gebracht ...

  1. Öffnen Sie MySQL Administrator und stellen Sie eine Verbindung zum Server her

  2. Wählen Sie links "Kataloge"

  3. Klicken Sie mit der rechten Maustaste in das Feld unten links und wählen Sie "Neues Schema erstellen".

    MySQL Administrator http://img204.imageshack.us/img204/7528/adminsx9.th.gif Bild vergrößern

  4. Nennen Sie das neue Schema (Beispiel: "dbn")

    MySQL New Schema http://img262.imageshack.us/img262/4374/newwa4.th.gif Bild vergrößern

  5. Öffnen Sie die Windows-Eingabeaufforderung (cmd).

    Windows-Eingabeaufforderung http://img206.imageshack.us/img206/941/startef7.th.gif Bild vergrößern

  6. Wechseln Sie in den MySQL-Installationsordner

  7. Befehl ausführen:

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

    … Wobei "root" der Name des Benutzers, "dbn" der Datenbankname und "C: \ dbn_20080912.dump" der Pfad / Dateiname der mysqldump .dump-Datei ist

    MySQL Dump Restore-Befehlszeile http://img388.imageshack.us/img388/2489/cmdjx0.th.gif Bild vergrößern

  8. Genießen!



11

Wenn Sie den Fortschritt des Speicherauszugs anzeigen möchten, versuchen Sie Folgendes:

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

Sie müssen natürlich 'pv' installiert haben. Dieser Befehl funktioniert nur unter * nix.


10

Als konkretes Beispiel einer früheren Antwort:

Ich musste ein Backup wiederherstellen, damit ich es in SQL Server importieren / migrieren konnte. Ich habe nur MySQL installiert, es jedoch nicht als Dienst registriert oder meinem Pfad hinzugefügt, da ich es nicht weiter ausführen muss.

Ich habe den Windows Explorer verwendet, um meine Dump-Datei in C: \ code \ dump.sql abzulegen. Öffnen Sie dann MySql über den Startmenüpunkt. Erstellte die Datenbank und führte dann den Quellbefehl mit dem vollständigen Pfad wie folgt aus:

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

9

Mit einer 200-MB-Dump-Datei, die unter Linux erstellt wurde, um unter Windows mit MySQL 5.5 wiederherzustellen, hatte ich mehr Erfolg mit dem

source file.sql

Ansatz von der MySQL-Eingabeaufforderung als mit dem

mysql  < file.sql

Ansatz in der Befehlszeile, der einen Fehler 2006 verursachte "Server ist weg" (unter Windows)

Seltsamerweise bezieht sich der Dienst, der während der (MySQL-) Installation erstellt wurde, auf eine my.ini-Datei, die nicht vorhanden war. Ich habe die "große" Beispieldatei in my.ini kopiert, die ich bereits mit den empfohlenen Erhöhungen geändert hatte.

Meine Werte sind

[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

Dies ist dasselbe wie bei einigen anderen Antworten, und dies ist eine acht Jahre alte Frage.
miken32

2
Obwohl die ausgewählte Antwort sehr gut ist, war diese Antwort für mich tatsächlich nützlicher. Meine Datenbankdatei war RIESIG und das Öffnen in Notepad ++ war ein Albtraum. Sie konnte die Größe einfach nicht verarbeiten und erlaubte mir nicht, den Datenbanknamen oben in die SQL-Datei einzufügen. In diesem Fall ist es tatsächlich hilfreicher, den Datenbanknamen über die Befehlszeile anzugeben.
Najeeb

Der mysqlBefehl akzeptiert keine Leerzeichen zwischen den Optionen und ihren Argumenten. Es muss -u<username>stattdessen sein, und das Kennwort sollte überhaupt nicht in der Befehlszeile angegeben werden.
Roland Illig

4

Sie können das Menü "Wiederherstellen" in MySQL Admin nicht verwenden, wenn das Backup / Dump nicht von dort aus erstellt wurde. Es ist jedoch einen Versuch wert. Wenn Sie das Kontrollkästchen "Fehler ignorieren" aktivieren, wird angezeigt, dass es erfolgreich abgeschlossen wurde, obwohl es eindeutig nur mit einem Bruchteil der importierten Zeilen beendet wird.


2

Einzeiliger Befehl zum Wiederherstellen des generierten SQL aus mysqldump

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

1
zBmysql -u root -p12345678 -e "source /tmp/backup.sql;"
Jossef Harush

Verwenden Sie das Passwort nicht so. Verwenden Sie einfach -p. Die Befehlszeile fordert Sie auf, ein sicheres Passwort anzufordern, nachdem Sie die Eingabetaste gedrückt haben.
user2473015

Wenn Sie sich eine interaktive Eingabeaufforderung leisten können, sind Sie richtig. Wenn Sie nicht können (z. B. unbeaufsichtigtes Skript), werden Sie es wahrscheinlich inline verwenden
Jossef Harush

1

Sie können auch das Wiederherstellungsmenü in MySQL Administrator verwenden. Sie müssen nur die Sicherungsdatei öffnen und dann auf die Schaltfläche Wiederherstellen klicken.


0

So stellen Sie die MySQL-Datenbank mit MySQLWorkbench wieder her

Sie können die Drop- und Create-Befehle auf einer Abfrage-Registerkarte ausführen.

Löschen Sie das Schema, falls es derzeit vorhanden ist

DROP DATABASE `your_db_name`;

Erstellen Sie ein neues Schema

CREATE SCHEMA `your_db_name`;

Öffnen Sie Ihre Dump-Datei

MySQLWorkbench öffnet SQL-Datei

  1. Klicken Sie auf das Symbol SQL-Skript in einer neuen Abfrage öffnen und wählen Sie Ihre Datenbank-Dump-Datei aus.
  2. Klicken Sie dann auf SQL-Skript ausführen ...
  3. Anschließend können Sie eine Vorschau der ersten Zeilen des SQL-Dump-Skripts anzeigen.
  4. Anschließend wählen Sie den Standardschemanamen
  5. Als nächstes wählen Sie den Standardzeichensatz utf8 ist normalerweise eine sichere Wette, aber Sie können ihn möglicherweise daran erkennen, dass Sie in den Vorschauzeilen nach etwas wie charakter_set suchen .
  6. Klicken Sie auf Ausführen
  7. Seien Sie geduldig mit großen DB-Wiederherstellungsskripten und beobachten Sie, wie Ihr Speicherplatz verschmilzt! 🎉

0

Angenommen, Sie haben die leere Datenbank bereits erstellt, können Sie eine Datenbank auch über die Befehlszeile wie folgt wiederherstellen:

sudo mysql databasename < backup.sql
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.