W przypadku mniejszych projektów nadal robimy coś podobnego do obecnej procedury, ponieważ blokujemy instancję na żywo, aby czytać tylko poprzez blokowanie wszystkich użytkowników z prawami do edycji, niż zrzucanie bazy danych, przesyłanie jej do instancji stage, wykonywanie wszystkich aktualizacji potrzebujemy tego, a kiedy już jesteśmy zadowoleni z wyników, przełączamy instancję sceny, aby stać się kolejną wersją na żywo. Ale nawet w małych przypadkach jest to bolesne i dalekie od dobrego rozwiązania.
W dwóch większych projektach jesteśmy w tej samej łodzi, co Jeremy, ponieważ cała konfiguracja jest skomplikowana, jeśli chodzi o wdrażanie kompletnych zrzutów bazy danych, zwłaszcza, że nie możemy pozwolić na zablokowanie instancji tylko w trybie tylko do odczytu dla niektórych aktualizacje.
W pewnym zakresie użyliśmy do pewnego stopnia Migraine (patrz także this related discussion). Nie jest to moduł Drupala, ale skrypt Pythona, który dostosowaliśmy nieco do naszych potrzeb. Ma on na celu stworzenie nieco uporządkowanych zrzutu, oddzielając dostarczone przez użytkownika treści od ustawień i innych rzeczy, umożliwiając w ten sposób bardziej selektywną aktualizację i strategie etapowania. Jednak biorąc pod uwagę mniej lub bardziej chaotyczną strukturę bazy danych Drupal (szczególnie brak referencyjnej kontroli integralności), stosowanie tego podejścia wymaga ciągłego modyfikowania przy dodawaniu nowych modułów i jest dość ryzykowne, ponieważ trzeba mieć pewność, że dump/update only spójne zestawy tabele.
Staramy się zminimalizować potrzebę "hurtowych" operacji zrzutu/aktualizacji za pomocą funkcji aktualizacji naszych niestandardowych modułów i lubię sugestię Jeremy'ego Frencha dodania modułu "dummy" tylko po to, aby dodać funkcje aktualizacji dla innych ustawienia!
Podsumowując, aktualizacja/migracja wystąpień Drupala jest teraz dużym problemem i mam nadzieję, że w przyszłych wersjach pojawi się bardziej spójne rozwiązanie, chociaż widzę, że trudno jest opracować uogólnione podejście, biorąc pod uwagę aktualny schemat bazy danych i ilość niestandardowych modułów z poszczególnymi dodatkami tam:/
PS: Backup and Migrate jest moduł Drupal, który zdaje się podejście podobne do tego skryptu migrena, ale nie zostały wykorzystane jeszcze.
+1 - Dobry pomysł, aby użyć modułu "dummy", aby umożliwić niestandardowe funkcje aktualizacji. –
@Jeremy: Uważam, że twoje podejście jest bardzo interesujące, biorąc pod uwagę, że moduł funkcji nie działa dla wszystkich rzeczy. Ale zastanawiam się, jak możesz napisać udpate kod dla wszystkich rzeczy, które robisz jako administrator Druapl. Na przykład włączam wszystkie moduły związane z tłumaczeniami/ustawieniami regionalnymi, a następnie tworzę przetłumaczone wersje elementów menu we wszystkich moich menu. Gdzie chciałbyś się dowiedzieć, jaki kod pisać w funkcjach aktualizacji? –