wzorce migracji danych produkcyjnych w ciągłym dostarczaniu

Jakie są wzorce migracji relacyjnych baz danych (i schematów) na produkcji w ciągłym dostarczaniu?

W wielu tradycyjnych opracowaniach DBA organizuje duży skrypt migracji z wielu mniejszych skryptów utworzonych w bieżącym cyklu wydania. Ale w CD deweloper może chcieć przesunąć zmiany teraz do produkcji, nie czekać, aby skompilować je z innymi skryptami.

Wiem, że on rails-migration, ale dla mnie bardziej rozsądne wydaje się używanie surowych skryptów sql.

Ja też widziałem narzędzia takie jak flyway do zarządzania migracjami, ale nie czytałem o wielu osobach używających ich w produkcji. Dlatego zastanawiam się, jakie są tu powszechne praktyki.

Author: Axel Fontaine, 2012-07-23

2 answers

Flyway doskonale sprawdza się przy ciągłym dostarczaniu/wdrażaniu. Wielu klientów korzysta z niego we wszystkich środowiskach, w tym produkcyjnych.

Najważniejszą rzeczą dla kaskadowych migracji DB między środowiskami jest posiadanie 3-etapowego procesu:

Krok 1

Stary kod aplikacji współpracuje ze starym DB.

Krok 2

Nowy kod aplikacji zostanie wdrożony i migruje DB przy starcie. Ta migracja musi być wstecznie kompatybilna, aby stare kod aplikacji nadal działa z nowym DB. Jest to niezbędne, ponieważ:

  • możesz następnie wykonywać aktualizacje kroczące, aktualizując jeden węzeł na raz, aż wszystkie węzły będą miały nowy kod aplikacji
  • powrót do starego kodu aplikacji, jeśli nowy jest uszkodzony

Ten krok może obejmować widoki zgodności i wyzwalacze do wykonania zadania.

Krok 3

Po sprawdzeniu poprawności zmian, kolejna wersja kodu aplikacji gets wdrożone wraz z niezbędnymi migracjami DB w celu odrzucenia pozostałych przestarzałych struktur (z etapu 1) i zgodności (z etapu 2).

 9
Author: Axel Fontaine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-23 11:21:04

Zaimplementuj zmiany w bazie danych jako pojedyncze (surowe) pliki sql, a następnie użyj sqlpatch do zbudowania skryptu migracji.

Zwykle mam jedno repozytorium git dla samej bazy danych i dołączone do niego środowisko cd. Zwykle mam bazę danych produkcji i rozwoju, które są automatycznie migrowane, gdy pcham do odpowiednich gałęzi.

Ta konfiguracja sprawia, że bardzo łatwo jest skonfigurować inną bazę danych dla gałęzi funkcji i eksperymentować z nią. Sqlpatch dba o wszystkich zależności w osobnych plikach sql, dzięki czemu mogę łatwo scalić gałąź funkcji w innej gałęzi.

 1
Author: Elmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-29 20:23:22