Non-DBA pyta: Jak bezboleśnie skopiować / przenieść wystąpienie programu SQL Server na inny serwer za pomocą narzędzia Kopia zapasowa / przywracanie?

11

Właśnie mamy nowy serwer, więc muszę skopiować istniejącą instancję programu SQL Server 2008 ze starego okna db.

Zwykle robię to, kopiując pliki .mdf i pliki dziennika i dołączając je, ale nie jestem w stanie usunąć dbs z linii, ponieważ są one używane 24/7, więc wykonałem kopię zapasową baz danych i przywróciłem je na nowym maszyna. Skończyło się jednak na kilku problemach, z których jeden dotyczył osieroconych użytkowników . Dlatego szukam niezawodnego procesu przenoszenia wszystkiego przy minimalnym zamieszaniu / kłopotach / bólu głowy. Jestem deweloperem .Net z dużą ilością SQL pod moim pasem, ale wewnętrzne działanie SQL Servera jest dla mnie w dużej mierze tajemnicą i uważam, że dokumentacja MS jest trudna do włożenia.

Proszę pomóż.

5arx
źródło
1
Kilka pomysłów znajdziesz w poprzednim pytaniu . Ale poprzednie odpowiedzi są dość objaśniające. Myślę, że najlepszym pomysłem byłoby ustanowienie kopii lustrzanej i zerwanie jej po, lub wysyłanie dziennika (może to zrobić tylko z poziomu kreatora) dla wszystkich dbs i po prostu przywrócić niezbędne kopie zapasowe dziennika, ale jeśli powiesz, że nie jesteś DBA , prawdopodobnie metoda tworzenia kopii zapasowych jest lepsza.
Marian

Odpowiedzi:

10

Jeśli nie możesz przełączyć baz danych w tryb offline, musisz wykonać kopię zapasową / przywrócić. Sugerowałbym następujące:

  1. Zainstaluj SQL 2008 na nowym polu, używając tej samej struktury plików, co stare pole dla plików MDF i LDF.
  2. Zrób kopie zapasowe wszystkich baz danych na starym urządzeniu.
  3. Przywróć wzorzec ze starej skrzynki do nowej, po uruchomieniu SQL w trybie pojedynczego użytkownika. Przywróć metodę główną
  4. Przywróć każdą bazę danych ze starej skrzynki do nowej skrzynki z opcją NORECOVERY, aby móc zastosować przyszłe kopie zapasowe Diff lub T-log.
  5. Przywróć msdb ze starego pola do nowego.

Jeśli zbudujesz i skonfigurujesz nowe pudełko, aby wyglądało dokładnie tak samo jak stare, będziesz miał minimalne zamieszanie.

Nie mam pojęcia, jak duże są twoje bazy danych, więc ta metoda może zająć dużo czasu. Najprościej jest zamknąć starą skrzynkę i skopiować pliki MDF i LDF, a następnie (po przywróceniu wzorca) wystarczy ponownie uruchomić SQL, aby bazy danych były w trybie online. Stwierdziłeś jednak, że nie jest to możliwe, ponieważ bazy danych nie mogą być w trybie offline.

SQLRockstar
źródło
3
Nie zapomnij skopiować żadnych zmian danych dokonanych po wykonaniu kopii zapasowych. Możesz wykonać kopię zapasową diff lub tlog i zastosować je na nowym serwerze po jego uruchomieniu, ale przed zmianą.
Eric Humphrey - lotsahelp
Dobra uwaga, zapomniałem też o tym wspomnieć. być może powinienem dołączyć konfigurację lustrzanej bazy danych, która może zostać później zepsuta?
SQLRockstar
1
Wyobrażam sobie, że ktoś ma już obszerny artykuł na temat różnych sposobów migracji serwerów. Oto także artykuł na temat przesyłania danych logowania na nowy serwer: support.microsoft.com/kb/246133
Eric Humphrey - lotsahelp
8

Wspominasz o działaniu 24/7, więc najlepszym sposobem na to jest utworzenie kopii lustrzanej bazy danych w nowym systemie, a następnie możesz po prostu przełączyć się z minimalnym - być może zerowym, w zależności od struktury aplikacji - przestojem przy użyciu klienta przekierowanie boczne. Podstawowe kroki to:

  1. Upewnij się, że twoja podstawowa baza danych działa w trybie PEŁNEGO odzyskiwania .
  2. Wykonaj kopię zapasową elementu pierwotnego i przywróć go w lustrze WITH NORECOVERY
  3. Utwórz „punkty końcowe” na obu serwerach i zapewnij łączność (np. Reguły zapory), poprawnie ustawiając port i adres IP), np .:

    CREATE ENDPOINT endpoint1
    STATE=STARTED AS TCP(LISTENER_PORT = 5222, LISTENER_IP = 192.168.1.5) 
    FOR DATA_MIRRORING(ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = REQUIRED ALGORITHM RC4)
  4. Skonfiguruj kopię lustrzaną na lustrze, wskazując na podstawową:

    ALTER DATABASE GaiusMirrorDB SET PARTNER = 'TCP://192.168.1.5:5222'
    go
    EXEC sys.sp_dbmmonitoraddmonitoring
    go
  5. A na podstawowym, wskazując na lustro (tylko inną nazwę bazy danych i adres IP).

  6. Następnie, gdy nadejdzie czas, po prostu przełącz urządzenie główne na lustro:

    ALTER DATABASE GaiusDB SET PARTNER FAILOVER
    GO

Uwaga: Zakładam, że te dwa serwery są w tej samej sieci, więc będzie działać w trybie synchronicznym. Jeśli jest to łącze WAN, użyj trybu asynchronicznego.

Gajusz
źródło