Migration einer MySQL Datenbank zu einem neuen Server

Anleitung zum Erstellen von Blogs und Artikeln: Bitte hier klickieren

5c28bd0e0d9c6683113576.png

Hallo,


Dieser Artikel soll euch einen schnellen Weg zeigen, wie Ihr eure MySQL Instance auf einen neuen Server verlagern koennt.


Was wird gebraucht?

MySQL Server auf dem neuen Host (mariadb-server-*)

MySQL Server auf dem alten Host (mariadb-server-*)

Access via shell (ssh oder direkt Konsole)


Zuerst wird auf den alten Host connected und dann der MySQL Server gestoppt. Dann der folgende Code ausgefuehrt:

mysqldump --all-databases --skip-extended-insert --order-by-primary -u root -p > oldserver.sql

Die Kommandozeile wird nach dem MySQL root Password fragen. Nach dem eingeben wird eine Datei erstellt mit Namen "oldserver.sql".


Wenn erledigt, dann kopiere die Datei zum neuen Host und logge dich in die datenbank ein via sudo mysql -u root -p und gib das Passwort ein.

Wenn dann erfolgreich verbunden, nutze das Kommando source um die SQL Datei in die Datei zu "sourcen". Dies importiert die Datenbank in die neue Instanz.

Beispiel: source /home/aebian/oldserver.sql



Achtung: Bitte sicherstellen das die Verbindung zum Server stabil ist, da bei großen Datenbanken der Import sehr lange dauern kann. Alternativ kann tmux verwendet werden um die Verbindung "ab zusichern".

Wenn dann der import erfolgt ist, ist die Datenbank erfolgreich auf dem neuen Host startklar.


Zusatz (by seegras):

Datenbanken mit gzip komprimieren z.B. die Datenbank sehr groß ist.

mysqldump -uUSER -p mydatabase1 | gzip -c > my-mysql-dump.sql.gz

Auf dem Zielserver wird das Archiv dann entweder erst entpackt und dann importiert oder man macht das wieder mit ner Pipe

gzip -c my-mysql-dump.sql.gz | mysql -uUSER -p mydatabase1

Ваш человек еще до того, как вы знаете, что это!
I may look calm. But inside my mind I have killed you 20 times in 5 minutes in 20 different ways.


Kommentare 2

  • Ist die Klammer beim Export nicht falsch herum? :D


    Als kleinen Zusatz könnte man die Datenbank beim Export noch direkt komprimieren was bei großen Datenbanken durchaus nützlich sein kann

    mysqldump -uUSER -p mydatabase1 | gzip -c > my-mysql-dump.sql.gz

    Auf dem Zielserver wird das Archiv dann entweder erst entpackt und dann importiert oder man macht das wieder mit ner Pipe

    gzip -c my-mysql-dump.sql.gz | mysql -uUSER -p mydatabase1

    • Danke, habs oben ergaenzt.