klawischnigg: Migration von Mysql-Datenbanken von Server zu Server

Hi there,

ich hab irgendwo in meinem Netzwerk noch eine unter Windows laufende XAMPP-Installation herumstehen. Ich möchte die Kiste eigentlich abdrehen und die darauf liegenden Daten auf einen der bestehenden Linux-Server übersiedeln (bei "Daten" geht es nur um das Document-Root des Apachen).

Das für sich betrachtet ist ja eher trivial, leider liegen da auch noch sehr viele Mysql-Datenbanken auf diesem Gerät und ich wollte fragen, ob jemand eine Möglichkeit kennt, diese Datenbanken so einfach wie möglich ebenfalls zu "übersiedeln" (als ohne SQL-Dump über Server1->Export und Server2->Import). Ich hab's mit schlichtem Kopieren der Datenbankdirectories und -Files nach /var/lib/mysql auf dem Linux-Server probiert, aber das hat (erwartungsgemäß) natürlich nicht funktioniert (wär' ja auch viel zu einfach).

Gibts dazu irgendeinen Trick? Falls nein, muß ich mir halt irgendwelche CMD-Line-Batches zusammenstoppeln, wär' auch kein Beinbruch, aber wenn sich's irgendwie vermeiden ließe...;)

akzeptierte Antworten

  1. Tach!

    ... eine Möglichkeit kennt, diese Datenbanken so einfach wie möglich ebenfalls zu "übersiedeln" (als ohne SQL-Dump über Server1->Export und Server2->Import). Ich hab's mit schlichtem Kopieren der Datenbankdirectories und -Files nach /var/lib/mysql auf dem Linux-Server probiert, aber das hat (erwartungsgemäß) natürlich nicht funktioniert (wär' ja auch viel zu einfach).

    Also von einem Linux-System zu einem anderen geht das üblicherweise problemlos. Voraussetzung ist nur, dass die Server nicht laufen. Und die mysql-Datenbank sollte man auslassen. Es reicht auch nicht, nur die Verzeichnisse der Datenbanken zu kopieren, im übergeordneten liegen auch noch Dateien, die benötigt werden.

    Wenn das Dateien-Kopieren nicht klappt, bist du mit einem Dump schneller, als nach anderen Lösungen zu suchen. Kommandozeilentools sind dabei auch schneller als der phpMyAdmin beispielswweise. Zudem ist es sicherer bei versionsbedingten Unterschieden.

    dedlfix.

    1. Hi there,

      Wenn das Dateien-Kopieren nicht klappt, bist du mit einem Dump schneller, als nach anderen Lösungen zu suchen. Kommandozeilentools sind dabei auch schneller als der phpMyAdmin beispielswweise. Zudem ist es sicherer bei versionsbedingten Unterschieden.

      Das wird mühsam, ich hab's befürchtet - danke anyway...

      1. Tach!

        Das wird mühsam, ich hab's befürchtet - danke anyway...

        Find ich nicht, denn mit dem CLI-Tool mysqldump geht das Exportieren doch in einem Schritt. Oder in wenigen mehreren, wenn du Datenbanken einzeln oder in Gruppen dumpen möchtest. Das Importieren über mysql < dumpfile (zuzüglich Credentials) ist auch nicht aufwendiger.

        dedlfix.

  2. Das binäre Kopieren des Verzeichnisses /var/lib/mysql klappt (grob gesagt) dann, wenn beide Server entweder MySQL oder MariaDB (also gleich) sind und die Version der Quelle nicht älter ist als die Vorgänger-Hauptversion des Zielsystems.

    In dem Fall kann die neuere Datenbanksoftware den binären Kram so „umrödeln“, dass es „passt“. Du solltest aber vorher den Inhalt von /var/lib/mysql auf dem neuen Server löschen. Nicht dass da eine Marker-Datei herumliegt, bei deren Existenz angenommen wird, dass die Daten zur aktuellen Version passen… (solche werden beim „umrödeln“ angelegt und deren Existenz wird vermieden/verhindert, dass der Server die Dateien bei jedem Start auf die Notwendigkeit dieses Upgrades prüft. (Ich hab hier z.B. eine Datei „debian-10.5.flag“, sowas darf nicht mit kopiert werden.)

    Achte darauf, dass die Server gestoppt sind und auch auf die Dateisystemrechte, genauer die Besitzer/Gruppen der Dateien und Verzeichnisse. Das wird gern vergessen. (bis auf die „debian-10.5.flag“ gehören alle Dateien und Verzeichnisse dem User mysql und der Gruppe mysql.

    1. Hi there,

      Das binäre Kopieren des Verzeichnisses /var/lib/mysql klappt (grob gesagt) dann, wenn beide Server entweder MySQL oder MariaDB (also gleich) sind und die Version der Quelle nicht älter ist als die Vorgänger-Hauptversion des Zielsystems.

      Bereits diese Voraussetzung ist leider sowas von nicht erfüllt, es liegen sicher mehr als 10 Jahre zwischen beiden Versionen. Ausserdem sind die DBs vom XAMPP-Server überwiegend im MyISAM-Format, während ich auf den Linux-Kisten seit Jahren nur mehr InnoDB verwende (was jetzt nicht soo tragisch wäre, afaik kann ja MySQL mit mehreren Formaten umgehen)

      Achte darauf, dass die Server gestoppt sind und auch auf die Dateisystemrechte, genauer die Besitzer/Gruppen der Dateien und Verzeichnisse. Das wird gern vergessen. (bis auf die „debian-10.5.flag“ gehören alle Dateien und Verzeichnisse dem User mysql und der Gruppe mysql.

      Ich werd' das über Dumps lösen, eine Batch-Datei auf dem Windows-Rechner und eine Bash auf dem Linux-Hobel. Irgendwie wird's schon gehen, ist ohnehin nix Akutes sondern eher hehren Archiviergedanken geschuldet...

      1. Ich werd' das über Dumps lösen,

        Ich hatte schon gesehen, dass Du den so lautenden Vorschlag von dedlfix als Lösung markiert hattest, wollte die Voraussetzungen für die binäre Übertragung aber für die suchmaschinenbenutzende „Nachwelt“ in verständliche Worte fassen.