Zum Inhalt springen

mysqldump

Aus Foxwiki
Die 5 zuletzt angesehenen Seiten:  a2disconf » Roundcube » Mxtoolbox » BIND9/TMP » 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

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 ..
  • VALUES
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
  1. Der Name des Datenbankbenutzers
  2. 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:

  1. mysqldump-Befehl
  2. Datenbankbenutzer
  3. Datenbankpasswort
  4. Datenbankname
  5. Weiterleiten der Ausgabe
  6. 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
  1. Ö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

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/
  1. 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

  1. https://mariadb.com/kb/en/legacy-clients-and-utilities/+