Mam witrynę, która jest na żywo, a ludzie aktywnie zamieszczają treść. Musiałem jednak wprowadzić pewne zmiany w środowisku programistycznym, co zajęło mi kilka tygodni. Zmiany wymagały zainstalowania nowych modułów i usunięcia starych, co oczywiście zmieniło zawartość i strukturę bazy danych.
Moje pytanie brzmi: w jaki sposób mogę przesłać tę stronę z powrotem do środowiska na żywo i zaktualizować bazę danych bez zastępowania nowej zawartości nowymi użytkownikami dodanymi w ciągu ostatnich dwóch tygodni?
Odpowiedzi:
Thomas Zahreddin ma rację. Ale w zależności od tego, co się zmieniło („zajęło mi kilka tygodni ...”), jest więcej rzeczy do rozważenia.
settings.php
.Jeśli nie masz trywialnego przypadku, proponuję wcześniej przetestować procedurę. I oczywiście rób kopie zapasowe plików i danych przed uruchomieniem systemu na żywo. ( Przydaje się tutaj kopia zapasowa i migracja ).
źródło
Musisz sprawdzić, co chcesz zmienić:
źródło
Mam tę samą procedurę do obsługi w pracy podczas aktualizacji stron internetowych Drupal. Największym problemem jest to, że Drupal tak naprawdę nie wykonuje świetnej pracy, utrzymując zawartość i logikę oddzielnie w swojej bazie danych.
Odpowiedzi udzielone przez Thomasa Zagreddina i BetaRide wystarczyłyby, aby dać Ci najlepszą szansę na pomyślne zakończenie migracji. Naprawdę nie ma świętego Graala na ten temat.
Chciałbym jednak dać ci wskazówkę programistyczną, która oszczędza mi wielu problemów z aktualizowaniem naszych stron internetowych: Staraj się zachować logikę w swoim kodzie (moduły / motywy). Staraj się unikać tworzenia widoków w jak największym stopniu. Czasami będziesz musiał, ale będzie to wymagać kolejnej aktualizacji bazy danych ...
Użyj zarządzania kontrolą źródła!
Jeśli jesteś w stanie sprowadzić wszystko do kodu (oczywiście nie zawsze będziesz w stanie to zrobić), możesz po prostu użyć SCM, takiego jak Git , SubVersion lub Mercury, aby zaktualizować swoje źródło, aw najgorszym przypadku scenariusz powróci do poprzednia wersja źródła, jeśli aktualizacja nie działa zgodnie z planem.
I, oczywiście, jak wskazano w poprzednich odpowiedziach: tworzenie kopii zapasowych, tworzenie kopii zapasowych, tworzenie kopii zapasowych, tworzenie kopii zapasowych ...
źródło
W przypadku większości zmian można użyć modułu funkcji Ten moduł może zmieniać tylko zmiany, co zrobiłeś w środowisku lokalnym.
W przeciwnym razie możesz użyć tego pięknego modułu Kopia zapasowa i migracja Najpierw zainstaluj ten moduł online, a następnie zrób kopię zapasową całej istniejącej zawartości lub bazy danych, a następnie zainstaluj ją lokalnie. Następnie wprowadź zmiany w lokalnym, co chcesz, ponownie zrób kopię zapasową swojego lokalnego, a następnie wdróż go w trybie online.
źródło
Właśnie miałem ten sam problem. Aby to rozwiązać, zauważyłem, że jedyną zawartością, którą miałem na żywo, a której nie było w dev, były dane nowego użytkownika. Po prostu wszedłem do karty Ludzie administratora i skopiowałem dane osób do dev. W dev właśnie wpisałem je bez żadnej automatyzacji. Więc następnym razem, gdy prześlę z dev, dane osób będą naturalnie prawidłowe i nie zostaną nadpisane.
źródło