MySQL Datenbank von Server 1 zu Server 2 per SSH Terminal übertragen

Aus HOSTING-STATION55 - Webhosting Wiki / FAQ
Zur Navigation springen Zur Suche springen

Eine Datenbankmigration zwischen zwei Servern sollte nachvollziehbar und prüfbar erfolgen. Der sichere Standardweg besteht aus Export, verschlüsselter Übertragung, Prüfsumme, Import und anschließendem Anwendungstest.

Direkte Einzeiler mit Datenbankpasswörtern in der Befehlszeile sind ungeeignet: Passwörter können in Prozesslisten, Shell-Historien und Protokollen sichtbar werden. Auch eine SSH-Anmeldung als root ist für eine normale Datenbankmigration nicht erforderlich.

Voraussetzungen

  • SSH-Zugang mit administrativem Benutzer auf beiden Servern
  • Datenbankzugänge für Quell- und Zielsystem
  • genügend Speicherplatz auf beiden Servern
  • kompatible MariaDB-/MySQL-Versionen, Zeichensätze und Kollationen
  • aktuelles Backup des Zielsystems
  • Wartungsfenster oder eine klar geplante Umschaltung, damit nach dem Export keine Änderungen verloren gehen

1. Datenbank auf dem Quellserver exportieren

umask 077
mariadb-dump --user=QUELL_BENUTZER --password --single-transaction --quick --databases QUELL_DB > QUELL_DB.sql
test -s QUELL_DB.sql && sha256sum QUELL_DB.sql

Bei Oracle MySQL verwenden Sie mysqldump. Notieren Sie die ausgegebene SHA-256-Prüfsumme.

2. Dump verschlüsselt übertragen

Übertragen Sie die Datei per SCP mit einem normalen administrativen SSH-Benutzer:

scp QUELL_DB.sql admin@ziel.example.net:/srv/migration/

Das Zielverzeichnis muss bereits existieren und darf nicht öffentlich über einen Webserver erreichbar sein.

3. Prüfsumme auf dem Zielserver vergleichen

sha256sum /srv/migration/QUELL_DB.sql

Der Wert muss exakt mit der Prüfsumme des Quellservers übereinstimmen. Bei einer Abweichung darf die Datei nicht importiert werden.

4. Ziel sichern und Dump importieren

Erstellen Sie unmittelbar vor dem Import ein Backup der vorhandenen Zieldatenbank. Importieren Sie erst danach:

mariadb --user=ZIEL_BENUTZER --password ZIEL_DB < /srv/migration/QUELL_DB.sql

Verwenden Sie bei Oracle MySQL den Client mysql.

5. Anwendung prüfen und umschalten

  1. Prüfen Sie den Exit-Code des Imports mit echo $?.
  2. Kontrollieren Sie Tabellenanzahl und stichprobenartig wichtige Datensätze.
  3. Aktualisieren Sie die Anwendungskonfiguration nur, wenn Hostname, Datenbankname oder Benutzer sich ändern.
  4. Testen Sie Lesen und Schreiben mit der Anwendung.
  5. Schalten Sie DNS oder Anwendung erst nach erfolgreicher Prüfung um.
  6. Bewahren Sie das vorherige System bis zum Ende des vereinbarten Rückfallzeitraums unverändert auf.

Wichtige Hinweise

  • Die Option --single-transaction schützt nur transaktionale Tabellen wie InnoDB zuverlässig vor inkonsistenten Zwischenständen.
  • Bei einer aktiven Anwendung können Änderungen nach dem Dump fehlen. Nutzen Sie ein Wartungsfenster, Read-only-Modus oder ein professionelles Replikationsverfahren.
  • Löschen Sie die übertragenen Dumps erst, wenn Migration und Backup geprüft sind. Schützen Sie sie bis dahin mit restriktiven Dateirechten.
  • Große oder geschäftskritische Datenbanken sollten nicht mit einem spontanen Pipeline-Einzeiler migriert werden.