MySQL
Sichern Sie mit mysqldump
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:
- Speichern Sie die Sicherungsdatei auf dem Quellserver
- Kopieren Sie die Dump-Datei auf Ihren Zielserver
- 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
.