MySQL Dump mit praxisnahen Beispielen einfach erklärt

Ein MySQL Dump eignet sich perfekt dafür auf einem UNIX oder Linux System ein MySQL Backup zu erstellen, da keine weitere Software benötigt wird. Doch wie sind die Optionen, die beim mysqldump Befehl angegeben werden müssen? Ich vergesse es auch immer wieder, so dass ich mir hier im Beitrag ein Gedankenstütze baue. Ich bin mir sicher, dass Du auch davon profitieren kannst. In diesem Beitrag findest Du praxisnahe Beispiele für den Aufruf von mysqldump. Solltest Du noch Fragen offen haben, darfst Du mich gern kontaktieren.

Um den Server zu bedienen benötigst Du am besten PuTTY oder Alternativen

mysqldump Export (Datenbanksicherung)

Es gibt drei Möglichkeiten mysqldump aufzurufen:

$> mysqldump [options] db_name [tables]
$> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
$> mysqldump [options] --all-databases

MySQL Dump aller Datenbanken

Folgende mysqldump Zeile speichert alle Datenbanken, die für den User „USER“ freigegeben sind in der Datei my-mysql-dump.sql

mysqldump -uUSER -p --all-databases > my-mysql-dump.sql

MySQL Dump einer speziellen Datenbank

Folgende mysql dump Zeile speichert nur die Datenbank mydatabase1 in der Datei my-mysql-dump.sql – der User „USER“ muss darauf Zugriff haben.

mysqldump -uUSER -p mydatabase1 > my-mysql-dump.sql

Mehrere Datenbanken mit MySQL Dump sichern

Um mehrere, einzelne Datenbanken mit allen Tabellen zu sichern:

mysqldump -uUSER -p 
          --databases db_name1 db_name2 db_name_n > my-mysql-dump.sql

Nur eine einzelne Tabelle einer Datenbank mit MySQL Dump sichern

Wenn Du nur eine einzelne Tabelle table_name aus einer Datenbank database_name sichern willst:

mysqldump -uUser -p mydatabase1 table_name > my-mysql-dump.sql

Die Größe eines MySQL Dump verkleinern

Oft sind MySQL Dumps sehr groß. Meine Sicherungen liegen bspw. im Schnitt bei 3 GB. Das liegt daran, dass MySQL Daten unkomprimiert ablegt. Solltest Du die .sql Daten dann per SFTP oder einem anderen Dienst vom Server bewegen wollen, dann macht es sehr viel Sinn dieses vorher zu komprimieren. Am besten kannst Du dann die sql Datei(en) mit tar.gz packen. Das reduziert bei mir die unkomprimierte Größe von 3GB auf einige wenige hundert MB.

Das kannst Du gleich beim Erstellen des Dumps machen:

mysqldump -uUser -p mydatabase1 table_name | gzip -c > my-mysql-dump.sql.gz

Ein MySQL Dump automatisch per cron-Job ausführen (inkl. gzip packen)

Das was sich ändert: Du musst das Password direkt mit eintragen und Du muss den User uals auch PAsswort mit “ escapen:

mysqldump -u 'User' -p 'Password' mydatabase1 table_name | gzip -c > my-mysql-dump.sql.gz

MySQL Dump Einspielen (Import / Rücksicherung der Datenbank)

Mit PHPMyAdmin lassen sich nur SQLDumps kleiner 2MB wieder in die mySQL Datenbank zurück importieren. Hat meine eine größere Sicherung bekommt man die folgende Fehlermeldung:
„You are not able to import large files (>2MB) via PHPMyAdmin. To do so, you have to import your sql file with the mysql client“

Um dennoch die gesamte Sicherung einfach einzuspielen, muss man den SQL Dump nur per SSH in der Shell wie folgt wieder einspielen:

mysql -uUSER -p mydatabase1 < my-mysql-dump.sql

mysql dump einfach

Autor: Viktor Dite

Veröffentlicht am: 05.07.2018

Letztes Update: 03.12.2018

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


8 Kommentare » Schreibe einen Kommentar

  1. Hallo Viktor
    Ich sitze gerade im unterricht von PHP MySQL beim Herr Wagner.
    und wir versuchen einen lösung mit shell zugriff auf mysql zu erstellen
    Klasse beitrag hat uns geholfen Shell console zu laufen zu bringen.
    MFG

  2. Hallo Viktor

    Ist es nicht einfacher, PHP MyAdmin einzusetzen?

  3. Nein, PHP MyAdmin ist in meinen Augen ein Sicherheitsloch und es kann keine Dumps >2MB wieder einspielen.

  4. Hallo Viktor, kann ich den Dump nicht gleich in eine ZIP oder tag.gz erstellen? Wie sieht dann das Kommando aus? Kann ich das Paket gleich mit einem Kennwort schützen?
    Ich bin auf diese Seite gekommen, weil ich mein Backup per Cron laufen lassen möchte. Dein SEO ist gut, aber jetzt fehlt der Inhalt ;-) Wie lange sollen wir tuned bleiben?

    Ich möchte meine Datenbank, die lokal läuft gerne remote sichern, um ein Backup an einem anderen Ort zu haben und schnell daraufzugreifen zu können. Zielspeicher ist mein Webspace bei meinem Hostinganbieter. Damit die Daten auf dem Weg dorthin und auch dort nicht von unberechtigten gelesen werden können, würde ich gerne eine verschlüsselte Zip einsetzen.
    Danke Dir!
    Gruß Markus

  5. Sorry, hab das Thema etwas vergessen. Habs jetzt angepasst.

  6. Wie man das gzip gleichzeitig verschlüsselt weiß ich leider nicht.

  7. Hallo,
    in PHPmyadmin kann man sehr wohl größere Dateien als 2 MB Importieren. Allerdings muss man dann die php.ini anpassen.
    Die console ist der definitiv bessere und schnellere Web.