MySQL Backup
Beschreibung: Wir erklären anhand verschiedener Tools wie ein Datenbank-Backup gemacht wird.
Kategorie: Server, PHP und MySQL
Link zu diesem Artikel: Alles auswählen
[url=https://www.phpbb.de/kb/viewarticle?a=58&sid=1e01793b1b6f9ba4b3df70c4bbf24c06]Knowledge Base - MySQL Backup[/url]
Die MySQL Datenbank speichert alle Informationen des Forums und sollte daher regelmäßig gesichert werden. Zum einen IMMER bevor man MODs einbaut oder sonstige Sachen am Forum verändert, zum anderen in regelmäßigen Abständen zum sichern der Benutzer und Beiträge.
Übersicht über die verschiedenen Möglichkeiten
Es gibt zum Sichern der Datenbank viele Möglichkeiten, die unterschiedliche Vor- und Nachteile haben:- phpBB Administrations-Bereich (PHP, Freeware, Bestandteil vom phpBB)
Die Backupfunktion im Administrations-Bereich des phpBBs ist gut, wenn das Forum klein und MOD-frei ist. Bei größeren Datenbanken kann es jedoch sein, dass das Backup mit dieser Funktion nicht mehr korrekt funktioniert. Wenn MODs eingebaut wurden, die neue Tabellen in die DB einfügen, müssen diese manuell hinzugefügt werden. Ausserdem muss man immer ein funktionsfähiges Forum haben um dort ein Backup zu erstellen oder zurückzuspielen.
Mehr Infos im Benutzerhandbuch (derzeit leider nur auf englisch):
Database backup and restore für 3.1
Database backup and restore für 3.2 - phpMyAdmin (PHP, Frontend, Freeware)
PhpMyAdmin ist das wohl am weitesten verbreitetste Frontend für MySQL Datenbanken. Es eignet sich sehr gut für Datenbanken bis ca. 2 MB, danach versagt die Rückspiel-Funktion. Auf langsamen Servern kann es auch sein, dass das PHP-Script vom Server abgebrochen wird. Evtuell hilft es große Tabellen einzeln zu sichern.
Mehr Infos: Backup mit phpMyAdmin - MySqlDump (Hersteller: MySQL), (PHP, Befehl, Teil von MySQL)
MySQL hat auch eine eigene Funktion um Backups zu machen. Diese Funktion ist wohl die beste und schnellste verfügbare Funktion überhaupt. Jedoch erlauben lange nicht alle Hoster den Zugriff für Kunden auf die Funktion. Bei einigen Hostern darf man nur per "Confix" auf diese Art ein Backup machen, bei anderen ist der direkte Zugriff per system() Befehl erlaubt.
Mehr Infos: Backup mit mysqldump - BigDump (Nur einspielen von Backups, PHP, Tool, Freeware)
Wer mit PhpMyAdmin ein Backup gemacht hat und es aufgrund der 2 MB Grenze nicht einspielen kann, kann dieses mit BigDump machen. BigDump ist sehr schnell und kommt auch mit sehr großen Datenbanken zurecht.
Mehr Infos: Backup mit BigDump - HeidiSQL (Windows, Frontend, Freeware)
HeidiSQL ist der Nachfolger von einer alten MySqlFront -Version. Es ist ein Desktopprogramm für Windows 32 [Win95b bis WinXP]. Der große Vorteil ist, dass es nicht auf PHP Basiert und somit kein (z.B.) 30 Sekunden Timeout hat. Mit HeidiSQL lassen sich auch sehr große Datenbanken einspielen und bBackupen. Jedoch benötigt man externen MySQL Zugriff. Freehoster bieten das meistens nicht an, größtere Hoster oft auf Nachfrage.
Mehr Infos: http://www.heidisql.com
Windows/Linux/PHP – Beschreibt, worauf das Backup-Programm/Script lauffähig ist
Freeware – Das Programm/Script ist kostenlos
Shareware – Das Programm/Script kann kostenlos getestet werden, muss danach aber bezahlt werden
Frontend – Es ist ein komplettes MySQL-Frontend, zum Zugriff auf die Datenbank. Es kann also mehr als nur ein Backup erstellen
Tool/Befehl – Es handelt sich nur um ein Backuptool oder Backupspcript, welches ausschließlich für Backups geschrieben wurde.
Detailanleitungen für die einzelnen Backuparten
Backup mit phpMyAdmin
Siehe auch: phpMyAdmin InstallationsanleitungBackup erstellen
- rechter Frame: oben bei den Registerkarten "Exportieren" anklicken
- sämtliche Tabellen markieren (oder die, die gesichert werden sollen)
- Struktur und Daten auswählen
- 'Drop Table' markieren
- Senden ("ZIP" bzw. "gzip" auswählen, wenn Backup komprimiert werden soll) ankreuzen, wenn man den Dump herunterladen möchte
- auf OK drücken
- rechter Frame: oben bei den Registerkarten "SQL" anklicken
- mit dem "Durchsuchen" Button das Backup (*.sql) auf der Festplatte suchen
- eventuell "gzip-komprimiert" auswählen
- auf OK drücken
Legende
- Nur Struktur
- nur Tabellenstrukur (Tabellen und Felder) wird gespeichert - Struktur und Daten
- Tabellenstrukur mit samt Inhalt (Einträge) werden gespeichert - Nur Daten
- nur Inhalt der Tabellen wird gespeichert - Ins XML-Format exportieren
- LaTeX
- Package mit Makros zur Textverarbeitung - Mit 'Drop Table'
- Befehl zum Löschen der Tabellen, wenn diese bereits existieren, wird eingefügt - Vollständige 'INSERT's
- Feldnamen werden in jede INSERT-Zeile eingetragen (vergrössert das Backup geringfügig) - Erweiterte 'INSERT's
- INSERT-Befehl und Tabellenname werden nur einmalig pro Tabelle notiert (verringert das Backup geringfügig) - Tabellen- und Feldnamen in einfachen Anführungszeichen
- Felder- und Tabellennamen werden mit ` umschlossen und dadurch als solche definiert - Senden
- wird dies nicht ausgewählt, wird der Dump direkt im Browser dargestellt (online ab einer gewissen Grösse nicht ratsam)
- wenn man das Backup herunterladen will, kann man zusätzlich noch auswählen, ob das Backup ZIP- oder gzip-komprimiert werden soll
Backup mit mysqldump
mysqldump ist ein Kommandozeilentool und sollte wenn möglich per SSH ausgeführt werden. Für ein Backup führt man folgenden Befehl aus:Code: Alles auswählen
mysqldump -uUSERNAME -p -hHOSTNAME DATENBANKNAME > dump.sql
Für die Wiederherstellung führt man folgenden Befehl aus:
Code: Alles auswählen
mysql -uUSERNAME -p -hHOSTNAME DATENBANKNAME < dump.sql
Falls man keinen SSH-Zugang hat, muss man sich mit einer Notlösung behelfen: Ein Verzeichnis anlegen, welches die Rechte 777 besitzt. Dort eine PHP-Datei folgenden Inhalts anlegen:
Code: Alles auswählen
<?php
system("/usr/bin/mysqldump -uUSERNAME -pPASSWORT -hHOSTNAME DATENBANKNAME > /VOLLER_PFAD/dump.sql", $fp);
if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";
?>
Das Script für die Wiederherstellung sieht so aus
Code: Alles auswählen
<?php
system("/usr/bin/mysql -uUSERNAME -pPASSWORT -h Ihr.Datenbank.Server.de DATENBANKNAME < /VOLLER_PFAD/dump.sql", $fp);
if ($fp==0) echo "Daten importiert"; else echo "Es ist ein Fehler aufgetreten";
?>
![Lächeln :)](./../community/images/smilies/icon_e_smile.gif)
Um herauszufinden, wie der VOLLE PFAD lautet, folgendes in eine pfad.php kopieren und (im /dump Ordner) auf dem Server ausführen:
Code: Alles auswählen
<?php echo dirname(__FILE__); ?>
Falls der Provider externen Zugriff auf die MySQL-Datenbank erlaubt (nur selten der Fall), kann man sich auch lokal einen MySQL-Client installieren und die Befehle dann auf dem eigenen Rechner ausführen. Hierbei muss man beachten, dass der Hostname dann nicht mehr "localhost" sein darf und man unter Windows andere Pfade verwenden muss (C:\Programme\MySQL\[Pfad zur installierten MySQL-Version]\bin\mysqldump.exe anstatt /usr/bin/mysqldump).
Tipp: Backup komprimieren
Man kann das Backup auch mit gzip Komprimieren. Hier die Befehle:
Backup:
Code: Alles auswählen
/usr/bin/mysqldump -uUSERNAME -pPASSWORT -hHOSTNAME DATENBANKNAME | gzip > DATEI.gz
Code: Alles auswählen
/usr/bin/gunzip < DATEI.gz | /usr/bin/mysql -uUSERNAME -pPASSWORT -hHOSTNAME DATENBANKNAME
Backup mit BigDump
Zuerst müsst ihr euch Bigdump von Alexey Ozerov runterladen: https://www.ozerov.de/bigdump/usage/Die ZIP-Datei müsst ihr z.B. mit WinZIP oder WinRAR entpacken. Ihr erhaltet dann die Datei "bigdump.php", die ihr mit einem Editor eurer Wahl öffnet. Folgende Zeilen in der "bigdump.php" müsst ihr anpassen:
Code: Alles auswählen
$db_server="localhost";
Code: Alles auswählen
$db_name="DB-Name";
Code: Alles auswählen
$db_username="DB-User";
Code: Alles auswählen
$db_password="DB-Passwort";
Code: Alles auswählen
$filename="namedersqldatei.sql";
Fall 2: Ihr könnt auch einfach nur die "" stehen lassen. Alle möglichen Backupdateien, die im gleichen Verzeichnis wie Bigdump liegen, werden dann von Bigdump eingelesen. Wenn ihr Bigdump dann aufruft könnt ihr entweder eine dieser Backupdateien auswählen oder eine neue Backupdatei hochladen. Jedoch müsst ihr dann für das Verzeichnis noch die richtigen Berechtigungen setzen (chmod 777).
Bigdump unterstützt in beiden Fällen auch gzip-komprimierte Backupdateien (Dateiendung .gz). Dies ist für euch nützlich wenn ihr noch ein Modem, ISDN, usw. verwendet oder euer Webspace für eine unkomprimierte Backupdatei zu klein ist. Durch die gzip-Komprimierung ist die Größe der Backupdatei wesentlich geringer.
Code: Alles auswählen
$linespersession=3000;
Code: Alles auswählen
$delaypersession=0;
Jetzt müsst ihr eure Änderungen in der "bigdump.php" abspeichern und die Datei auf euren Webspace hochladen z.B. in das Verzeichnis "dump". Wenn ihr euch für den Fall 1 entschieden habt, dann müsst ihr jetzt eure Backupdatei hochladen.
Wenn ihr alles hochgeladen habt, dann ruft ihr die "bigdump.php" in eurem Browser auf (z.B. http://www.deinedomain.de/dump/bigdump.php).
Habt ihr den Dateinamen der Backupdatei in der "bigdump.php" angegeben, dann müsst ihr nur noch auf "Start Import" klicken. Wenn ihr euch vorher für den 2. Fall entschieden habt, dann müsst ihr jetzt eure Backupdatei, die ihr importieren wollt, in der Liste suchen und auf "Start Import" klicken. Ist eure Backupdatei noch nicht auf eurem Webspace, dann klickt auf den Button "Durchsuchen...", wählt eure Backupdatei aus und klickt auf "Upload". Die Backupdatei steht nun in der Liste und ihr müsst nur noch auf "Start Import" klicken.
Der Import wurde erfolgreich abgeschlossen, wenn "Congratulations: End of file reached, assuming OK" angezeigt wird. Zum Schluss solltet ihr noch die Backupdatei und "bigdump.php" auf eurem Webspace löschen.