Linux Server kopieren – Datenbank
Als Webentwickler arbeitet man ständig mit Linux. Meistens ist einem nicht bewusst, beispielsweise wenn man lediglich einen FTP Zugang benutzt und sich weiter keine Gedanken über den Server macht. Es kann jedoch vorkommen, dass man direkten Kontakt mit den Betriebssystem hat. Ein solches Beispiel wäre der Umzug von einem Server zu einem anderen. Viele Hoster bieten dafür automatisierte Techniken ein, sehr oft muss man das aber manuell machen, vor allem dann, wenn es schnell gehen muss.
Einen Linux Server kopieren
Die Überschrift mag etwas übertrieben klingen, da in der Regel nicht wirklich ein kompletter Linux Server kopiert wird. Kunden geben aber meist genau so einen Auftrag: „Können Sie bitte meinen alten Server auf den neuen Server kopieren“ – oder so ähnlich. Die meisten Webseiten beziehungsweise Webapplikationen die dann kopiert werden müssen sind nach dem LAMP Konzept aufgebaut. Das bedeutet: auf einem Linux Server läuft ein Webserver (meistens Apache) und eine Datenbank (meistens MySQL) und der Source Code ist in einer Skriptsprache hinterlegt (meistens PHP). Tatsächlich können die einzelnen Bestandteile auch anders sein. Statt PHP könnte der Source Code in Python vorliegen, als Datenbank könnte PostgreSQL zum Einsatz kommen, als Webserver Nginx oder es kann auch das Betriebssystem ein anderes sein. Wie die einzelnen Teile auch ausgeprägt sein mögen, beim Kopieren ist mir das relativ egal.
Was muss kopiert werden?
Was man genau kopieren muss ist dank dem LAMP Prinzip recht einfach erklärt:
- Datenbestand
Das ist zum einen die Datenbank die der Webapplikation zugrunde liegt. Tatsächlich können das natürlich auch mehrere Datenbanken sein, das wäre aber unüblich. Zusätzlich dazu kommen noch Daten die per FTP bereitstehen, das sind in der Regel Bilder, Textdateien, PDFs usw. Diese liegen normalerweise in der Ordnerstruktur die über FTP erreichbar ist zusammen mit den Skript-Dateien. Diese Daten werden zusammen mit den Skripten kopiert. - Source Code
Der Source Code liegt im FTP zugänglichen Bereich und teilt sich in der Regel die Ordnerstruktur mit operativen Daten wie Bilder, Textdateien usw. Diese kann man gemeinsam kopieren. - Einstellungen
Die Einstellungen vom Webserver, vom Betriebssystem oder der Skriptsprache sollten nach Möglichkeit auch übernommen werden.
Datenbestand kopieren
Das Wichtigste bei jedem Server ist der Datenbestand (einzige Ausnahme davon ist der Entwicklungsserver, bei dem der Source Code wichtiger ist). Deshalb wird dieser beim Server kopieren in der Regel auch als erstes kopiert und auch am öftesten durch Backups gesichert. MySQL bietet dafür sehr einfache und mächtige Kommando an.
Datenbank Dump manuell über ssh erstellen
mysqldump –opt -p -u username databasename > db.sql
In diesem Beispiel ist „username“ der Benutzer und „databasename“ der Name der Datenbank. Diese sollte man nach eigenem Bedarf austauschen! Erstellt wird eine Datei mit dem Namen db.sql erstellt. In dieser Version wird man nach dem Passwort gefragt. Alternativ kann man das Passwort auch direkt im Kommando angeben zB so:
mysqldump –opt -poPW5H3PHUd6wnW5W -u username databasename > db.sql
Wichtig: das Passwort muss direkt nach dem Parameter stehen OHNE Leerzeichen dazwischen.
Vor dem Überspielen des Dumps macht es Sinn diesen zu packen. Das geht unter Linux zB so:
gzip db.sql
Datenbank Dump manuell über ssh einspielen
Nachdem man den oben erzeugten Dump auf den anderen Server kopiert hat (idealerweise über scp) muss man den Dump noch in einer Datenbank spielen. Dazu muss man im 1. Schritt die gepackte Datei entpacken:
gunzip db.sql.gz
Eingespielt kann das Dump mit folgendem Befehl werden:
mysql -h localhost -u username -p databasename < db.sql
Je nach Größe der Datenbank kann das schon mal mehrere Minuten dauern. Bei sehr großen Datenbanken eines Livesystems (im Gigabyte Bereich) kann das auch schon mal eine halbe Stunde dauern. Solange man jedoch keine Fehlermeldung zurückbekommt führt geduldiges Warten hier eigentlich immer ans Ziel!
Fazit
Einen LAMP Server kann man dank des modularen Aufbaus recht einfach kopieren. Beim Server kopieren kopiert man die Datenbank und die Programmdaten separat. In diesem Artikel habe ich den Kopiervorgang einer MySQL Datenbank näher beschrieben. Sollte ein anderes Datenbanksystem eingesetzt werden wie etwa PostgreSQL, Oracle DB oder Microsoft SQL Server so unterscheidet sich die Vorgangsweise nicht. Lediglich die Kommandos die man ausführen muss sind durch die in der jeweiligen Dokumentation ersichtlichen zu ersetzen.
Im nächsten Teil widme ich ganz den restlichen Daten die noch kopiert werden müssen (Source Code und Datenbestand wie Bilder usw.).