Migracja danych z Magento 1 do Magento 2

Magento – migracja danych

Dziś zajmiemy się trudniejszym tematem. A mianowicie migracją danych i ustawień z Magento 1 do Magento 2.
Aby zacząć proces migracji, wpierw należy zainstalować odpowiednie narzędzie. Jest nim Data Migration Tool.
Zanim jednak to zrobisz, zrób najpierw kopię zapasową bazy danych oraz folderu z instalacją Magento.
Uruchom terminal i za pomocą poniższego polecenia zainstaluj narzędzie:

composer require magento/data-migration-tool:2.3.4

Zauważ, że na końcu dopisałem 2.3.4. Wersja narzędzia Data Migration Tool musi być identyczna, jak wersja Magento, którego używasz. Sprawdź wersję za pomocą:

 bin/magento --version

W moim przypadku jest to 2.3.4 więc taką wersję narzędzia instaluję.

Sprawdź teraz katalog vendor/magento-data-migration-tool.  W nim odnajdź katalog etc, następnie opensource-to-opensource  (ten katalog mówi nam, że dokonujemy migracji z wersji open-sourcowej na open-sourcową.  Teraz widać wiele katalogów z numerami. To wersje Magento z których można dokonać migracji. Dowiedz się, z jakiej wersji sklepu będziesz robił migrację. Robi się to, jak zapewne pamiętasz,  za pomocą bin/magento –version.  W moim przypadku jest to wersja 1.9.2.4.

Zrób kopię pliku config.xml.dist a następnie zmień jego nazwę usuwając .dist. W ten sposób nazwa pliku to config.xml. Teraz weźmy się za jego edycję.

Edycja pliku config.xml

Odnajdź ten zapis:
name=”magento1″ 
to nazwa bazy danych „starego” Magento. Jest ona osadzona w <source> czyli jest bazą źródłową.
Jeśli nie masz jeszcze kopii „starej” bazy , wykonaj eksport do pliku .sql a następnie skopiuj ją obok swojej obecnej bazy.
Dla naszych potrzeb nazwijmy „starą bazę” baza_1, a tę nową baza_2.
Mamy zatem baza_1 która jest wypełniona rekordami z Magento 1, oraz baza_2 która jest bazą używaną przez Magento 2.

Wróćmy do pliku config.xml.
Znamy nazwę bazy źródłowej <source>, znamy też nazwę bazy docelowej <destination>.
Następną sprawą jest nazwa użytkownika. Upewnij się, że ją znasz, u nas niech będzie to root.
Jeśli w ten sposób zapisalibyśmy zmiany, migracja nie udałaby się. A to dlatego, że nie podaliśmy hasła do bazy danych.
Upewnij się, że znasz nazwę użytkownika oraz hasło dla baza_1 oraz baza_2

<source>
<database host=”localhost” name=”baza_1″ user=”root” password=”hasło123″ />
</source>
<destination> <database host=”localhost” name=”baza_2″ user=”root” password=”hasło321″ />
</destination>

Za pierwszym razem, gdy uruchomisz proces migracji, zobaczysz dużo błędów typu: „Source fields not mapped”, „Destination fields not mapped.”, „Source documents not mapped”.
Aby pozbyć się tych błędów czy raczej ostrzeżeń, dodaj <ignore> w pliku config.xml  dla pól, które są kłopotliwe. I tak np. jeśli pojawi się błąd „Source fields not mapped. Document: sales_flat_order_address. Fields: giftregistry_item_id”, dodaj taki wpis:

<ignore> <field>sales_flat_order_address.giftregistry_item_id</field> </ignore>

w sekcji

<source> <field_rules>

Więcej na ten temat znajdziesz tu
https://oyenetwork.com/articles/data-migration-to-magento2-case-study/

Uruchom teraz proces migracji za pomocą polecenia

bin/magento migrate:data --reset vendor/magento/data-migration-tool/etc/opensource-to-opensource/1.9.2.4/config.xml

Argument reset powoduje, że w momencie, gdy migracja zostanie przerwana przez błąd, kolejna próba tejże migracji zacznie się od początku a nie od momentu, w którym została przerwana przez błąd.

Możesz też zastosować argument auto, dzięki któremu gdyby pojawił się błąd integralności danych, proces migracji będzie kontynuowany.