Artikelformat
27. Mai 2007

MySQL Backup und MySQL Restore

Grundsätzlich gibt es verschiedene Möglichkeiten für ein MySQL Backup und ein MySQL Restore. Auf einem LAMP ist meist zur manuellen Sicherung / Backup der MySQL DB PhpMyAdmin installiert. Die Sicherung / Backup und die Wiederherstellung / Restore erfolgt unter PhpMyAdmin sehr einfach.

Vorgehen zur Sicherung der MySQL-Datenbank:

Anwahl von PhpMyadmin unter http://IhreDomainOderIP/phpmyadmin (unter Debian; kann etwas je nach Distribution in der Groß- und Kleinschreibung verschieden sein)
Benutzername und Passwort eingeben
Auswahl der MySQL-Datenbank in linken Dropdownmenü
Im rechten Frame den Reiter EXPORTIEREN wählen
Unter den Tabellen ALE AUSWÄHLEN anklicken
Das Häkchen bei SENDEN setzen
Einen Namen dem Datenbankbackup geben
Eine Art der Kompression wählen (außer Ihre Datenbank ist recht klein, dann können Sie dies auslassen)
Und mit OK bestätigen
Resultat:
Ein Download erscheint und Ihr MySQL Backup wird herunter geladen.

Vorgehen zum MySQL Restore :

Anwahl von PhpMyadmin unter http://IhreDomainOderIP/phpmyadmin (unter Debian; kann etwas je nach Distribution in der Groß- und Kleinschreibung verschieden sein)
Benutzername und Passwort eingeben
Auswahl der MySQL-Datenbank in linken Dropdownmenu
Im rechten Frame den Reiter SQL wählen
DURCHSUCHEN wählen und DB-Backup lokal auswählen
Bei ZEICHENCODIERUNG DER DATEI LATIN1 oder UTF8 wählen
Und mit OK bestätigen

Probleme bei Mysql Backup oder MySQL Restore?
MySQl Datenbank ist zu groß oder der Vorgang dauert zu lange?

Unter Debian checken und ggf. ändern :
etc/php4/apache2/php.ini
memory_limit
upload_max_filesize

Mysql Backup & MySQL Restore auf der Shell / Konsole ( sog. sqldump oder mysqldump )

MySQL Backup
mysqldump –opt -Q -u dbusername -p databasename > /path/to/backupname.sql

MySQL Restore
mysql -u dbusername -p databasename < /path/to/backupname.sql

Mysql Passwort setzen
/usr/bin/mysqladmin -u root password ‘geheim’

Skript zur automatisierten Erstellung eines mysqldump ( = MySQL Backup )

#!/bin/sh
#Aktuelles Datum für Dateinamen setzen
DATUM=`/bin/date ‘+%Y-%m-%d’`
# Backup Database:
mysqldump –opt -Q -u DATENBANKBENUTZER -B DATENBANK –password=PASSWORT
>/PFAD/ZUM/BACKUP/DB_DATENBANK_vom_$DATUM.sql
# Datenbanken: #ggf. mehrere Male wiederholden für jede DB
mysqldump –opt -Q -u root -B eX_Testumgebung –password=qwertz
> /mnt/hdc/backup_mysql_datenbanken/db_eX_Testumgebung_vom_$DATUM.sql
## Restore: # hier nur aufgeführt zwecks Vollständigkeit
# evt. erstellen der DBs
# mysql -u<BENUTZER> -p<PASSWORT>
# mysql -p mysql>CREATE DATABASE <Datenbank>;
# exit;
# Einspielen:
# mysql -u dbusername -p databasename < /path/to/backupname.sql
## Beachten: bei System- oder Versionswechsel kommt es oft zu Problemen mit Umlauten.

MySQL Backup und MySQL Resote mi dem MySQL-Dumper

Das Problem …
PHP-Scripte werden nach einer bestimmten Laufzeit abgebrochen (i.d.R. nach 30 Sekunden), und somit funktioniert ein MySQL Backup manuell nur bis zu einer bestimmten Größe. Braucht das Script länger als die 30 Sekunden, so wird es vom Server einfach abgebrochen und das Backup ist unvollständig. Gleiches gilt für das Wiedereinspielen eines MySQL Backups.
MySQLDumper umgeht den Timeout-Error mit Hilfe eines kleinen Tricks.

Einige der vielen Funktionen von MYSQLDumper

einfache Sicherung und MySQL Restore
MySQLDumper stellt Backups von Fremdprogrammen dank integriertem Parser wieder her
MySQLDumper beherrscht Multipart-Backup. D.h. bei großen Datenbanken kann das Backup automatisch auf mehrere Dateien verteilt werden (die gewünschte maximale Größe der Teildateien einstellbar!). Bei der Wiederherstellung sucht MySQLDumper automatisch die korrekte erste Teildatei, auch wenn versehentlich eine anderere gewählt wurde!!!
SQL-Browser: Du hast Zugriff auf Deine Tabellen. Du kannst Tabellen löschen, Datensätze editieren oder hinzufügen, SQL-Befehle direkt verarbeiten und auch speichern. Vergleichbar mit PhpMyAdmin bzw. somit der Ersatz.
Datenbankübersicht: Prozesse (mit einstellbarer Aktualisierung, Möglichkeit zum Beenden von Prozessen), Variablen, usw.
Verwaltung der Backup-Dateien
automatisches Löschen veralteter Backups nach selbst definierten Regeln (nach Alter der Datei oder nach Anzahl)
über ein mitgeliefertes Perl-Script lassen sich in Verbindung mit einem eingerichteten Cronjob Backupvorgänge automatisieren

Installation MySQLDumper

Skript herunterladen:
wget http://www.mysqldumper.de/board/download.php?id=399

Skript entpacken in ordner unter /var/www/dumper/ und config anpassen:
weg; user; passwort und auf Datei 777 setzen

Browser install aufrufen:

http://host/dumper/install.php

Erster Start: Konfiguration ftp: aktiviert; ip,user,pass,ordern (testen)
cronskript: endung=cgi pfad=/usr/lib/cgi-bin/ (speziel Debian)
(später müssen sripte hierhin verschoben werden); Backup per ftp senden speichern!

crondump editiern von .pl auf .cgi und pfad zum config-skript angeben
crondump etc. verschieben nach /usr/lib/cgi-bin/

touch /etc/cron.hourly/mysqlBackup
mysqlBackup editiern und Skriptinhalt

#! /bin/sh |
perl /usr/lib/cgi-bin/crondump.cgi config=mysqldumper.conf