Hallo zusammen,
ich bin dabei mit dem Migrationsassistent einen Shopware 5.7.18 Shop auf Shopware 6.5.8.7 zu migrieren. Das Migrations-Tool hat auch soweit (größtenteils) funktioniert.
Möchte ich nun aber die letzten Bestellungen und neue Produkte und neue Kunden aus dem SW 5 Shop migrieren, indem ich nochmal die Migration anstoße, hängt sich der Migrations-Assistent ständig auf und pausiert, kann danach aber nicht wieder aktiviert werden, wenn ich auf „Fortsetzen“ klicke. Die Internetverbindung ist stabil. Der Fehler beschäftigt mich nun schon seit einiger Zeit.
Ich habe da mehrmals schon in der SW6 DB unter „swag migration run“ die dann nicht weiterlaufende Migration von „running“ auf „aborted“ über die Datenbank gesetzt. Auch der Reset der Prüfsummen hat den Fehler nicht beseitigen können.
Ebenfalls ist in der SW6 Datenbank nun „swag_migration_mapping“ wirklich groß geworden mit fast 10 Millionen Einträgen und 5,2 GB. Wie kann ich diese Datenmenge dort reduzieren?
Das Löschen von Migrationsdaten aus Migrations-Assistent > Historie hilft in dem Fall beispielsweise nicht weiter.
Die Migration von SW5 auf SW6 ist schon ein besonderes Erlebnis. Hier hätte ich mir zu Beginn von Shopware etwas mehr Hilfe erwartet.
Nun ja, derartige Abbrüche können leider viele Faktoren sein. So pauschal kann man keine Antwort geben. Alles hängt auch mit der Größe vom Quellshop ab. Für die Migration ist es schon wichtig, sind es 5.000 Kunden oder 600.000? Hier spielen Speicherplatz auch eine Rolle, ebenso die Einstellungen der Datenbanken. Leider muss ich auch feststellen, das große Datenbanken mit MariaDB arge Probleme bei der Migration bereiten obwohl Shopware sogar MariaDB als Systemvorrausetzung schreibt. Wichtig sind auch Buffergrößen und Laufzeiten bei den Datenbankeinstellungen. Hier kann man nichts pauschales schreiben, weil jedes System so unterschiedlich ist.
Gar nicht, denn das Mapping ist sehr wichtig. Wenn die Migration abgeschlossen ist (also wenn wirklich alles sauber migriert wurde und der SW6 Shop online gehen kann) wird diese Databelle gelöscht. Bis data ist das völlig normal!
Hallo @R4M , besten Dank für deine schnelle Antwort.
Da waren schon ein paar interessante Stichwörter dabei. Auf unserem momentanen Server läuft MariaDB 10.6.16 für den SW5 und die neue SW6 Installation. Ich habe gesehen, dass bei SW6 MariaDB 10.6.16 nicht explizit empfohlen wird im Gegensatz zu zB. 10.11. - Hast du ggf. einen Tipp bezüglich der genaueren MariaDB Version?
Ganz ehrlich, mein Tipp wäre auf MariaDB ganz zu verzichten. MySQL 8 ist für Shopware 6 besser geeignet. Ich habe leider schlechte Erfahrung mit MariaDB im Zusammenhang mit Migration machen müssen.
generell empfehlen wir die Migration via CLI im Prod-Modus, da per Admin lange Query-Laufzeiten oder ähnliches zu Timeouts führen kann und im Prod-Modus der Symfony-Profiler nicht mitläuft, dadurch läuft die Migration schneller und stabiler.
Vielleicht hilft dir das schon, dass deine Migration durchläuft, bei 5k Kunden und Produkten, sollte die Migration nicht so lange dauern. Generell ist es meist auch ganz gut, vor der Migration in SW5 aufzuräumen, also braucht man die inaktiven Produkte noch und müssen alle Kunden migriert werden etc.
Wie vorher schon erwähnt ist das Mapping wichtig und wird benötigt, dass die Datensätze nicht doppelt angelegt werden. Das Löschen der Historie bewirkt nur, dass die Tabelle swag_migration_logging verringert wird. Die Tabelle swag_migration_mapping sollte niemals geleert werden, weil sonst die Zuordnung von alter zur neuen ID verloren geht und somit doppelte Datensätze entstehen.
Leider musste ich die Erfahrung machen, dass selbst mit CLI die Migration mit einer MariaDB stehen blieb. Zusammen mit dem Shopware Support haben wir viele Tage verbracht um das Rätsel zu lösen. Habe mehrmals sogar mit Shopware telefoniert. Am Ende lag es an MariaDB.
Die Fehlersuche war ätzend. Denn es gab keinen Hinweis, keine Fehlermeldung, einfach nichts. Alle Daten wurden aus dem Quellsystem korrekt erfasst und ins Mapping geholt. Und erst beim Schreiben der Daten in die SW6 DB stoppte der Prozess bzw. blieb einfach stehen. 2 Tage stand „run“ als Status in der DB. In der DB konnte ich nur noch sehen, dass es beim Schreiben der Kundendaten offensichtlich abgebrochen hat, denn hier kamen immer noch ca. 50% an, der Rest fehlte komplett.
So cool wie die Migration von Shopware vermittelt wird, ist es bei vielen Fällen leider nicht! Schon gar nicht, wenn das Quellsystem schon ein paar Jahre existiert und sich in der Zwischenzeit viele Dinge im Shop verändert haben.
Hey Leute!
Bei mir hat die Migration auch abgebrochen wegen Memory Limit. Hab jetzt alles erhöht und würde den Prozess gerne wieder fortsetzen. Aber wie mache ich das?
Wenn ich noch einmal „php bin/console migration:migrate products“ eingebe, steht dort „Another migration is currently running.“
Gibt es einen Befehl, mit dem ich die Migration über die Konsole wieder anstoßen kann, oder muss ich wieder ganz von vorne anfangen?
Die aktive Migration muss erst beendet bzw. abgebrochen werden. Solange wie eine Migration läuft, kann man keine neue starten. Weder übers Backend noch über Konsole.
In die DB Tabelle „swag_migration_run“ gehen und bei der letzten Migration in Spalte „status“ das „run“ mit „aborted“ tauschen. Dann kann eine weitere Migration stattfinden. Aber! Woher wirklich genau prüfen, ob die Migration tatsächlich noch läuft (MySQL Prozesse anschauen) oder nicht. Im schlimmsten Falle auch die MySQL Prozesse beenden.