Pracuję z włączaniem i wyłączaniem serwera SQL od wersji SQL Server 6.5, stara rada, która wciąż dzwoni w mojej głowie, to nigdy nie robić aktualizacji na miejscu.
Obecnie aktualizuję moje systemy DEV i TEST 2008 R2 do SQL Server 2012 i muszę używać tego samego sprzętu. Myśl o tym, że nie muszę przywracać mojej konfiguracji usług raportowania, jest bardzo atrakcyjna i naprawdę nie mogę się doczekać, aby zrobić to z wyprzedzeniem. Nie ma w tym żadnych usług analitycznych ani niczego nietypowego lub niestandardowego - instalowane są tylko silnik bazy danych i usługi raportowania.
Czy ktoś doświadczył poważnych problemów z uaktualnieniami na miejscu? Czy powinienem ponownie ocenić swoje stanowisko w sprawie ulepszeń na miejscu?
sql-server
sql-server-2012
migration
upgrade
ssrs
Zniszczone dobra
źródło
źródło
Odpowiedzi:
Naprawdę krótka odpowiedź - na miejscu jest w porządku. Następnie możesz przejrzeć swoją konfigurację i wdrożyć najlepsze praktyki dotyczące programu SQL Server 2012.
Dłuższa odpowiedź na temat aktualizacji / migracji SQL Server
Jest to więc opinia i niekoniecznie jest to zła lub prawidłowa odpowiedź, ale z wielu powodów wolę aktualizacje stylu migracji niż na miejscu. To powiedziawszy - niektórzy z moich klientów z różnych powodów nie mieli wyboru, musieli zrobić to na miejscu, a tak naprawdę od SQL Server 2005, aktualizacje na miejscu nie były tak złe, jak kiedyś.
Dlaczego wolę migrację niż uaktualnienie na miejscu
Pamiętaj, że nie mówię, że musisz to zrobić jako migracja. Na miejscu działa i działa dobrze, jeśli nie planujesz zakupu nowego sprzętu w swoim budżecie i nie możesz tego zrobić w przypadku tej aktualizacji. Wsparcie w procesie aktualizacji jest o wiele lepsze niż w 6,5 dni, więc nie narażasz się na to, robiąc to.
Jeśli planujesz zrobić w miejscu na potrzeby tworzenia / testowania, ale chcesz przeprowadzić migrację dla produkcji, możesz rozważyć wykonanie przynajmniej jednej migracji przed produkcją. W ten sposób możesz wcześniej opracować listę kontrolną i rozwiązać wszelkie potencjalne problemy, o których nie myślałeś.
Dołącz / Odłącz vs. Kopia zapasowa / Przywróć dla migracji
Jeśli zdecydujesz się na migrację, jest jeszcze jedna decyzja, nad którą możesz jeszcze debatować. W ten sposób przeniesiesz bazę danych do nowego środowiska. Możesz odłączyć bazę danych od starego serwera i dołączyć ją do nowej lub utworzyć kopię zapasową i przywrócić ją tam.
Wolę tworzenie kopii zapasowych / przywracanie. Największą zaletą, którą słyszę o odłączaniu / dołączaniu, jest to, że oszczędza to trochę czasu. Dla mnie tworzenie kopii zapasowych / przywracanie wygrywa z kilku powodów:
Jeśli zdecydujesz się wykonać kopię zapasową / przywracanie - oznacza to, że Twoja stara źródłowa baza danych będzie nadal w trybie online. Lubię robić tę bazę danych offline po zrobieniu kopii zapasowej. Czasami idę o krok dalej i wyłączam całą instancję SQL w trybie offline po tym, jak wykonałem skrypt bezpieczeństwa, zadań, połączonego serwera, certyfikatów, ustawień poczty bazy danych i innych informacji dotyczących całej instancji. Pozwala to uniknąć problemu podczas testowania, w którym ktoś mówi: „Wszystko wygląda świetnie!” tylko dzień lub dwa później uświadomili sobie, że rozmawiają ze starą bazą danych na starym serwerze. Przełączenie tych baz danych w tryb offline lub całej instancji w tryb offline pozwala zapobiec fałszywym pozytywom i bałaganowi, który popełniają.
Jak sprawić, by podejście do migracji było szybsze
Można zminimalizować czas przestoju wymagany do przejścia ze starego do nowego środowiska dla pracowitego środowiska produkcyjnego z niewielkim czasem przestoju dzięki wykorzystaniu pełnego modelu odzyskiwania. Zasadniczo - skonfiguruj środowisko, do którego migrujesz, przywracając najnowszą pełną kopię zapasową, wszelkie różnicowe kopie zapasowe i wszelkie już wykonane kopie zapasowe dzienników, określając
NORECOVERY
- wtedy wszystko, co musisz zrobić dla ostatecznego odcięcia, to przywrócić kopie zapasowe dziennika, które nie zostały jeszcze przywrócone i ostatnia kopia zapasowa dziennika, którą chcesz przywrócić, określającWITH RECOVERY
. W ten sposób w przypadku dużej bazy danych rzeczywiste okno przestoju można znacznie drastycznie zminimalizować, płacąc za koszt pełnego, różnicowego i większości przywracania dziennika przed oknem przestoju. Dzięki Tao za wskazanie tego w komentarzach!Jak uczynić aktualizację na miejscu bezpieczniejszą
Kilka rzeczy, które możesz zrobić, aby poprawić swoje wrażenia i wyniki, wybierając podejście na miejscu.
Znaczenie uaktualnienia lub migracji list kontrolnych
Jeśli zdecydujesz się na aktualizację (na miejscu lub w migracji), powinieneś poważnie rozważyć utworzenie listy kontrolnej i korzystanie z tej listy kontrolnej w każdym środowisku. Na tej liście kontrolnej powinieneś znaleźć kilka rzeczy, z których przynajmniej:
Następnie osoba, która będzie przeprowadzać aktualizację produkcji, postępuje zgodnie z listą kontrolną w niektórych środowiskach innych niż produkcja - zwłaszcza ta, która zamyka się, jeśli to możliwe, przypomina produkcję („Na południe od prod”, jak mówię ...) i odnotowuje wszelkie problemy lub punkty gdzie musieli odejść od listy kontrolnej lub improwizować z powodu braku listy kontrolnej. Następnie połącz zmiany i baw się dobrze ze zmianą produkcji.
Nie mogę przecenić znaczenia dokładnego testowania po migracji lub aktualizacji i wyprzedzania migracji. Podjęcie decyzji o wycofaniu w trakcie aktualizacji powinno być łatwe - szczególnie podczas migracji. Jeśli jest coś niewygodnego, wycofaj się i dowiedz się, czy nie możesz rozwiązać problemu skutecznie i niezawodnie w trakcie migracji. Po uruchomieniu nowego środowiska i nawiązaniu połączenia przez użytkowników wycofywanie staje się trudnym zadaniem. Nie można przywrócić bazy danych SQL Server do wcześniejszej wersji. Oznacza to pracę ręczną i migrację danych. Zawsze czekam kilka tygodni, aby zabić stare środowisko, ale powinieneś zrobić wszystko, aby uniknąć potrzeby korzystania ze starego środowiska, znajdując wszystkie swoje problemy, zanim Twoi użytkownicy na żywo dotkną nowego środowiska. Najlepiej zanim rozpoczniesz aktualizację / migrację.
Szybka uwaga na temat migracji / aktualizacji SQL Server Reporting Services Migracja instalacji SSRS nie jest herculeańskim zadaniem, jak wielu uważa. Ten artykuł online z technetem / książkami jest naprawdę przydatny . Jednym z najważniejszych ostrzeżeń w tym artykule jest „Utwórz kopię zapasową kluczy szyfrowania”, zwłaszcza jeśli masz wiele zapisanych poufnych informacji, takich jak adres e-mail odbiorcy zaplanowanego raportu, informacje o połączeniu dla wielu połączeń itp. mogę od pewnego czasu zapytać jednego z moich klientów, jak ważne jest to. Wiedzą, ponieważ pomieszałem ten krok i spędziłem sporo czasu modyfikując harmonogramy raportów i uprawnienia do ciągów połączeń.
źródło
Z mojego doświadczenia wynika, że taki sam proces decyzyjny powinien być podejmowany wcześniej. AFAIK nie było żadnych „zmieniaczy świata” z instalacją SQL Server, w samym produkcie MS SQL Server, i potencjalnych problemów, jakie masz przy wdrażaniu oprogramowania z milionami linii kodu. Coś złego może się zdarzyć, a teraz utkniesz bez opcji „ROLLBACK”.
Masz jednak inne alternatywy. Możesz rozważyć wykonanie migawki systemu, przywrócenie go w innym miejscu, wykonanie aktualizacji i zobacz, co się stanie. Ten test powinien dać ci duży komfort, ale nie gwarantuje absolutnie żadnych problemów na pudełku produkcyjnym. Jest to jednak opcja, która nie była dostępna w SQL 6.5 dni.
Po prostu przyjąłbym najgorszy scenariusz. Wykonujesz uaktualnienie na miejscu, które kończy się niepowodzeniem. Następnie musisz wyzdrowieć z tego w ramach RTO i RCO. Czy firma rozumie ryzyko i czy masz plany na jego ograniczenie?
Jeśli firma nie zgadza się z tym, nie rób tego, to moja rada.
źródło
Jeśli masz serwery działające w środowisku wirtualnym, możesz wykonać migawkę na klonie, a następnie zastosować aktualizację w miejscu i przetestować instancję, aby sprawdzić, czy aktualizacja zakończyła się powodzeniem. Jeśli to działa, możesz zastosować migawkę i sklonować serwer produkcyjny. Jeśli pójdzie źle, możesz usunąć migawkę i wrócić do obrazu przed aktualizacją, aby spróbować ponownie, lub usunąć klon i przejść do pełnej migracji.
źródło
Ze względu na dużą inwestycję sprzętową musieliśmy zaktualizować tylko system operacyjny, zachowując aktualną wersję programu SQL Server (2012, 3 serwery, 22 instancje, ~ 300 baz danych). Bez skomplikowanych ustawień, takich jak tworzenie kopii lustrzanych itp.
Ten przykład nie pasuje dokładnie do pytania, ponieważ SQL Server nie jest aktualizowany. Myślę, że to nadal dobra odpowiedź, ponieważ pokazane kroki byłyby w rzeczywistości prostsze niż prawdziwa migracja w miejscu.
Omówienie: Podłączono dysk zewnętrzny w celu wykonywania pełnych kopii zapasowych głównie jako środek ostrożności. Tylko model i msdb zostaną faktycznie przywrócone z dysku zewnętrznego. Pliki ldf / mdf pozostawiono na miejscu w celu odłączenia / dołączenia. Niektóre konta lokalne zostały przywołane w bazach danych. Po ich ponownym utworzeniu w systemie operacyjnym ponownie utworzono odwołania w bazie danych (ponieważ identyfikatory SID mogą ulec zmianie).
Oto kroki, które działały dla nas:
1) Zwróć uwagę na ustawienia na poziomie serwera, które zostaną przywrócone w krokach 12 (Role serwera) i od 18 do 23.
2) Łata SQL Server 2012 do SP3 (wymagana spójność, jeśli chcemy przywrócić dowolne systemowe dbs).
3) Sprawdź, czy wersje pasują do każdej instancji. „Wybierz wersję @@”
4) Wygeneruj te 6 skryptów, uruchamiając ten skrypt. Redgate SQL Multiscript to ogromna oszczędność czasu, jeśli istnieje wiele wystąpień (Dostosuj narzędzia -> Opcje => Długość linii do maksimum (8192), a następnie użyj wyjścia tekstowego).
Połącz ponownie użytkowników z loginami
5) Uruchom skrypt, aby wykonać kopię zapasową wszystkich baz danych, w tym systemu (master, msdb, model) na dysku zewnętrznym.
6) Uruchom skrypt, aby odłączyć wszystkie bazy danych
7) Dysk C zostanie ponownie sformatowany. Zachowaj LDF / MDF, jeśli NIE były w C.
8) Windows Server 2012 jest zainstalowany na C
9) Przenieś LDF / MDF dla oryginalnych plików systemowych na bok, jeśli nie były one na dysku C.
10) SQL Server 2012 zostanie ponownie zainstalowany i załatany do SP3 a. Ponownie utwórz systemowe konta użytkowników / grup
11) Wykonaj kopię zapasową DB systemu w nowej lokalizacji lub nazwie pliku (uważaj, aby nie zastąpić oryginałów!).
12) Uruchom ponownie fragment kodu ról. Coś jak:
13) Uruchom ponownie skrypt logowania (nic nie robi, jeśli loginy zostały przywrócone)
14) Zatrzymaj SQL AGENT.
(Moglibyśmy przywrócić Mistrza tutaj, stchórzyliśmy).
15) Załącz mdf / ldf za pomocą skryptu z góry. za. W przypadku niepowodzenia ręcznie przywróć z bak przy użyciu skryptu z góry.
16) Próba przywrócenia modelu
17) Upewnij się, że SQL Agent jest zatrzymany. Przywróć MSDB (link) a. Jeśli się nie powiedzie, musisz ponownie utworzyć zadania + plan konserwacji + konfiguracja poczty + operatorzy
18) Skrypt Open User To Login ...
19) Włącz brokera usługi, aby dopasował oryginalną wartość SELECT name, is_broker_enabled FROM sys.databases;
20) Uruchom agenta SQL
21) Ustaw próg równoległości na pierwotną wartość
22) Dostosuj ustawienia bazy danych do ich oryginalnych wartości:
23) Sprawdź własność pracy:
Gdyby wersja SQL Server również została zaktualizowana, nie sądzę, aby model i bazy danych msdb mogły zostać przywrócone, więc zadania zostałyby utracone z powodu https://support.microsoft.com/en-us/kb/264474
Czego brakuje:
źródło
Nie ma nic złego w żadnym z tych podejść per se - zrobiłem oba i oba wyniki są zazwyczaj dobre.
Jeśli występuje problem z podejściem do migracji, nie jest to techniczne: jest to lenistwo. Zbyt często uważam, że powodem, dla którego firma nie przeszła jeszcze w pełni do wersji xxxx, jest to, że wybrali migrację swingową i nigdy nie wykonali ciężkiej pracy, aby całkowicie się przenieść. Teraz mają dwa lub więcej zestawów serwerów zamiast jednego.
źródło