Suche…


Syntax

  • mysqldump -u [Benutzername] -p [Kennwort] [andere Optionen] Datenbankname> dumpFileName.sql /// Zum Sichern einer einzelnen Datenbank
  • mysqldump -u [Benutzername] -p [Kennwort] [andere Optionen] Datenbankname [Tabellenname1 Tabellenname2 Tabellenname2 ...]> dumpFileName.sql /// So sichern Sie eine oder mehrere Tabellen
  • mysqldump -u [Benutzername] -p [Kennwort] [Weitere Optionen] --databases Datenbankname1 Datenbankname2 Datenbankname3 ...> dumpFileName.sql /// So sichern Sie eine oder mehrere vollständige Datenbanken
  • mysqldump -u [Benutzername] -p [Kennwort] [andere Optionen] --all -abases> dumpFileName.sql /// So sichern Sie den gesamten MySQL-Server

Parameter

Möglichkeit Bewirken
- # Server-Anmeldeoptionen
-h ( --host ) Host (IP-Adresse oder Hostname), zu dem eine Verbindung hergestellt werden soll. Der Standardwert ist localhost ( 127.0.0.1 ). Beispiel: -h localhost
-u ( --user ) MySQL-Benutzer
-p ( --password ) MySQL-Passwort Wichtig : Bei der Verwendung von -p darf zwischen der Option und dem Kennwort kein Leerzeichen stehen. Beispiel: -pMyPassword
- # Dump-Optionen
--add-drop-database Fügen Sie vor jeder CREATE DATABASE Anweisung eine DROP DATABASE CREATE DATABASE Anweisung hinzu. Nützlich, wenn Sie Datenbanken auf dem Server ersetzen möchten.
--add-drop-table Fügen Sie vor jeder CREATE TABLE Anweisung eine DROP TABLE CREATE TABLE Anweisung hinzu. Nützlich, wenn Sie Tabellen auf dem Server ersetzen möchten.
--no-create-db Unterdrücken Sie die CREATE DATABASE Anweisungen im Speicherauszug. Dies ist nützlich, wenn Sie sicher sind, dass die Datenbank (en), die Sie sichern, bereits auf dem Server vorhanden sind, auf den Sie die Sicherung laden.
-t ( --no-create-info ) Unterdrückt alle CREATE TABLE Anweisungen im Speicherauszug. Dies ist nützlich, wenn Sie nur die Daten aus den Tabellen sichern möchten und die Sicherungsdatei verwenden, um identische Tabellen in einer anderen Datenbank / einem anderen Server aufzufüllen.
-d ( --no-data ) Schreiben Sie keine Tabelleninformationen. Dadurch werden nur die CREATE TABLE Anweisungen CREATE TABLE . Nützlich zum Erstellen von "Template" -Datenbanken
-R ( --routines ) Fügen Sie gespeicherte Prozeduren / Funktionen in den Speicherauszug ein.
-K ( --disable-keys ) Deaktivieren Sie die Schlüssel für jede Tabelle, bevor Sie die Daten einfügen, und aktivieren Sie die Schlüssel, nachdem die Daten eingefügt wurden. Dies beschleunigt das Einfügen nur in MyISAM-Tabellen mit nicht eindeutigen Indizes.

Bemerkungen

Die Ausgabe einer mysqldump ist eine leicht kommentierte Datei, die sequenzielle SQL-Anweisungen enthält, die mit der Version der MySQL-Dienstprogramme kompatibel sind, mit der sie erstellt wurde (wobei der Kompatibilität mit früheren Versionen Rechnung getragen wurde, jedoch keine Garantie für zukünftige Versionen). Daher umfasst die Wiederherstellung einer Datenbank mysqldump ed die Ausführung dieser Anweisungen. Im Allgemeinen diese Datei

  • DROP die erste angegebene Tabelle oder Ansicht
  • CREATE diese Tabelle oder Ansicht
  • Für Tabellen, die mit Daten --no-data werden (dh ohne die Option --no-data )
    • LOCK der Tisch
    • INSERT alle Zeilen der ursprünglichen Tabelle in einer Anweisung
  • UNLOCK TABLES
  • Wiederholt das Obige für alle anderen Tabellen und Ansichten
  • DROP die erste enthaltene Routine
  • CREATE diese Routine
  • Wiederholt das gleiche für alle anderen Routinen

Das Vorhandensein von DROP vor CREATE für jede Tabelle bedeutet, dass bei Vorhandensein des Schemas, unabhängig davon, ob es leer ist oder nicht, die Verwendung einer mysqldump Datei für die Wiederherstellung die darin enthaltenen Daten auffüllt oder überschreibt.

Sicherung einer Datenbank oder Tabelle erstellen

Erstellen Sie einen Schnappschuss einer gesamten Datenbank:

mysqldump [options] db_name > filename.sql

Erstellen Sie einen Schnappschuss mehrerer Datenbanken:

mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql

Erstellen Sie eine Momentaufnahme einer oder mehrerer Tabellen:

mysqldump [options] db_name table_name... > filename.sql

Erstellen Sie einen Schnappschuss ohne eine oder mehrere Tabellen:

mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql

Die Dateierweiterung .sql ist eine Frage des Stils. Jede Erweiterung würde funktionieren.

Angabe von Benutzername und Passwort

> mysqldump -u username -p [other options]
Enter password:

Wenn Sie das Kennwort in der Befehlszeile angeben müssen (z. B. in einem Skript), können Sie es nach der Option -p ohne Leerzeichen hinzufügen:

> mysqldump -u username -ppassword [other options]

Wenn Ihr Kennwort Leerzeichen oder Sonderzeichen enthält, denken Sie daran, abhängig von Ihrer Shell / Ihrem System die Escape-Funktion zu verwenden.

Optional ist das erweiterte Formular:

> mysqldump --user=username --password=password [other options]

(Die Angabe des Kennworts in der Befehlszeile ist aus Sicherheitsgründen nicht empfohlen.)

Wiederherstellen einer Sicherung einer Datenbank oder Tabelle

mysql [options] db_name < filename.sql

Beachten Sie, dass:

  • db_name muss eine vorhandene Datenbank sein.
  • Ihr authentifizierter Benutzer verfügt über ausreichende Berechtigungen, um alle Befehle in filename.sql auszuführen.
  • Die Dateierweiterung .sql ist eine Frage des Stils. Jede Erweiterung würde funktionieren.
  • Sie können keinen Tabellennamen angeben, in den geladen werden soll, obwohl Sie einen Namen zum Speichern angeben könnten. Dies muss in filename.sql geschehen.

Alternativ können Sie im MySQL-Befehlszeilentool mithilfe des Befehls source den Befehl wiederherstellen (oder jedes andere Skript ausführen):

source filename.sql

oder

\. filename.sql

mysqldump von einem Remote-Server mit Komprimierung

--compress Option --compress an mysqldump , um die Komprimierung über das --compress für eine schnellere Übertragung zu verwenden. Beispiel:

mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql

Wichtig: Wenn Sie die Quelldatenbank nicht --lock-tables=false möchten, sollten Sie auch --lock-tables=false . Auf diese Weise erhalten Sie möglicherweise kein intern konsistentes db-Bild.

Um die Datei auch komprimiert zu speichern, können Sie an gzip .

mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz

Wiederherstellen einer gzippten mysqldump -Datei ohne Dekomprimierung

gunzip -c dbname.sql.gz | mysql dbname -u username -p

Hinweis: -c bedeutet, dass die Ausgabe in stdout geschrieben wird.

Backup direkt auf Amazon S3 mit Komprimierung

Wenn Sie eine vollständige Sicherung einer großen MySql-Installation erstellen möchten und nicht über ausreichend lokalen Speicher verfügen, können Sie die Sicherung direkt in einem Amazon S3-Bucket sichern und komprimieren. Es empfiehlt sich auch, dies ohne das DB-Kennwort als Teil des Befehls zu tun:

mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
        --verbose --hex-blob --routines --triggers --all-databases |
    gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz

Sie werden aufgefordert, das Kennwort einzugeben. Danach beginnt die Sicherung.

Übertragen von Daten von einem MySQL-Server zu einem anderen

Wenn Sie eine Datenbank von einem Server auf einen anderen kopieren möchten, haben Sie zwei Möglichkeiten:

Option 1:

  1. Speichern Sie die Sicherungsdatei auf dem Quellserver
  2. Kopieren Sie die Dump-Datei auf Ihren Zielserver
  3. Laden Sie die Dump-Datei in Ihren Zielserver

Auf dem Quellserver:

mysqldump [options] > dump.sql

Kopieren Sie auf dem Zielserver die Sicherungsdatei und führen Sie Folgendes aus:

mysql [options] < dump.sql

Option 2:

Wenn der Zielserver eine Verbindung zum Hostserver herstellen kann, können Sie die Datenbank mithilfe einer Pipeline von einem Server auf den anderen kopieren:

Auf dem Zielserver

mysqldump [options to connect to the source server] | mysql [options]

In ähnlicher Weise kann das Skript auf dem Quellserver ausgeführt werden und an das Ziel weiterleiten. In beiden Fällen ist es wahrscheinlich wesentlich schneller als Option 1.

Sicherungsdatenbank mit gespeicherten Prozeduren und Funktionen

Standardmäßig gespeicherte Prozeduren und Funktionen oder nicht von mysqldump generiert, müssen Sie den Parameter --routines (oder -R ) hinzufügen:

mysqldump -u username -p -R db_name > dump.sql

Bei der Verwendung von --routines die Erstellung und Änderung Zeitstempel werden nicht beibehalten, sondern sollten Sie den Inhalt entleeren und neu zu laden mysql.proc .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow