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.