Herunterladen des MySQL-Dumps von der Befehlszeile

306

Ich entferne mich von Linode, weil ich nicht über die erforderlichen Linux-Systemadministratorkenntnisse verfüge. Bevor ich den Übergang zu einem Noob-freundlicheren Dienst abschließen kann, muss ich den Inhalt einer MySQL-Datenbank herunterladen. Gibt es eine Möglichkeit, dies über die Befehlszeile zu tun?

Phillip Copley
quelle
mysqldump ist das, wonach Sie suchen.
Faruk Sahin
1
@ Azinkey Ich denke, Sie werden die akzeptierte Antwort dieser Post-Kopie finden und den Inhalt meiner Antwort (Wort für Wort) in den ersten Teil ihrer Antwort Monate später
einfügen

Antworten:

656

Sie können dies mit der Befehlszeilenfunktion mysqldump erreichen .

Zum Beispiel:

Wenn es sich um eine gesamte Datenbank handelt, gilt Folgendes:

   $ mysqldump -u [uname] -p db_name > db_backup.sql

Wenn es nur DBs sind, dann:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql

Wenn es sich um bestimmte Tabellen in einer Datenbank handelt, gilt Folgendes:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql

Sie können sogar die Ausgabe mit gzip automatisch komprimieren (wenn Ihre Datenbank sehr groß ist):

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz

Wenn Sie dies remote tun möchten und Zugriff auf den betreffenden Server haben, funktioniert Folgendes (vorausgesetzt, der MySQL-Server befindet sich an Port 3306):

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql

Die .sqlDatei sollte in dem Ordner abgelegt werden, in dem Sie die Befehlszeile ausführen.

BEARBEITEN: Aktualisiert, um die Aufnahme von Kennwörtern in CLI-Befehle zu vermeiden. Verwenden Sie die -pOption ohne Kennwort. Sie werden dazu aufgefordert und nicht aufgezeichnet.

Nickhar
quelle
1
Ihre Antwort in Verbindung mit stackoverflow.com/questions/2989724/… - Sollte tun, was er verlangt, da er es aufgenommen hat, muss es heruntergeladen werden. Es ist entweder das oder ein wgetoder scpwird benötigt, um die einmal erstellte Datei abzurufen.
Zak
47
Kleiner Hinweis, dass es sicherer ist, das Passwort nicht direkt im Befehl einzugeben. Wenn Sie nur die Option -p ohne Kennwort verwenden, werden Sie beim Ausführen zur Eingabe des Kennworts aufgefordert. Auf diese Weise wird das Kennwort nicht in Ihrem Befehlsverlauf gespeichert (und möglicherweise abgerufen). Verwenden Sie also den folgenden Befehl: mysqldump -P 3306 -h [IP-Adresse] -u [uname] -p Datenbankname> db_backup.sql
Pitt
3
Anstatt >zum Speichern zu verwenden, verwende ich eher -r, um Probleme mit fremden Zeichen oder diesen Albtraum in Bezug auf Codierungsprobleme zu vermeiden, wie in diesem Artikel angegeben .
Pathros
1
Verwenden Sie für große / aktiv aktualisierte Datenbanken den Parameter --single-transaction. Dies schafft einen Prüfpunkt und trägt zur Gewährleistung der Konsistenz bei. Verwenden Sie auch Schalter - Routinen - Trigger, wenn Sie Prozeduren / Funktionen / Trigger gespeichert haben
gemäß_guy
1
Sie sollten --result-file=db_backup.sqlanstelle von verwenden > db_backup.sql. Zitat aus der MySQL-Dokumentation : "UTF-16 ist als Verbindungszeichensatz nicht zulässig (siehe Unzulässige Client-Zeichensätze ), daher wird die Speicherauszugsdatei nicht korrekt geladen. Um dieses Problem zu umgehen , verwenden Sie die --result-fileOption, mit der die Ausgabe in erstellt wird ASCII-Format ".
Martin Braun
13

In den neuesten Versionen von MySQL, zumindest in meinen, können Sie Ihren Pass nicht direkt in den Befehl eingeben.

Du musst rennen:

mysqldump -u [uname] -p db_name > db_backup.sql

und dann wird nach dem Passwort gefragt.

Lorenzo Lerate
quelle
2
Das Entfernen des Leerzeichens zwischen -pOption und tatsächlichem Passwort ist der Trick
y2k-shubham
8

Beim Herunterladen vom Remote-Server ist hier ein einfaches Beispiel:

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql

Das -p gibt an, dass Sie ein Passwort eingeben, es bezieht sich nicht auf den Datenbanknamen. Nach Eingabe des Befehls werden Sie zur Eingabe des Passworts aufgefordert. Geben Sie es ein und drücken Sie die Eingabetaste.

Andrew
quelle
5

Unter Windows müssen Sie den MySQL-Bin angeben, in dem sich die Datei mysqldump.exe befindet.

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql

Speichern Sie dies in einer Textdatei wie backup.cmd

drooh
quelle
oder normalerweise haben Sie MySQL in Ihrer PATH-Variablen, damit Sie mysqlBefehle von überall ausführen können, ohne sich in ihrem Verzeichnis zu befinden.
behz4d
2

Öffnen Sie die Eingabeaufforderung und geben Sie diesen Befehl direkt ein. Gehen Sie nicht in MySQL und geben Sie diesen Befehl ein.

mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Nithin Raja
quelle
1
Das Kopieren der ersten Codezeile aus der akzeptierten Antwort auf eine 5 Jahre alte Frage ist eine mutige Strategie für die Karma-Landwirtschaft.
Phillip Copley
Ich habe diesen MySQLdump-Befehl in der MySQL-Eingabeaufforderung ausprobiert und nicht funktioniert. also gerade geantwortet :-)
Nithin Raja
2

Gehen Sie zum MySQL-Installationsverzeichnis und öffnen Sie von dort aus cmd. Führen Sie dann den folgenden Befehl aus, um eine Sicherung Ihrer Datenbank zu erhalten.

mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql
user8376416
quelle
1

Geben Sie einfach mysqldumpoder mysqldump --helpin Ihr cmd einhow to use

Hier ist mein cmd Ergebnis

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
Suganthan Madhavan Pillai
quelle
1

Wenn Sie MySQL anders als den Standardport ausführen:

mysqldump.exe -u username -p -P PORT_NO database > backup.sql
Anand Raj
quelle
1

Für diejenigen, die ein Passwort in die Befehlszeile eingeben möchten. Es ist möglich, aber empfehlen, es in Anführungszeichen zu setzen, damit das Sonderzeichen keine Probleme verursacht.

mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql
Tara Prasad Gurung
quelle
-1

Verwenden Sie dies Wenn Sie die Datenbank mit dem Namen archiedb haben, verwenden Sie diese mysql -p --databases archiedb> /home/database_backup.sql

Angenommen, dies ist Linux, wählen Sie, wo die Sicherungsdatei gespeichert werden soll.

Nabaasa Archie
quelle
shell> mysqldump -p mypassword --databases mydb> /home/backup.sql.
Nabaasa Archie
-1

Für Windows-Benutzer können Sie den Befehl in Ihrem MySQL-Ordner ausführen

z.B

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql
Narayan P.
quelle
1
Die Frage deutete darauf hin, dass MySQL unter Linux läuft.
Gmauch
-1

Hinweis: Dieser Schritt erfolgt erst nach dem Speichern Ihrer MySQL-Datei (die in den meisten der oben genannten Antworten behandelt wurde).

Es wird davon ausgegangen, dass Sie die besagte Dump-Datei auf Ihrem Remote-Server haben und sie jetzt auf Ihren lokalen Computer übertragen möchten.

Führen Sie die folgenden Schritte .sqlaus, um die ausgelagerte Datei von Ihrem Remote-Server auf Ihren lokalen Computer herunterzuladen

scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
Ruto Collins
quelle