Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Przenoszenie systemowych baz danych w klastrze pracy awaryjnej programu SQL Server

Niedawno zostałem przydzielony do projektu – nasz klient kupił nowy SAN i chciał, abyśmy wymienili stary na nowy SAN. Bazy danych użytkowników i systemów wykorzystywały SAN, natomiast system operacyjny i SQL były instalowane na dyskach lokalnych serwera. Mamy szczęście..!! Pomysł polegał na przeniesieniu istniejących baz danych użytkowników i systemów do nowej sieci SAN i zminimalizowanie przestojów. Tak więc, aby zminimalizować przestoje, zamiast reinstalować system operacyjny i SQL, zdecydowaliśmy się zastosować następujące podejście.

  1. Podłącz nową sieć SAN do istniejącego serwera, utwórz na nim nowe dyski i dodaj te dyski do istniejącej instancji klastra pracy awaryjnej.
  2. Zatrzymaj SQL Server, skopiuj główne, modelowe i msdb bazy danych na nowe dyski i uruchom usługi SQL.
  3. Przenieś bazy danych użytkowników na nowe dyski i usuń starą sieć SAN.

W poprzednim artykule wyjaśniłem krok po kroku proces dodawania nowej pamięci do istniejącego klastra pracy awaryjnej. Ponadto zademonstrowałem proces przenoszenia baz danych użytkowników na nowe dyski.

W tym artykule zademonstruję proces przenoszenia baz danych systemu na nowe dyski, które wykorzystałem w swoim projekcie. W moim poprzednim artykule dodaliśmy dysk do istniejącego klastra pracy awaryjnej, aw tym artykule będziemy używać tego samego dysku. Etykieta woluminu dysku to „E:\ ”, więc utworzyłem katalog o nazwie „Systemowe bazy danych ” w E:\ prowadzić. Zobacz następujący obraz:

Obecnie systemowe bazy danych znajdują się w „F:\MSSQL14.MSSQLSERVER\MSSQL\DATA ” katalog. Chcemy przenieść te bazy danych do „E:\SystemDatabases ” katalog. W przeciwieństwie do baz danych użytkowników, przenoszenie systemowych baz danych nie jest prostym procesem. Musimy postępować zgodnie z właściwą sekwencją i krokami, w przeciwnym razie instancja SQL się nie uruchomi.

Najpierw przejrzyjmy aktualną lokalizację baz danych systemu. Wykonaj następujące zapytanie, aby uzyskać aktualną lokalizację bazy danych systemu.

USE MASTER

GO

SELECT DB_NAME(DATABASE_ID) AS [DATABASE NAME], 

       NAME AS [LOGICAL NAME], 

       PHYSICAL_NAME AS [FILE PATH] 

 FROM SYS.MASTER_FILES 

 WHERE DATABASE_ID < 4

Oto wynik:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

master master F:\MSSQL14.MSSQLSERVER\MSSQL\DAT\master.mdf

master mastlog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

tempdb tempdev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf 

tempdb templog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\templog.ldf

model modeldev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\model.mdf

model modellog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\modellog.ldf

msdb msdbdata F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdbdata.mdf

msdb msdblog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdblog.ldf

Teraz wyjaśnię proces przenoszenia baz danych do innego katalogu w następujący sposób.

  1. Wyjaśnij kroki przenoszenia msdb i baz danych modeli.
  2. Wyjaśnij kroki przenoszenia bazy danych tempdb.
  3. Wyjaśnij kroki przenoszenia głównej bazy danych.

To demo pokaże Ci, jak przenieść wszystkie systemowe bazy danych do E:\ dysku, w celu skrócenia przestojów, więc ponownie uruchomię usługi SQL pod koniec procesu.

Kroki przenoszenia bazy danych msdb i modeli

Aby przenieść bazy danych msdb i model, najpierw musimy zaktualizować lokalizacje plików w katalogu systemowym, wykonując zapytanie ALTER Database. Aby to zrobić, wykonaj następujące zapytanie w PowerShell lub SSMS.

USE MASTER; 

 GO 

 ALTER DATABASE MODEL MODIFY FILE (NAME = MODELDEV, FILENAME = 

 'E:\SYSTEMDATABASES\MODEL.MDF'); 

 GO 

 ALTER DATABASE MODEL MODIFY FILE (NAME = MODELLOG, FILENAME = 

 'E:\SYSTEMDATABASES\MODELLOG.LDF'); 

 GO 

 

ALTER DATABASE MSDB MODIFY FILE (NAME = MSDBDATA, FILENAME = 

'E:\SYSTEMDATABASES\MSDBDATA.MDF'); 

 GO 

 

 ALTER DATABASE MSDB MODIFY FILE (NAME = MSDBLOG, FILENAME = 

 'E:\SYSTEMDATABASES\MSDBLOG.LDF'); 

 GO

Dane wyjściowe są następujące:

The file "MODELDEV" has been modified in the system catalog. The new path will be used the next time the database is started.

The file "MODELLOG" has been modified in the system catalog. The new path will be used the next time the database is started.

 

The file "MSDBDATA" has been modified in the system catalog. The new path will be used the next time the database is started.

The file "MSDBLOG" has been modified in the system catalog. The new path will be used the next time the database is started.

Teraz wykonaj następujące zapytanie, aby sprawdzić, czy ścieżki zostały zaktualizowane w katalogu systemowym. Aby to zrobić, wykonaj następujące zapytanie:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], 

       PHYSICAL_NAME AS [FILE LOCATION] 

 FROM SYS.MASTER_FILES 

 WHERE  DB_NAME(DATABASE_ID) IN ('MSDB', 'MODEL') 

 GO

Poniżej znajduje się wynik:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

model modeldev E:\SystemDatabases\model.mdf

model modellog E:\SystemDatabases\modellog.ldf

msdb msdbdata E:\SystemDatabases\msdbdata.mdf

msdb msdblog E:\SystemDatabases\msdblog.ldf

Kroki przenoszenia bazy danych tempDB

Po ponownym uruchomieniu SQL Server – automatycznie odtworzy pliki tempdb i dziennika, dzięki czemu nie musimy ręcznie przenosić plików tempdb – wystarczy zmienić ścieżkę plików bazy danych. Aby zmienić ścieżkę plików bazy danych tempdb, wykonaj następujące zapytanie w PowerShell / SSMS.

USE MASTER; 

 GO 

ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPDEV, FILENAME = 

'E:\SYSTEMDATABASES\TEMPDB.MDF');


 GO 

ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPLOG, FILENAME = 

'E:\SYSTEMDATABASES\TEMPLOG.LDF');


 GO

Dane wyjściowe są następujące:

The file "tempdev" has been modified in the system catalog. The new path will be used the next time the database is started.

The file "templog" has been modified in the system catalog. The new path will be used the next time the database is started.

Teraz wykonaj następujące zapytanie, aby sprawdzić, czy ścieżki są zaktualizowane w katalogu systemowym:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], 

       PHYSICAL_NAME AS [FILE LOCATION] 

 FROM SYS.MASTER_FILES 

 WHERE  DB_NAME(DATABASE_ID) = 'TEMPDB' 

 GO

Poniżej znajduje się wynik:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

tempdb tempdev E:\SystemDatabases\tempdb.mdf 

tempdb templog E:\SystemDatabases\templog.ldf

Kroki przenoszenia głównej bazy danych

Proces przenoszenia bazy danych master na inny dysk różni się od przenoszenia innych baz danych systemu. Aby przenieść bazę danych systemu, wykonaj następujące czynności:

  1. Otwórz Menedżera konfiguracji SQL Server 2017 i rozwiń kliknij Usługi serwera SQL . Zobacz następujący obraz:
  2. Kliknij prawym przyciskiem myszy SQL Server (MSSQLSERVER) i kliknij właściwości. W oknie dialogowym właściwości wybierz „Parametry uruchamiania ” zakładka. Zobacz następujący obraz:
  3. Jak widać na powyższym obrazku, w istniejących parametrach pole tekstowe zawiera domyślną lokalizację pliku danych, pliku dziennika i dziennika błędów. Tutaj -d  wskazuje domyślną ścieżkę pliku danych głównej bazy danych podobnie, -l  wskazuje domyślną ścieżkę do pliku dziennika głównej bazy danych. Musimy zastąpić te parametry nową lokalizacją. Kliknij więc parametr pliku danych i zastąp go „–  dE:\Systemdatabases\master.mdf ” i kliknij Aktualizuj. Podobnie, kliknij parametr pliku dziennika i zastąp go „-lE:\Systemdatabases\mastlog.ldf” wartość i kliknij aktualizację. Zobacz następujący obraz:

4. Kliknij OK, aby zamknąć okno dialogowe.

Uwaga:

Ponieważ wykonujemy to zadanie na instancji przełączania awaryjnego SQL Server, musimy wykonać wszystkie powyższe zmiany na węzłach drugorzędnych (SQL02.Dc.Local)

Uruchom ponownie usługi SQL Server.

Po zaktualizowaniu nowej ścieżki msdb, modelu i tempdb w katalogu SQL Server, musimy zatrzymać usługi, aby skopiować pliki bazy danych na nowe dyski. Aby to zrobić, otwórz Menedżera konfiguracji SQL Server 2017>> Kliknij Usługi>> Kliknij prawym przyciskiem myszy SQL Server (MSSQLSERVER) i kliknij „Zatrzymaj”. Zobacz następujący obraz:

Teraz skopiuj wszystkie systemowe pliki bazy danych na nowy dysk. Zobacz następujący obraz:

Teraz uruchom usługę z menedżera konfiguracji SQL Server. Jeśli usługi zostały pomyślnie uruchomione, ścieżka systemu i bazy danych zostały pomyślnie zaktualizowane. Wykonaj następujące zapytanie, aby przejrzeć ścieżkę głównej bazy danych:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME], 

       PHYSICAL_NAME AS [FILE LOCATION] 

 FROM SYS.MASTER_FILES 

 WHERE  DB_NAME(DATABASE_ID) = 'MASTER' 

 GO

Poniżej znajduje się wynik:

DatabaseName Logical Name File Path

-------------- ------------------- --------------------------------------------

master master E:\SystemDatabases\master.mdf 

master mastlog E:\SystemDatabases\mastlog.ldf

Podsumowanie

W tym artykule wyjaśniłem krok po kroku proces przenoszenia systemowych baz danych na nowy dysk klastrowy.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połącz SQL Server z HubSpot CRM

  2. SQL Server DOWOLNY operator wyjaśniony

  3. Proaktywne kontrole kondycji programu SQL Server, część 3:ustawienia instancji i bazy danych

  4. Jaka jest domyślna nazwa ograniczenia w programie SQL Server?

  5. Zwróć listę wiadomości e-mail wysłanych z poczty bazy danych SQL Server (T-SQL)