Zainstalowaliśmy SQL Server 2014 Enterprise, aby uruchomić bazę danych, która powinna być dostępna 24/7. Nasza baza danych jest wystarczająco duża (200 GB +). Mamy również wiele usług, które co minutę trafiają do naszej bazy danych, aby czytać, aktualizować lub wstawiać nowe dane. Chcemy zapewnić „gorącą” funkcję ponownego wdrażania dla naszych klientów i zapewnić naszym klientom codzienne aktualizacje (aktualizacje .net i schematu). Znaleźliśmy rozwiązanie oparte na klastrze z modułem równoważenia obciążenia, które aktualizuje pliki binarne naszej aplikacji, ale nadal mamy pewne nieporozumienia na temat procesu wdrażania aktualizacji bazy danych i najlepszych praktyk w celu rozwiązania tego problemu.
W przypadku zmian schematu wyłącz jeden serwer, zastosuj zmiany schematu, przywróć go, a następnie zastosuj te same zmiany w drugiej instancji. Czy można tego dokonać za pomocą narzędzi SQL Server i czy jest to powszechne podejście? Jak synchronizować dane po utworzeniu kopii zapasowej serwera? Czy też całkowicie myślę w złym kierunku i czy są lepsze rozwiązania?
Nasze wspólne zmiany schematu: dodawanie / upuszczanie kolumny, dodawanie / usuwanie procedury składowanej
źródło
Odpowiedzi:
Poniżej będzie trochę więcej planowania i testowania.
Koncepcja niebiesko-zielona:
Istotą koncepcji niebiesko-zielonej jest podzielenie produkcji na 2 środowiska i są one zawsze identyczne (synchronizacja danych), w których
Niebieski (bieżący) będzie miał aktualną wersję schematu / kompilacji lub produktu i będzie Twoim środowiskiem „LIVE”.
W tym samym czasie środowisko zielone będzie środowiskiem testowania / testowania, w którym zaktualizujesz schemat / kompilację lub produkt do wersji NEXT, wykonasz pełny test regresji i zostaniesz wylogowany przez użytkowników biznesowych. Kiedy będziesz zadowolony, w okresie przerywnikowym będziesz promować Green jako środowisko „LIVE” i zdegradować Blue jako preprodukcję / inscenizację lub testy do następnej wersji.
W ten sposób masz znacznie mniej przestojów, a ryzyko niepowodzenia wdrożenia w systemie na żywo (który znajduje się w oknie konserwacji, ponieważ przeprowadzasz aktualizację) zostanie znacznie zminimalizowane. Ponadto, postępując zgodnie z podejściem niebiesko-zielonym, będziesz oscylował między wersją NA ŻYWO i POPRZEDNIĄ, która będzie wystawiać kolejną wersję.
Ponownie będzie to wymagało więcej sprzętu / licencji, a także planowania i testowania.
Większość kroków można zautomatyzować za pomocą DACPAC i PowerShell. Ponadto, jeśli instalujesz wiele instancji na jednym serwerze, pamiętaj o ponownym zrównoważeniu ustawień pamięci podczas przełączania między niebieskim i zielonym. Środowisko LIVE ma więcej pamięci niż środowisko pasywne.
W moim obecnym środowisku wdrożyliśmy niebieski / zielony model do wdrażania kodu Agile, który pozwala nam promować kod co 2 tygodnie z wystarczającą ilością czasu na testowanie i podpisywanie dokumentów biznesowych. Ponadto bardzo łatwo jest wycofać się na wypadek, gdyby coś poszło nie tak. Zautomatyzowaliśmy większość rzeczy związanych z wdrażaniem za pomocą Dacpacs i PowerShell.
(Źródło obrazu)
Zobacz także artykuł Granta Fritcheya na temat rozwiązywania problemów z przywracaniem i odzyskiwaniem; Wyzwania i strategie
źródło
Jeśli twoja baza danych nie jest replikowana, dodaj i upuść kolumny będą działać bardzo szybko. Ponieważ kolumna dodawania jest tylko pustą pozycją tworzoną przez SQL. Upuszczenie kolumny spowoduje tylko usunięcie odniesienia.
W przeciwnym razie, jeśli istnieje jakieś ograniczenie lub indeks, należy zachować ostrożność.
ADD/DELETE
procedury będą miały wpływ na samo wykonanie. Zaleca się, zanim przed jakąkolwiek zmianą uruchom ponownie kompilacjęźródło