Es gibt zur Datensicherung der MySQL Datenbank prinzipiell zwei unterschiedliche Wege
- Sicherung der eigentlichen Dateien, die sogenannte Hotcopy
Vorteil: Schnelle, sichere Datensicherung
Nachteil: Die Datenbank muss (sollte) während dessen abgeschaltet werden. - Sicherung durch Herstellen eines sogenannten dumps. Dies stellt sicherlich den klassischen Weg dar, eine Datensicherung vorzunehmen.
Vorteil: Sehr große Portabilität
Nachteil: In der Ausführung relativ langsam
Hotcopy
Zum Anfertigen einer Hotcopy geht man einfach in das entsprechende Verzeichnis wo die eigentlichen Daten der MySQL Datenbank liegen und kopiert sie auf einen anderen Datenträger.
Unter Linux befinden sich die Daten im Verzeichnis: /var/lib/mysql. Für jede Datenbank gibt es hier ein eigenes Verzichnis. Der Zugriff ist nur als root (Administrator) möglich.
In diesem Beispiel gibt es also mehrere Datenbanken namens xa5258_db1, db3, usw.
In einem Datenbanken Verzeichnis gibt es dann für jede angelegte Tabelle eine .frm und eine .MYD, sowie eine .MYI Datei.
In diesem Beispiel ist es ein Ausschnitt aus der Joomla Datenbank
- .frm | Tabellenschema (Tabellentyp, Indizes)
- .myd | MyISAM, Tabellendaten
- .myi | MyISAM, Tabellen-Indizes
Dump
Die Sicherung als dump Datei geht über einen Konsolenbefehl.
Die zu verwendende Syntax sieht so aus:
mysqldump [Optionen] Datenbankname [tables] > backup.sql
Um sich alle Optionen ansehen zu können, also was bedeutet was, gibt man den Befehl mysqldump --help ein. Somit bekommt man eine ganze Liste mit Optionen angezeigt, sowie Hinweise zur Syntax.
Als Beispiel:
mysqldump -u root --password=[Passwort der Datenbank] --opt --all-databases > /mnt/backup/datenbank.sql
- -u oder --user | Benutzername
- -p oder --password | Passwort des Benutzers
- --opt bewirkt dass,
- während der Datensicherung alle Tabellen von anderen user nicht mehr lesbar sind (read lock)
- Die entstehende Sicherungsdatei wird möglichst klein gehalten, indem ein INSERT-Kommando für alle Datensätze der Tabelle eingesetzt wird.
- Es wird ein DROP-TABLE Kommando eingefügt, um bei der Wiederherstellung der Sicherung vorhandene Tabllen überdschreiben zu können.
- Alle Merkmale der Datenbank werden mit gespeichert.
- --all | Benutzt / Erstellt alle MySQL spezifischen Optionen der Datenbank im CREATE-TABLE Kommando an.
- -databases | Speichert mehrere Datenbanken in einer dump Datei
- > /mnt/backup/datenbank.sql | Dateipfad wo die entstehende sql Datei gespeichert werden soll
Um dieses Befehl nicht ständig sich ausdenken und in die Konsole eingeben zu müssen, kann man diese dump Erstellung auch als Batch Datei dauerhaft speichern. Zum Beispiel als backup.sh
#!/bin/bash
mysqldump -u root --password=[Passwort des Datenbankbenutzers] --opt --all-databases > /mnt/backup/datenbank.sql
Zur Wiederherstellung setzt man dann folgenden Befehl ein:
mysql -u root -p [Passwort des Datenbankbenutzers] < /mnt/backup/datenbank.sql


