Utrzymywanie synchronizacji bazy danych WP między wieloma programistami korzystającymi z git


33

Pracuję nad ulepszeniem mojego przepływu pracy git, ponieważ dotyczy on moich projektów programistycznych WordPress. Często podczas opracowywania systemu zarządzania treścią tworzę serwer programistyczny (podobny http://dev.finalsitename.com) zawierający niestandardowe typy postów i taksonomie, które będą używane w wersji produkcyjnej. Dzięki temu mój klient może zacząć dodawać swoje treści do witryny.

Podczas gdy pracują nad tym zadaniem, zwykle buduję wygląd, a także niestandardowe programowanie / wtyczki, które będą używane w moim środowisku localhost. Aby upewnić się, że nie zastąpię żadnej z ich aktualizacji, zazwyczaj ściągam kopię ich bazy danych i zastępuję swoją. Są jednak chwile, w których muszę po prostu wskoczyć do obszaru administracyjnego WP i zmienić ustawienie lub coś innego ...

Jeśli wielu projektantów pracuje nad projektem WordPress, każdy z nas wykonuje zrzut bazy danych (ze znacznikiem czasu) naszej wersji witryny i dołączamy do katalogu głównego przed zatwierdzeniem i wypchnięciem lokalnego oddziału z powrotem do zdalnego repozytorium. Problem z tym podejściem polega na tym, że bazy danych często nie są zsynchronizowane i nie ma łatwego sposobu na określenie, którego użyć.

Co robią inni programiści, aby zsynchronizować swoje bazy danych, jednocześnie umożliwiając wielu programistom (i klientom / producentom treści) pracę nad tym samym projektem?

Odpowiedzi:


12

Dostępne są 3 opcje od najłatwiejszego ->

  1. Używaj tylko jednej zdalnej bazy danych, z którą wszyscy się łączysz z dużą ilością kopii zapasowych. W ten sposób musisz martwić się o pliki, a nie o db.

  2. Użyj funkcji importu i eksportu wbudowanej w WordPress i wrzuć ją do kontroli wersji bezpośrednio do wp root (jak w nowym folderze). Oczywiście zajmuje to dodatkowe kilka minut, ale jest to bardzo proste i można je zautomatyzować, ale co ważniejsze, stanie się częścią kontroli wersji.

  3. Użyj niestandardowego skryptu aktualizacyjnego, aby zaktualizować aktualną synchronizację bazy danych. Szczerze mówiąc, nie wiem, jak poradzić sobie z tym za pomocą git, ponieważ jest to tylko skrypt i tak naprawdę nie wiem, co się dzieje, wiem, że istnieją narzędzia innych firm, które robią to komercyjnie i za darmo ( http: // www. liquibase.org/ ).


1

Jeśli chcesz całkowicie zsynchronizować bazy danych, tj. schemat i dane, możesz opracować niestandardowy system kontroli wersji oparty na kopiach zapasowych.

Lub jeśli chcesz zabezpieczyć dane przed produkcją, ale ewoluować ich schemat, możesz pracować z niestandardowym rozwiązaniem (wersjonowanym plikiem ze wszystkimi zmianami schematu) lub ze standardowym rozwiązaniem opartym na koncepcji migration. Można znaleźć wiele informacji w tym wątku przepływu stosu: Mechanizmy śledzenia zmian schematu db .



1

Przepraszam, jeśli wydaje się to niewiarygodnie oczywiste, ale jeśli wszyscy musicie mieć tę samą kopię bazy danych o tej samej strukturze, czy nie ma sensu mieć biurowego / centralnego serwera SQL i używać go? Klonuj go lokalnie, jeśli chcesz eksperymentować, ale zachowaj go jako autorytatywny standard defacto i rób kopie zapasowe tego serwera i tylko tego serwera.

W przeciwnym razie, gdy pracuję nad projektem grupowym, mamy własne ustawienia z inną treścią. Kod zajmuje się aktualizacją i migracją struktur tabel, a my możemy uzyskać dostęp do lokalnych instalacji kodu działającego na naszych komputerach przez sieć LAN, więc nie musimy udostępniać treści.

Jeśli wprowadzamy treść, uruchamiamy ją na serwerze testowym, który możemy następnie wyeksportować i zaimportować na serwer na żywo lub możemy przenieść bezpośrednio na serwer produkcyjny, jeśli aktualnie nie istnieje żadna instancja na żywo.

Jeśli w dowolnym momencie potrzebujesz oddzielenia danych testu na żywo i danych WIP, po prostu użyj gałęzi live, testowania i programowania w swoim repozytorium

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.