Mit mysqldump lassen sich Datenbanken schnell sichern, wie folgende Beispiele und Erläuterungen zeigen.
Mit mysqldump lassen sich alle Datenbanken, einige Datenbanken oder bestimmte Tabellen einer Datenbank sichern. Alle Befehle werden standardmäßig mit der Option opt ausgeführt.
Dies ist z.B. vor einem MySQL-Upgrade äußerst sinnvoll. Allgemeiner Aufruf:
mysqldump [Optionen] --all-databases [Optionen]
Konkretes (sinnvolles) Beispiel zum Sichern aller Datenbanken mit mysqldump:
mysqldump -u root -p --all-databases --result-file=dbdata.sql
Zunächst wird man aufgefordert, das Kennwort des Datenbank-Benutzers(!) root anzugeben. Danach wird die Tabellenstruktur und der Inhalt aller Datenbanken d in die Datei dbdata.sql geschrieben.
Achtung: Das beinhaltet auch die Datenbank mysql mit allen Benutzerdaten. Beim zurück spielen des Backups wird diese Tabelle komplett überschrieben.
Häufig ist es sinnvoll nur bestimmte oder nur eine Datenbank komplett zu sichern. Für den Befehl muss nur eine Option geändert werden. Allgemein:
mysqldump [Optionen] --databases [Optionen] DB1 [DB2 DB3...]
Will man den kompletten Inhalt der Datenbank db1 sichern, so bedeutet dies:
mysqldump -u root -p --databases db1 --result-file=dbdata.sql
Die Schreibweise
mysqldump -u root -p db1 --result-file=dbdata2.sqlschreibt auch Daten und Struktur in die Datei dbdata2.sql. Der Unterschied ist, dass mit der Option "--databases" tatsächlich die gesamte Datenbank gesichert wird, während im zweiten Fall nur alle Tabellen der Datnabnk db1 in dbdata2.sql geschrieben werden.
In dbdata.sql stehen zwei zusätzliche Zeilen: eine existierende Datenbank db1 würde zunächst gelöscht, dann neu angelegt und zuletzt als aktive Datenbank ausgewählt. In dbdata2.sql stehen nur Befehle zum Anlegen der Tabellen-Struktur. Vorm Zurückspielen des Backups muss eine Datenbank als aktive mit use db1; ausgewählt werden.
Für den Inhalt mehrerer Datenbanken db1 db2 db3 gilt entsprechend:
mysqldump -u root -p --databases db1 db2 db3 --result-file=dbdata.sql
Auch hier gilt, dass beim Ausführen des mysqldump Befehls nach dem Kennwort des Datenbankbenutzers root gefragt wird.
Für ein Backup eher nicht zu empfehlen. Sinnvoll mag dies vielleicht zu einem Übertrag von Benutzerdaten dienen. Allgemein lassen sich einzelne Tabellen Datenbanken mit dem folgende mysqldump Befehl sichern:
mysqldump [Optionen] DB1 [Tabellen]
Als sinnvolles Beispiel dient die Benutzerdatenbank mysql von MySQL. Die Tabellen db und user sollen gesichert werden:
mysqldump -u root -p mysql db user --result-file=dbdata.sql
Auch hier gilt wieder: Erst Passwortabfrage, dann die Ausführung des mysqldump Befehls.
Für die Datensicherung, bzw. das Erstellen eines Backups ist der Tabellentyp (z.B. MyIsam grundsätzlich nicht von Bedeutung.
Nachteil von mysqldump: timestamps werden auf den aktuellen Stand gebracht. Der Einfachheit hatte ich timestamp benutzt, um daraus das Datum der letzten Änderung für Webseiten zu generieren. Nach einem dump hatten alle das Datum des Dumps.