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.
- 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.
- Zatrzymaj SQL Server, skopiuj główne, modelowe i msdb bazy danych na nowe dyski i uruchom usługi SQL.
- 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.
- Wyjaśnij kroki przenoszenia msdb i baz danych modeli.
- Wyjaśnij kroki przenoszenia bazy danych tempdb.
- 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:
- Otwórz Menedżera konfiguracji SQL Server 2017 i rozwiń kliknij Usługi serwera SQL . Zobacz następujący obraz:
- 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:
- 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.