Frosch trägt Aktenstapel
Datenbanken

MySQL Datenbank klonen

by Viktor Garske on July 9, 2018, 11:10 a.m., with 1 comments
Bei der Softwareentwicklung ist es manchmal nötig, zum Testen von z.B. Migrationen die Datenbank eines Livesystems zu klonen, d.h. diese an eine andere Stelle zu kopieren. Dieser Artikel erklärt, wie das geht.

Unter MySQL und Linux ist das Vorhaben mit einem sehr einfachen Kommando möglich:

DB auf anderen Host klonen

mysqldump --add-drop-table --no-create-db --databases dbname1 -uDBUSER1 -pPASSWORD1 -h 192.168.100.1 | mysql -h 192.168.100.2 -uDBUSER2 -pPASSWORD2 dbname1

Der Kern des Kommandos ist relativ einfach und einleuchtend: erst wird ein mysqldump erstellt, der per Pipe sofort in eine SQL-Shell geleitet wird. Konkret kommt es auch auf die Optionen an, die je nach Anwendungsfall angepasst werden müssen. So habe ich in diesem Beispiel auf dem Zielhost (192.168.100.2) die Datenbank bereits (ohne weitere Tabellen) erstellt und bestimmte Rechte den Benutzern zugewiesen. Deswegen nutze ich die Option --no-create-db. Damit unter dem Szenario aber die Tabellen sauber gelöscht werden, wird --add-drop-table benötigt. Die konkrete Befehlsreferenz (insb. für die Optionen) lässt sich in der MariaDB-Dokumentation einsehen.

Hinweis: die Option -h wird nur benötigt, wenn auf einem anderen Host gearbeitet werden soll. Die beispielhaft gewählten Adressen müssen dann entsprechend angepasst werden.

Knackpunkt bei dieser Variante ist, dass die geklonte Datenbank den gleichen Datenbanknamen trägt (deswegen macht dies nur bei zwei Hosts Sinn).

DB auf gleichen Host klonen

mysqldump --add-drop-table --no-create-db --databases dbname1 -uDBUSER1 -pPASSWORD1 -h 127.0.0.1 | sed --expression='s/dbname1/dbname2/g' | mysql -h 127.0.0.1 -uDBUSER2 -pPASSWORD2 dbname2

Um der geklonten Datenbank einen anderen Namen zu geben, kann sich an einem Trick bedient und der mysqldump noch einmal durch sed geschoben werden, um den Datenbanknamen auszutauschen.

Tags:
Author image
Viktor Garske

Viktor Garske ist der Hauptautor des Blogs und schreibt gerne über Technologie, Panorama sowie Tipps & Tricks.

Comments (1)

Comments are not enabled for this entry.

Danke, ich wollte meine Wordpress-Datenbank klonen! // habe deine Seite in Google gefunden :)