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.