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.
źródło
Odpowiedzi:
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.)
źródło
Istnieje program magów, który może rozwiązać ten problem.
źródło
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.
źródło
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.
źródło