Datenbank-Backup erstellen und Datenbank-Backup wieder einspielen

Heute erkläre ich wie man eine Datenbank von einem zum anderen Server transferiert bzw. wie man ein Datenbank-Backup erstellen und dieses wieder einspielt.

Datenbank-Backup erstellen

Variante #1: Konsole

Damit man ein Datenbank-Backup über die Konsole erstellen kann, muss man sich zunächst per SSH auf dem Server anmelden.

ssh benutzer@serveradresse

Anschließend braucht man nur einen einzigen Befehl um das Backup der DB anzulegen:

mysqldump -u *benutzername* -p *datenbankname* > /pfad/mysql_backup.sql

Wer möchte kann das Backup dann noch komprimieren, damit die Datei schneller übertragen wird:

tar cfz mysql_backup.sql.tar.gz mysql_backup.sql

Zum Schluss kann die Datei noch heruntergeladen werden oder – wenn das Backup auf einen anderem Server eingespielt werden soll – auch direkt auf den Ziel-Server:

scp benutzer@serveradresse:/pfad/mysql_backup.sql.tar.gz  mysql_backup.sql.tar.gz
scp mysql_backup.sql.tar.gz benutzer@serveradresse2:/anderer/pfad/mysql_backup.sql.tar.gz

Ersteres erfordert natürlich, dass zuvor die SSH-Verbindung wieder getrennt wird.

Variante #2: phpMyAdmin

Diese Variante ist wesentlich einfacher als über die Konsole,  aufgrund der schlechten Geschwindigkeit für größere Datenbanken allerdings weniger geeignet. Alles was gebraucht wird, ist über phpMyAdmin die Datenbank auszuwählen, auf den Reiter Exportieren zu klicken und folgende Einstellungen zu wählen:

  • Häkchen bei Kommentare entfernen
  • Senden anhaken
  • Als Kompression GZip wählen

PhpMyAdmin bietet die Datenbank anschließend als Download an.
Die Export-Datei muss jetzt noch auf den anderen Server hochgeladen werden. Siehe dazu die Befehle am Ende von Variante #1.

Datenbank-Backup einspielen

Um das DB-Backup wieder einzuspielen, muss man sich auch hier wieder Konsolen-Zugriff auf dem Zielsystem haben (z.B. per SSH). Doch bevor wir das Backup einspielen sollte in erst ein Backup der alten Datenbank angelegt werden (man weiß ja nie).

mysqldump -u *benutzername* -p *datenbankname* > /pfad/mysql_backup_orig.sql

Jetzt muss die Backup-Datei natürlich noch dekomprimiert werden:

tar xfz mysql_backup.sql.tar.gz

Achtung: Wenn ein komprimierter PhpMyAdmin-Export eingespielt werden soll, lautet der Befehl zum Dekomprimieren (Dateiendung .sql.gz):

gunzip mysql_backup.sql.gz

Und jetzt noch der finale Befehl zum Einspielen des Backups:

mysql -u *benutzername* -p *datenbankname* < mysql_backup.sql

Nach der Passworteingabe ist das Backup fertig eingespielt.

Warum nicht per phpMyAdmin?

Jetzt fragen sich natürlich einige zu Recht, warum soll ich das Datenbank-Backup nicht wieder über phpMyAdmin einspielen?
Wenn die Datenbank recht klein ist, macht das durchaus Sinn, weil es so natürlich komfortabler und schneller geht, aber sobald man größere Datenbanken bewegen muss, ist die Konsole die wesentlich performantere und sichere Variante. Der PHP-Interpreter und der HTTP-Upload verlangsamen den Import über phpMyAdmin ungemein.

MySQL GUI Tools

Heute möchte ich mal ein kostenloses, aber sehr mächtiges Tool vorstellen, das ich zwar schon etwas länger kenne, aber noch nie wirklich benutzt habe. Es geht um die MySQL GUI Tools, die aus insgesamt 3 Programmen besteht. So lassen sich alle MySQL-Server komplett mit grafischer Oberfläche administrieren, ohne dabei auf die Kommandozeilenebene zugreifen zu müssen.
Jetzt gehen wir aber erstmal kurz die drei Tools durch. Noch ein Hinweis: Die Tools können bestimmt noch mehr als das, was ich hier beschreibe, aber ich konnte mich auch noch nicht mit allen Funktionen vertraut machen. Probiert sie einfach mal selbst aus. Ihr könnt mir danach gerne berichten.

MySQL Administrator

Mit diesem Tool lassen sich Basis-Einstellungen an einem MySQL-Server vornehmen. Es gibt eine Benutzerverwaltung sowie Backup-Funktionen für einzelne Datenbanken.

MySQL Migration Toolkit

Wegen dieses Features bin ich auf die MySQL GUI Tools überhaupt erst gestoßen. Das Programm konvertiert nicht nur die gängigsten Datenbankformate in MySQL, sondern kann auch ganze Datenbanken zwischen verschiedenen Server austauschen. Man muss also kein SQL-Dump mehr erstellen, sondern es geht alles automatisch von statten.
Dazu kommen die Konvertierungs-Funktionen. So lässt sich zum Beispiel bequem von Oracle nach MySQL, MS SQL nach MySQL oder Sybase nach MySQL konvertieren. Und selbst bei großen Datenmengen geht es relativ schnell.

MySQL Query Browser

Jeder, der sich schonmal mit phpMyAdmin rumgeärgert hat, wird mit diesem Tool seine Freude haben. Der Query Browser besitzt viele Funktionen von phpMyAdmin, dafür aber in der gewohnten Windows-Oberfläche und ganz ohne Browser. Für Server ohne PHP also genau das richtige.

Im Grunde umfasst das Paket alles, was man zur Verwaltung von MySQL braucht, ist aber komplett kostenlos und offiziell auf mysql.com downloadbar. Für PHP-Entwickler dürfte zwar nur das Migration Toolkit interessant sein (phpMyAdmin kann noch ein bisschen mehr als die anderen beiden Tools), trotzdem sollte man es sich mal ansehen.
Ich frage mich sowieso, warum dieses Paket noch nicht so weit verbreitet ist…