2012-02-02 11 views
7

Pracuję z bazami danych MySQL. Aby uprościć problem, załóżmy, że mam dwa środowiska: lokalny (rozwój) i zdalny (tryb produkcji).Usuwanie zmodyfikowanej bazy danych z lokalnego środowiska env do wersji produkcyjnej

W bazie danych mam kilka tabel zawierających dane konfiguracyjne.

Jak mogę zautomatyzować czystość dostarczania z trybu programowania do trybu produkcyjnego, gdy modyfikuję schemat bazy danych i zawartość tabel konfiguracyjnych?

Na przykład kropkuję go ręcznie, wykonując różnicę pomiędzy lokalną i zdalną bazą danych. Ale uważam, że ta metoda nie jest tak czysta i wierzę, że istnieje dobra praktyka pozwalająca na to.

+0

Nie mogłem dać nagrody "ręcznie", ponieważ nie było dokładnej odpowiedzi na moje konkretne potrzeby. Jednak sugestie są bardzo dobre. Dziękuję Ci. – Zakaria

Odpowiedz

3

Może to być pomocne w przypadku, gdy masz wiele środowisk i wielu programistów dokonywania zmian schematu bardzo często i za pomocą PHP .. https://github.com/davejkiger/mysql-php-migrations

+0

dzięki za odpowiedź. Czy używałeś tego narzędzia? – Zakaria

+0

Tak. Działa przyzwoicie dobrze dla nas. Wszystkie zmiany schematu są przechowywane w określonym formacie, który można odczytać za pomocą skryptu migracji, a po uruchomieniu skryptu tworzy kopię zapasową db i stosuje zmiany. Ma kilka przyzwoitych opcji obsługi różnych środowisk deweloperskich. Na przykład, każde środowisko może przechowywać skrypty w różnych ścieżkach i możesz określić parametr ścieżki podczas uruchamiania skryptu migracji. –

1

W większości moich projektów używam SQLAlchemy (Python narzędzie do zarządzania db plus ORM). Jeśli masz trochę doświadczenia (trochę więcej niż początkującego) z Pythonem, zdecydowanie polecam go używać. Możesz sprawdzić narzędzie this z niewielką pomocą that. Jest to również bardzo przydatne przy migracji bazy danych do innych rdbms (na przykład mysql do postgres lub oracle).

2
  • Wprowadzić parametr "wersja" dla bazy danych. Ta wersja powinna być napisana gdzieś w kodzie i gdzieś w bazie danych. Twój kod będzie działał z bazą danych tylko, jeśli mają one równe wersje:

  • Utwórz opakowanie wokół połączenia MySQL. To opakowanie powinno sprawdzić wersje, a jeśli wersje nie są kompatybilne, powinna rozpocząć aktualizację.

  • "Upgrade" to proces sekwencyjnego stosowania listy plików * .sql za pomocą poleceń SQL, które przenoszą bazę danych z jednego stanu do drugiego. Mogą to być zmiany schematu lub polecenia manipulacji danymi.

  • Kiedy robisz coś z bazą danych, zrób to tylko poprzez dodanie nowego pliku * .sql i inkrementującej wersji.

  • W rezultacie, po wdrożeniu bazy danych od środowiska programistycznego do produkcji, baza danych zostanie automatycznie zaktualizowana w taki sam sposób, jak została zaktualizowana podczas programowania.

Powiązane problemy