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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.