Magento 1.9 Migration

Hallo,

ich muss leider sagen, dass dieses Migrations-Profil für Magento 1.9 nicht wirklich nutzbar ist.

Die Verbindung wird jedes Mal bereits beim Lesen der Daten unterbrochen.

Unser Magento Shop ist bereits älter, entsprechend viele Daten müssen übertragen werden. Gibt es da einen Trick oder so?

LG

Hallo AS_Fabian,

wenn die Verbindung unterbricht, hört sich das im ersten Moment erst einmal nach Problemen beim Server bzw. dessen Einstellungen an. Natürlich ist so eine Migration gerade mit großen Datenmengen Ressourcenintensiv. Vielleicht könntest Du einmal in die Logs schauen, welche Meldungen er bei Dir wegschreibt. Du findest die Logs in der History.

Gruß
Holger

Die Folgende Query liefert 2k Zeilen. Die meisten doppelt. Fehlt hier ggf. ein Distinct?

SELECT
    category.*,
    name.value AS name,
    description.value AS description,
    status.value AS status,
    sibling.entity_id AS previousSiblingId,
    defaultLocale.value AS defaultLocale,
    image.value AS image
FROM
    catalog_category_entity category
LEFT JOIN eav_attribute AS attribute
    ON category.entity_type_id = attribute.entity_type_id
LEFT JOIN catalog_category_entity_varchar AS name
    ON category.entity_id = name.entity_id
    AND name.attribute_id = (SELECT attribute.attribute_id FROM eav_attribute attribute WHERE attribute.`entity_type_id` = category.`entity_type_id` AND attribute.attribute_code = 'name')
    AND name.store_id = 0
LEFT JOIN catalog_category_entity_int AS status
    ON category.entity_id = status.entity_id
    AND status.attribute_id = (SELECT attribute.attribute_id FROM eav_attribute attribute WHERE attribute.`entity_type_id` = category.`entity_type_id` AND attribute.attribute_code = 'is_active')
    AND status.store_id = 0
LEFT JOIN catalog_category_entity_text AS description
    ON category.entity_id = description.entity_id
    AND description.attribute_id = (SELECT attribute.attribute_id FROM eav_attribute attribute WHERE attribute.`entity_type_id` = category.`entity_type_id` AND attribute.attribute_code = 'description')
    AND description.store_id = 0
	 LEFT JOIN catalog_category_entity_varchar AS image
    ON category.entity_id = image.entity_id
    AND image.attribute_id = (SELECT attribute.attribute_id FROM eav_attribute attribute WHERE attribute.`entity_type_id` = category.`entity_type_id` AND attribute.attribute_code = 'image')
    AND image.store_id = 0
LEFT JOIN core_config_data AS defaultLocale
    ON defaultLocale.scope = 'default' AND defaultLocale.path = 'general/locale/code'
LEFT JOIN catalog_category_entity AS sibling
    ON sibling.entity_id = (SELECT previous.entity_id
        FROM (SELECT sub_category.entity_id,
                 sub_category.parent_id,
                 IFNULL(sub_category.position,
                        IFNULL(
                          (SELECT new_position.position + sub_category.entity_id
                           FROM catalog_category_entity new_position
                           WHERE sub_category.parent_id = new_position.parent_id
                           ORDER BY new_position.position DESC
                           LIMIT 1),
                          sub_category.entity_id)) position
            FROM catalog_category_entity sub_category) previous
            WHERE previous.position <
                    IFNULL(category.position,
                        IFNULL(
                          (SELECT previous.position + category.entity_id
                           FROM catalog_category_entity previous
                           WHERE category.parent_id = previous.parent_id
                           ORDER BY previous.position DESC
                           LIMIT 1),
                        category.entity_id)
                    )
                    AND category.parent_id = previous.parent_id
                    ORDER BY previous.position DESC
                    LIMIT 1)
WHERE category.entity_id IN ('363', '364', '365', '366', '367', '368', '369', '370', '371', '372', '373', '377', '378', '379', '380', '381', '382', '383', '384', '385', '386', '387', '388', '389', '390', '391', '392', '393', '394', '396', '398', '399', '400', '401', '402', '403', '404', '405', '406', '407', '408', '409', '410', '411', '412', '413', '414')
ORDER BY level, position;

 

Mit einem Distinct verringert sich die Anzahl der Zeilen von ca. 2k auf 47.

Wir schauen uns das an. Danke für Dein Feedback

https://issues.shopware.com/issues/PT-11244

Kommt ins nächste Release. Sehr wahrscheinlich Anfang nächster Woche

1 „Gefällt mir“

Nach 5h bekomme ich folgende Meldung:

„Die Migration hat den Prozess beendet um einen Datenverlust zu vermeiden. Prüfe die Internetverbindung und starte eine neue Migration.“

Shopware und Magento liegen auf dem selben Server.

Das Lesen beginnt immer recht schnell, wird aber immer und immer langsamer.

Machst du die Migration denn über die Konsole?

Nein direkt im Backend. Ich wüsste auch nicht wie das über die Konsole laufen soll.

 

EDIT:

Habe die Migration über die Console gestartet.

Du kannst es machen wie hier beschrieben:

https://docs.shopware.com/de/migration-de/Migrationsprozess?category=migration-de/shopware5#migration-bei-grossen-datenmengen-ueber-die-konsole

Gibt mehrere Punkte, die man hier wissen müsste.

  • Gibt es Hinweise in der History bzw. in den Logs? 
  • Kannst Du mit Hilfe der Dev Tools sehen was er fetcht während er langsamer wird?
  • Genügend RAM für PHP zur Verfügung in der Umgebung? (also min requirements SW6)
  • Von was für Datenmengen sprechen wir hier?
    • Hab schon echt große Migrationen mit 100.000 en Einträgen gemacht, aber 5 Stunden hab ich noch nie erreicht

Datenmengen sind z.b. Kunden und Bestellungen 1,4m.

Der Server ist nicht mal im Ansatz ausgelastet.

In den Logs steht nichts.
 

Gibt es vielleicht einen Prozess, der andere nach einer bestimmten Laufzeit terminiert? Ich würde mal zusammen mit deinem Hoster sicherstellen, dass dies nicht der Fall ist.

Ich teste das ganz jetzt mal auf der Console. Es geht aufjeden fall schonmal schneller als im Backend.

Es bleibt spannend.

Die Migration ist jetzt ein paar mal durchgelaufen, es kommt aber nichts im Shop an.

 

Was mache ich Falsch?

Hallo Fabian,

was meinst du damit “Es kommt nichts im Shop an” ? Nach der Migration müssen die Indexer laufen. Das passiert im Hintergrund, kannst du aber auch manuell anstoßen über die Console. bin/console dal:refresh:index

Viele Grüße aus Schöppingen

cool Michael Telgmann

Weder Produkte noch irgendwas anderes ist im Shop angekommen.

Also ich habe z.b. die Newsletter-Empfänger migriert.

Aber weder in der Datenbank noch im Shop ist etwas angekommen, obwohl die Migration komplett durchgelaufen ist.

So auch bei den Produkten.

Keine Veränderung.

Ich hatte letzte Woche auch die Migration mal testweise ausprobiert und nach ca. 5 Minuten die Fehlermeldung „Die Migration hat den Prozess beendet um einen Datenverlust zu vermeiden“ bekommen.

In dem Magento Shop sind ca. 100.000 Artikel.

Der /fetch-data Aufruf hat nach 2-3 Minuten länger als 30 Sekunden gedauert und dann hat der timeout aus MigrationApiService gegriffen. Wenn ich den hochgesetzt habe, lief es dann weiter. Aber mit nen paar Produkten alle 30 Sekunden, kommt man da ja nicht weit ;).

Habe leider noch nicht geschafft das weiter zu debuggen. Fühlt sich ein bisschen so an, als wenn die DB nach 2-3 Minuten anfängt auf die Platte auszulagern. Habe ich aber noch nicht weiter verifiziert.

Werde demnächst es auch mal über die Console ausprobieren.

SW6 läuft aktuell über development Template im Docker.

@AS_Fabian‍ Kannst Du mir mal Deinen LOG per PM schicken? Den kannst Du ja herunterladen.

Viele Grüße
Holger

Nach Neuinstallation des Server und Updaten Sämtlicher wichtiger Software gibt es keine Änderung. Die Migration funktioniert nicht.

Er Liest, aber schreibt nicht.