Magento Development Workflow: jak „kontrolować źródła” baz danych i aktualizować instalację Magento na żywo z testowej instalacji Magento?

17

Zadaję to pytanie, ponieważ chciałbym wiedzieć, jaki jest najlepszy przepływ pracy programistycznej dla kogoś, kto chce zarządzać wszystkimi aspektami sklepu internetowego.

Oczywiście, podobnie jak w przypadku całego tworzenia stron internetowych, posiadanie kopii na żywo i co najmniej jednej kopii programowej całego oprogramowania jest oczywiście bardzo ważne. Jednak zarządzanie rzeczami Magento nie jest podobne do zarządzania innym oprogramowaniem opartym na plikach, ponieważ istnieje również komponent bazy danych, który wchodzi w grę, więc poza tym, że mogę używać narzędzia takiego jak Git jako narzędzia VCS do kontroli źródła, w jaki sposób Czy zajmuję się zarządzaniem różnicami w bazie danych między wersją na żywo a wersjami programistycznymi?

Mógłbym oczywiście tworzyć kopie zapasowe bazy danych na żywo za pośrednictwem crona i wstawiać instrukcje SQL INSERT z kopii zapasowej do kontroli źródła, ale potem dwie bazy danych ewoluują osobno, podczas gdy klienci rejestrują i składają zamówienia z jednej strony, które trafiają do bazy danych na żywo, i ponieważ aktualizacje są wprowadzane do bazy danych programowania oddzielnie. Jeśli chodzi o łączenie wersji rozwojowych i wersji na żywo, pliki php można bez problemu aktualizować za pomocą git (używając gitignore na jednym pliku, który udostępnia szczegóły konfiguracji bazy danych), ale co z plikami bazy danych? Jak mogę połączyć dwa pliki zawierające instrukcje INSERT SQL z dwóch kopii zapasowych bez powodowania awarii i zniszczenia systemu?

To jest zacieniony obszar cyklu życia Magento, przed którym stoję: zarządzanie różnicami w bazach danych.

Wydaje mi się, że jedynym rozwiązaniem do synchronizacji zawartości bazy danych, która różni się między wersją programistyczną / testową a wersją na żywo sklepu Magento, jest zapisanie na kartce papieru wszystkich zmian dokonanych w wersji programistycznej za pośrednictwem panelu administracyjnego Magento, i mam nadzieję, że nie popełnisz żadnych błędów, a potem, gdy wszystko zostanie przetestowane i zadziała, przejdzie do wersji na żywo i dokona tych samych zmian, gdy Magento zostanie wyłączony i przejdzie w tryb konserwacji. Ponieważ jest to proces ręczny, jest podatny na błędy.

Więc jaki jest lepszy sposób obsługi synchronizacji baz danych między testowym serwerem Magento a serwerem Live Magento?

Dzięki.

John Sonderson
źródło
2
do konfiguracji: github.com/punkstar/mageconfigsync
B00MER

Odpowiedzi:

3

Opcje, które znam

1.) Ręcznie - innymi słowy powtarzanie działań ręcznie w back-endie = jak już wspomniałeś podatne na błędy, powoli

2.) Na poziomie bazy danych z bezpośrednimi zapytaniami SQL = podatne na błędy

3.) Utwórz rozszerzenie, które dodaje, wprowadza zmiany za pomocą skryptów instalacyjnych / aktualizacyjnych SQL. Te pliki są częścią repozytorium i można je wdrożyć. Takie podejście omija interfejs użytkownika.

4.) Trwają prace nad uprzyjemnieniem części tego przepływu pracy w projektach takich jak ten , ale myślę, że nie jest on jeszcze w pełni gotowy na najlepszy czas.

Spośród wszystkich tych opcji obecnie preferuję 3.)

Kristof w Fooman
źródło
Tak, ja też faworyzuję 3. Kto by nie Ponieważ jednak 3 jest jedyną realną opcją i na razie nie jest stabilna, pominę wszystkie sugestie i po prostu przeprowadzę testy w celu zrozumienia, jak interfejs użytkownika działa na serwerze lokalnym, i przeprowadzę cały katalog produktów oraz produkty i inne aktualizacje bezpośrednio na serwerze na żywo, być może wyłączając go na jakiś czas lub lepiej, po prostu uważając, aby produkty były aktywne, gdy są gotowe, ponieważ i tak będę musiał być ostrożny, dlaczego nie być ostrożnym w w ten sposób, który i tak może zadać najmniej obrażeń z 1 i 2. Dzięki
John Sonderson
3.) jest stabilny, powtarzalny i oparty na plikach - wadą jest to, że wymaga więcej pracy, aby skonfigurować.
Kristof at Fooman
1

Istnieje program magów, który może rozwiązać ten problem.

Fabian Blechschmidt
źródło
Na razie nikt w mageploy nie zaktualizował swojej strony internetowej. Nadal stwierdza, że ​​dotyczy to tylko Magento 1.7.0.2
Max
1

Istnieją narzędzia baz danych, takie jak Toad Quest Software (obecnie Dell) dla MySQL. To narzędzie do zarządzania bazami danych ma funkcje porównywania danych i struktur, których można użyć, aby zobaczyć zmiany między dwiema bazami danych. Po prostu przechowuj kopie zapasowe (lub git commits) wersji bazy danych, które chcesz porównać, i voila. Istnieje nawet generator skryptów do synchronizacji obu.

Aaron Dake
źródło
1

Rozwiązaliśmy ten problem, tworząc zdalną bazę danych dla lokalnych i tymczasowych zmian do odczytu / zapisu. Naprawdę pomaga w czasie i wydajności; koniec klonowania, przesyłanie bazy danych do środowiska każdego.

Nam Bui
źródło