mysqldump
mysqldump - Datenbank Dump einer MySQL erstellen
Beschreibung
Daten aus der Struktur von
- in ein Textformat übertragen
- Die Erstellung einer MySQL-Sicherung ist eine Standardaufgabe für Web- und Systemadministratoren
- mysqldump
mysqldump wird verwendet, um eine Datenbank oder eine Sammlung von Datenbanken für die Sicherung oder Übertragung auf einen anderen Datenbankserver zu entleeren
- MariaDB 10.5
- Seit MariaDB 10.5 heißt der Client mariadb-dump
Er kann weiterhin unter seinem ursprünglichen Namen
mysqldump
über einen Symlink in Linux oder eine alternative Binärdatei in Windows aufgerufen werden
- MariaDB 11.0.1
- mysqldump (der Symlink) ist veraltet
- Verwenden Sie stattdessen mariadb-dump
MySQL-Backup
- Was ist ein MySQL-Backup und wie wird es erstellt?
Ein MySQL-Dump wird zur Erstellung von MySQL-Backups sowie zur „Datenmigration zwischen zwei Datenbanken“ verwendet
- Eine MySQL-Datenbank enthält Daten, die zur Speicheroptimierung und für den Zugriff formatiert wurden
- Die Daten müssen in ein geeignetes Format konvertiert werden, um sie aus der Datenbank extrahieren zu können
Ein SQL-Dump ist eine „‚‘‚reine Textdatei mit SQL-Anweisungen‘‚‘“
- Es gibt mehrere Möglichkeiten, ein MySQL-Backup zu erstellen
- Sie können die Administrationsschnittstelle phpMyAdmin oder ein Backup mit MySQLDumper erstellen verwenden
- Wir werden uns mit der Erstellung eines MySQL-Dumps mit dem Befehlszeilen-Tool mysqldump befassen
Tipp MySQL ist das am häufigsten verwendete relationale Datenbankmanagementsystem
- Postgre ist ein leistungsstarker Konkurrent, der immer beliebter wird
- In einem anderen Artikel erklären wir, wie man ein PostgreSQL-Backup erstellt
Was ist ein MySQL-Dump?
„MySQL-Dump„ hat zwei Bedeutungen:
- Die ‚Exportdatei‘ einer ‚MySQL-Datenbank“
- Das ‘Befehlszeilen-Tool“ zum Erstellen eines Datenbankexports
MySQL-Dump als Exportdatei einer MySQL-Datenbank
Die MySQL-Datenbank organisiert Daten in optimierten Datenstrukturen
- Für allgemeine Daten wird ein B-Baum verwendet und geografische Daten werden in einem R-Baum gespeichert
- Ein Daten-„Dump“ ist der Prozess der Übertragung der Daten aus diesen speziellen Baumstrukturen in eine lineare Darstellung, die als „Dump“ bezeichnet wird
Durch das Dumping der Baumdaten wird eine Textdatei erstellt, die mit herkömmlichen Methoden gespeichert und zwischen Systemen verschoben werden kann
- Dies ist erforderlich, um ein Backup von einer MySQL-Datenbank zu erstellen
- Was genau ist in einem MySQL-Dump enthalten?
Ein MySQL-Dump enthält SQL-Anweisungen, die den Inhalt der Datenbank vor dem Dumping widerspiegeln
- Der Dump kann in eine andere Datenbankinstallation importiert werden
- In diesem Fall werden die SQL-Anweisungen exportiert und die Datenbank Schritt für Schritt neu aufgebaut
- Nach dem Import sollte die Datenbank dieselben Daten in derselben Struktur wie vor dem Dumping enthalten
Der vollständige Prozess von der Erstellung des MySQL-Backups bis zum Import des Dumps ergibt folgendes Schema:
mysql_import(mysql_dump(Datenbank)) == Datenbank
Möglicherweise haben Sie bereits einen MySQL-Dump in einem Code- oder Texteditor geöffnet
- Der Inhalt eines MySQL-Dumps kann zunächst recht kryptisch erscheinen
- Nachfolgend finden Sie eine Übersicht über die am häufigsten vorkommenden SQL-Anweisungen in einem MySQL-Dump:
Anweisung in MySQL-Dump | Erklärung |
---|---|
DROP TABLE IF EXISTS | Vorhandene Tabelle während des Imports entfernen |
CREATE TABLE | Neue Tabelle während des Imports erstellen |
INSERT INTO ..
|
Spalten während des Imports mit Werten füllen |
MySQL-Dump als Tool zum Erstellen eines Datenbankexports
Das mysqldump-Befehlszeilen-Tool wird normalerweise „als Teil des MySQL-Clients oder MySQL-Servers installiert“
- Sie sollten feststellen, ob mysqldump auf dem lokalen System installiert ist, wenn Sie das Tool verwenden möchten
Wir verwenden den folgenden Befehl, um zu überprüfen, wo sich die mysqldump-Binärdaten befinden:
which mysqldump
Der Befehl gibt eine Fehlermeldung zurück, wenn das Tool nicht installiert ist
Verwenden Sie den folgenden Befehl, um die Version der mysqldump-Installation anzuzeigen:
mysqldump --version
So erhalten Sie Hilfe zum Befehl mysqldump:
mysqldump --help
Im Folgenden wird erklärt, wie Sie mit dem Befehl mysqldump eine MySQL-Sicherung erstellen
Tipp
Wenn Ihre MySQL-Installation in einem Docker-Container ausgeführt wird, können Sie MySQL dump innerhalb des Containers verwenden, um ein MySQL-Backup zu erstellen
- Es ist auch möglich, den gesamten Container als Docker-Backup zu speichern
- Anmerkung
Die Frage „Was ist ein Backup?“ beantworten wir im Digital Guide
Anwendungen
Das Erstellen eines MySQL-Backups mit dem mysqldump-Tool erfolgt „über die Befehlszeile“
- Sie müssen sich zunächst über SSH beim Datenbankserver oder Docker-Container anmelden
- Für die Erstellung des MySQL-Backups sind mindestens drei Informationen erforderlich: # Der Name der zu exportierenden Datenbank
- Der Name des Datenbankbenutzers
- Das Passwort des Datenbankbenutzers
Sobald Sie alle drei Informationen haben, können Sie mit der Erstellung des MySQL-Backups beginnen. „‚‘‚Je nach Szenario und Anforderungen werden unterschiedliche Methoden verwendet‘‚‘“
- Wir stellen drei häufig verwendete Ansätze vor
Eingabe des Befehls „mysqldump“ in der Befehlszeile
Erstens kann der Befehl „mysqldump“ manuell in der Befehlszeile eingegeben werden
- Dies ist nützlich, wenn Sie „eine einmalige Sicherung einer Datenbank erstellen“ möchten, z
- B
- um eine WordPress-Installation von einem Server auf einen anderen zu migrieren
Das allgemeine Schema zur Aktivierung des Befehls „mysqldump“ lautet wie folgt:
mysqldump --user=<username> --password=<password> <database> > <path/to/mysql_dump.sql>
Ein „typischer mysqldump-Befehl“ besteht aus diesen sechs Komponenten:
- mysqldump-Befehl
- Datenbankbenutzer
- Datenbankpasswort
- Datenbankname
- Weiterleiten der Ausgabe
- Pfad zur Ausgabedatei
Der „mysqldump-Befehl kann je nach Quelle unterschiedlich geschrieben werden“. „Statt beschreibender Namen wie ‚--user‘ können kürzere Versionen verwendet werden
- Zur Verdeutlichung zeigen wir das folgende Schema
Das folgende mysqldump-Beispiel ist dasselbe wie das bereits vorgestellte:
mysqldump -u<username> -p<password> <database> > <path/to/mysql_dump.sql>
Die Konvertierung der Daten aus der Baumstruktur führt in der Regel zu einer hohen Redundanz der im MySQL-Dump enthaltenen SQL-Anweisungen
- Der „Dump lässt sich leicht komprimieren“, da der MySQL-Dump eine reine Textdatei ist
- Es ist gängige Praxis, die Ausgabe des Befehls „mysqldump“ an das Komprimierungstool „Gzip“ weiterzuleiten
Die folgende Konvention führt zu einer Datei mit der Endung „.sql.gz“:
mysqldump --user=<username> --password=<password> <database> | gzip > <path/to/mysql_dump.sql.gz>
Nachfolgend finden Sie eine Übersicht über die drei Varianten, die häufig im mysqldump-Befehl zum Erstellen einer MySQL-Sicherung vorkommen:
mysqldump call | Database users | Database password | Database name | Output forwarding | Path to the output file | |
Command with descriptive versions | mysqldump | --user=<username> | --password=<password> | <database> | > | <path/to/mysql_dump.sql> |
Befehl mit Kurzversionen | mysqldump | -u<username> | -p<password> | <database> | > | <Pfad/zu/mysql_dump.sql> |
Befehl mit Komprimierung | mysqldump | --user=<Benutzername> | --password=<Passwort> | <Datenbank> | | gzip > | <Pfad/zu/mysql_dump.sql.gz> |
Verwendung der MySQL-Datenbank-Konfigurationsdatei für den Dump
Der Befehl mysqldump kann problemlos in der Befehlszeile ausgeführt werden, allerdings besteht ein Sicherheitsrisiko
- Dies liegt daran, dass das Datenbankkennwort als Teil des mysqldump-Befehls im Klartext übertragen wird
- Alle in der Befehlszeile eingegebenen Befehle werden jedoch standardmäßig in einer speziellen Datei aufgezeichnet
- Daher werden diese sensiblen Daten im Klartext angezeigt, wenn jemand den Befehl „History“ verwendet, um zuvor eingegebene Befehle anzuzeigen
Es ist eine gute Idee, die Daten für den Datenbankzugriff in einer separaten Datei als Variablen zu definieren, um die Datenbank vor unbefugtem Zugriff zu schützen
- Die Datei wird vor dem Aktivieren des Befehls mysqldump eingelesen
- Nur die Variablennamen erscheinen im Verlaufsprotokoll und die tatsächlichen Werte bleiben verborgen
Wir zeigen Ihnen nun, wie Sie eine MySQL-Sicherung mithilfe einer Konfigurationsdatei erstellen
- Kopieren Sie einfach die folgenden Befehle in Ihre Befehlszeile und führen Sie sie aus
- Erstellen Sie zunächst einen Ordner für die MySQL-Dump-Datenbankkonfigurationsdatei unterhalb des Benutzerordners:
mkdir ~/
- mysql-dump/# Schreiben Sie die MySQL-Dump-Datenbankkonfiguration mithilfe des folgenden Codes in eine neue Datei:
cat << EOF > ~/
- mysql-dump/database.conf
DB_NAME= 'your_db_name' DB_USER= 'your_db_user_name' DB_PASS= 'your_db_password' EOF
- Öffnen Sie die Konfigurationsdatei im Nano-Editor und passen Sie die Datenbankzugriffsdaten an:
nano ~/
- mysql-dump/database.conf
Ersetzen Sie die Platzhalter „your_db“ durch Werte, die Ihrer Datenbank entsprechen
- Drücken Sie dann [Strg] + [X], gefolgt von [Y] und [Enter], um die Datei zu schließen und die Änderungen zu speichern
Die Vorbereitung ist nun abgeschlossen und ein MySQL-Backup kann erstellt werden. # Um einen MySQL-Dump zu erstellen, lesen Sie die Konfiguration mit dem Befehl source und führen Sie dann MySQL dump aus:
source ~/
- mysql-dump/database.conf
mysqldump --user=„$DB_USER“ --password=„$DB_PASS“ „$DB_NAME“ > <path/to/mysql_dump.sql>
Tipp
MySQL-Backups, die mit MySQL Dump erstellt wurden, werden normalerweise im Dateisystem des Datenbankservers gespeichert
- Gemäß der 3-2-1-Backup-Regel sollte jedoch mindestens ein Backup in der Cloud gespeichert werden
- Wir erklären wie man ein Server-Backup mit Rsync erstellt
Verwenden eines MySQL-Backup-Skripts
Die bisher vorgestellten Ansätze eignen sich für den schnellen Export einer einzelnen MySQL-Datenbank
- Es ist eine gute Idee, ein MySQL-Backup-Skript für „regelmäßige Backups“ oder für die Erstellung von „MySQL-Backups mehrerer Datenbanken“ zu erstellen
- Dies wird in regelmäßigen Abständen durchgeführt und sichert den Inhalt aller vorhandenen MySQL-Datenbanken wie MySQL-Dumps in einem vordefinierten Ordner
- Durch die Verwendung eines MySQL-Backup-Skripts wird der Backup-Prozess standardisiert und das Fehlerrisiko reduziert
Der letzte Ansatz muss erweitert werden, um das Sicherungsskript zu erstellen
- Erstellen Sie einen zusätzlichen Ordner für MySQL-Sicherungen
- Jede Sicherung wird in einem eigenen Unterordner gespeichert
- Dieser Ordner enthält die MySQL-Dumps der einzelnen Datenbanken
- Es lohnt sich auch, eine Skriptdatei zu erstellen, die den Prozess automatisiert
- Führen Sie die einzelnen Schritte aus, um das MySQL-Sicherungsskript einzurichten: # Erstellen Sie zunächst einen zusätzlichen Ordner für die MySQL-Sicherungen:
mkdir -p ~/.mysql-dump/backups/
- Erstellen Sie anschließend das eigentliche MySQL-Backup-Skript:
cat << EOF > ~/.mysql-dump/backup_databases DB_USER='your_db_user_name' DB_PASS='your_db_password' # Erstellen Sie einen neuen Ordner für das aktuelle Backup backup_dir='./backups/$(date +%F_%H%M)' # Datenbanken ermitteln databases=$(mysql --user=„$DB_USER“ --password=„$DB_PASS“ -Bs --execute 'SHOW DATABASES') # Alle Datenbanken exportieren for database in $databases; do mysqldump --user=„$DB_USER“ --password=„$DB_PASS“ „$database“ > „${backup_dir}/${database}.sql“ done # Löschen Sie die Variablen aus dem Speicher unset DB_USER DB_PASS EOF
Öffnen Sie die Konfigurationsdatei im Nano-Editor und passen Sie die Datenbankzugriffsdaten an:
nano ~/
- mysql-dump/backup_databases
Ersetzen Sie die Platzhalter „your_db“ durch Werte, die zu Ihrer Datenbank passen
- Drücken Sie [Strg] + [X], gefolgt von [Y] und [Enter], um die Datei zu schließen und die Änderungen zu speichern
- Führen Sie das MySQL-Sicherungsskript aus, sobald die Vorbereitungen abgeschlossen sind:
cd ~/
- mysql-dump/ && source backup_databases Testen Sie, ob die Sicherung im letzten Schritt erstellt wurde:
ls -la ~/
- mysql-dump/backups/*
Die Sicherung hat funktioniert, wenn Sie Dateien mit der Erweiterung „.sql“ sehen können
MySQL-Dump in Datenbank importieren
Der Befehl „mysqldump“ wird nur zum Exportieren einer MySQL-Datenbank verwendet. „‚‘'Der Befehl ‚mysql‘ wird zum Importieren eines Dumps benötigt‚‘'
- Wir zeigen das allgemeine Schema unten:
mysql --user=<username> --password=<password> database_name < <path/to/mysql_dump.sql>
Der folgende Befehl kann verwendet werden, wenn eine MySQL-Dump-Datenbankkonfigurationsdatei vorhanden ist:
source ~/
- mysql-dump/database.conf
mysql --user=„$DB_USER“ --password=„$DB_PASS“ „$DB_NAME“ < <path/to/mysql_dump.sql>
Installation
Aufruf
Optionen
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
-1 | --single | Exit as soon as the first advertisement is received (default) |
Parameter
Umgebungsvariablen
Exit-Status
Anwendung
Problembehebung
Konfiguration
Dateien
Anhang
Siehe auch
Dokumentation
- Man-Page
- Info-Page
Links
Projekt
Weblinks