Наскоро бях назначен за един проект – наш клиент закупи нов SAN и искаха да заменим стария с нов SAN. Потребителските и системните бази данни използваха SAN, междувременно операционната система и SQL бяха инсталирани на локалните дискове на сървъра. Късмет за нас..!! Идеята беше да се преместят съществуващите потребителски и системни бази данни към нов SAN и да се запази времето на престой възможно най-малко. Така че, за да сведем до минимум времето за престой, вместо да преинсталираме OS и SQL, решихме да използваме следния подход.
- Прикачете нов SAN към съществуващ сървър, създайте нови устройства на него и добавете тези устройства към съществуващ екземпляр на клъстер за отказване.
- Спрете SQL Server, копирайте главната, моделната и msdb бази данни на нови устройства и стартирайте SQL услугите.
- Преместете потребителските бази данни на нови устройства и премахнете стария SAN.
В предишната си статия обясних стъпка по стъпка процеса на добавяне на ново хранилище към съществуващ отказен клъстер. Освен това демонстрирах процеса на преместване на потребителски бази данни на нови устройства.
В тази статия ще демонстрирам процеса на преместване на системните бази данни към нови устройства, които използвах в моя проект. В предишната ми статия добавихме устройството към съществуващ отказен клъстер и в тази статия ще използваме същото устройство. Етикетът за сила на звука на устройството е „E:\ “, затова създадох директория с име „SystemDatabases ” в E:\ карам. Вижте следното изображение:
Понастоящем системните бази данни са на „F:\MSSQL14.MSSQLSERVER\MSSQL\DATA ” директория. Искаме да преместим тези бази данни в „E:\SystemDatabases ” директория. За разлика от потребителските бази данни, преместването на системни бази данни не е лесен процес. Трябва да следваме правилната последователност и стъпки, в противен случай SQL екземплярът няма да стартира.
Първо, нека прегледаме текущото местоположение на системните бази данни. Изпълнете следната заявка, за да получите текущото местоположение на системната база данни.
ИЗПОЛЗВАЙТЕ MASTERGOSELECT DB_NAME(DATABASE_ID) КАТО [ИМЕ НА БАЗА ДАННИ], ИМЕ КАТО [ЛОГИЧЕСКО ИМЕ], PHYSICAL_NAME КАТО [FILE PATH] FROM SYS.MASTER_FILES WHERE DATABASE>Следното е изходът:
Име на база данни Логическо име Път до файла-------------- ------------------ --------- -----------------------------------главен главен F:\MSSQL14.MSSQLSERVER\MSSQL\DAT\master. mdfmaster mastlog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\mastlog.ldftempdb tempdev F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf tempdb Templog F:\MSSQL14 F:\MSSQL14 F:\MSSQL14 temp.log F:\MSSQL14:\MSSQL14.model\MSSQL14. \MSSQL14.MSSQLSERVER\MSSQL\DATA\model.mdfmodel modellog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\modellog.ldfmsdb msdbdata F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdbdata.mdfmsdb msdblog F:\MSSQL14.MSSQLSERVER\ MSSQL\DATA\msdblog.ldfСега ще обясня процеса на преместване на бази данни в друга директория по следния начин.
- Обяснете стъпките за преместване на msdb и модели бази данни.
- Обяснете стъпките за преместване на базата данни tempdb.
- Обяснете стъпките за преместване на основната база данни.
Тази демонстрация ще ви покаже как да преместите всички системни бази данни в E:\ диск, следователно за намаляване на престоя, така че ще рестартирам SQL услугите в края на процеса.
Стъпки за преместване на базата данни msdb и модел
За да преместим базите данни msdb и моделите, първо трябва да актуализираме местоположенията на файловете в системния каталог, като изпълним заявката за база данни ALTER. За да направите това, изпълнете следната заявка в PowerShell или SSMS.
ИЗПОЛЗВАЙТЕ MASTER; GO ПРОМЕНЯТЕ ФАЙЛ ЗА МОДЕЛ НА БАЗА ДАННИ (ИМЕ =MODELDEV, ИМЕ НА ФАЙЛА = 'E:\SYSTEMDATABASES\MODEL.MDF'); GO ПРОМЕНЯТЕ ФАЙЛ ЗА МОДЕЛ НА БАЗА ДАННИ (ИМЕ =MODELLOG, FILENAME = 'E:\SYSTEMDATABASES\MODELLOG.LDF'); GO ПРОМЕНЯТЕ ФАЙЛ ЗА МОДИФИКАЦИЯ НА БАЗА ДАННИ MSDB (ИМЕ =MSDBDATA, FILENAME = 'E:\SYSTEMDATABASES\MSDBDATA.MDF'); GO ПРОМЕНЯТЕ ФАЙЛ ЗА ПРОМЕНЯНЕ НА БАЗА ДАННИ MSDB (ИМЕ =MSDBLOG, FILENAME = 'E:\SYSTEMDATABASES\MSDBLOG.LDF'); ОТПРАВИРезултатът е както следва:
Файлът "MODELDEV" е променен в системния каталог. Новият път ще се използва при следващото стартиране на базата данни. Файлът "MODELLOG" е променен в системния каталог. Новият път ще се използва при следващото стартиране на базата данни. Файлът "MSDBDATA" е променен в системния каталог. Новият път ще се използва при следващото стартиране на базата данни. Файлът "MSDBLOG" е променен в системния каталог. Новият път ще се използва при следващото стартиране на базата данни.Сега изпълнете следната заявка, за да проверите дали пътищата са актуализирани в системния каталог. За да направите това, изпълнете следната заявка:
ИЗБЕРЕТЕ DB_NAME(DATABASE_ID)КАТО [ИМЕ НА БАЗА ДАННИ], ФИЗИЧЕСКО_ИМЕ КАТО [МЕСТОПОЛОЖЕНИЕ НА ФАЙЛА] ОТ SYS.MASTER_FILES КЪДЕ DB_NAME(DATABASE_ID) В ('MSDB', 'GO Следва изходът:Име на база данни Логическо име Път до файла-------------- ------------------ --------- -----------------------------------model modeldev E:\SystemDatabases\model.mdfmodel modellog E:\SystemDatabases \modellog.ldfmsdb msdbdata E:\SystemDatabases\msdbdata.mdfmsdb msdblog E:\SystemDatabases\msdblog.ldfСтъпки за преместване на базата данни tempDB
Когато рестартираме SQL Server – той автоматично ще пресъздаде tempdb и регистрационните файлове, следователно не е необходимо да местим tempdb файловете ръчно – всичко, което трябва да направим, е да променим пътя на файловете на базата данни. За да промените пътя на файловете на базата данни tempdb, изпълнете следната заявка в PowerShell / SSMS.
ИЗПОЛЗВАЙТЕ MASTER; ОТКРЕТЕ ДА ПРОМЕНЯТЕ ФАЙЛ ЗА МОДИФИКАЦИЯ НА TEMPDB (ИМЕ =TEMPDEV, ИМЕ НА ФАЙЛА = 'E:\SYSTEMDATABASES\TEMPDB.MDF'); ОТИВАЙТЕ ПРОМЕНЯТЕ ФАЙЛА ЗА МОДИФИКАЦИЯ НА TEMPDB (ИМЕ =TEMPLOG, FILENAME = 'E:\SYSTEMDATABASES\TEMPLOG.LDF'); ОТПРАВИРезултатът е както следва:
Файлът "tempdev" е променен в системния каталог. Новият път ще се използва при следващото стартиране на базата данни. Файлът "templog" е променен в системния каталог. Новият път ще се използва при следващото стартиране на базата данни.Сега изпълнете следната заявка, за да проверите дали пътищата са актуализирани в системния каталог:
ИЗБЕРЕТЕ DB_NAME(DATABASE_ID)КАТО [ИМЕ НА БАЗА ДАННИ], ФИЗИЧЕСКО_ИМЕ КАТО [МЕСТОПОЛОЖЕНИЕ НА ФАЙЛА] ОТ SYS.MASTER_FILES КЪДЕ DB_NAME(DATABASE_ID) ='TEMPDB' GOСледва изходът:
Име на база данни Логическо име Път до файла-------------- ------------------ --------- -----------------------------------tempdb tempdev E:\SystemDatabases\tempdb.mdf tempdb templog E:\ SystemDatabases\templog.ldfСтъпки за преместване на основната база данни
Процесът на преместване на главната база данни на друго устройство е различен от преместването на други системни бази данни. За да преместим системната база данни, ще изпълним следните стъпки:
- Отворете Мениджър на конфигурацията на SQL Server 2017 и разгънете, кликнете върху SQL Server Services . Вижте следното изображение:
- Щракнете с десния бутон върху SQL сървър (MSSQLSERVER) и щракнете върху свойства. В диалоговия прозорец със свойства изберете „Параметри при стартиране " раздел. Вижте следното изображение:
- Както можете да видите на изображението по-горе, в съществуващите параметри текстовото поле съдържа местоположението по подразбиране на файла с данни, регистрационния файл и регистъра за грешки. Тук -d указва пътя по подразбиране на файла с данни на главната база данни по подобен начин -l посочва пътя по подразбиране на регистрационния файл на основната база данни. Трябва да заменим тези параметри с ново местоположение. Затова кликнете върху параметъра на файла с данни и го заменете с „– dE:\Systemdatabases\master.mdf ” стойност и щракнете върху Актуализиране. По същия начин щракнете върху параметъра на регистрационния файл и го заменете с “-lE:\Systemdatabases\mastlog.ldf” стойност и щракнете върху актуализиране. Вижте следното изображение:
4. Щракнете върху OK, за да затворите диалоговия прозорец.
Забележка:
Тъй като изпълняваме тази задача на екземпляр за преодоляване на отказ на SQL Server, трябва да извършим всички горепосочени промени на вторичните възли (SQL02.Dc.Local)
Рестартирайте услугите на SQL Server.
След като новият път на msdb, model и tempdb бъдат актуализирани в каталога на SQL Server, трябва да спрем услугите, за да копираме файловете на базата данни на нови устройства. За да направите това, отворете SQL Server конфигурационен мениджър 2017>> Щракнете върху Услуги>> Щракнете с десния бутон върху SQL Server (MSSQLSERVER) и щракнете върху „Стоп“. Вижте следното изображение:
Сега копирайте всички файлове на системната база данни на новото устройство. Вижте следното изображение:
Сега стартирайте услугата от мениджъра за конфигурация на SQL Server. Ако услугите стартират успешно, тогава пътят на системата и базите данни са актуализирани успешно. Изпълнете следната заявка, за да прегледате пътя на главната база данни:
ИЗБЕРЕТЕ DB_NAME(DATABASE_ID)КАТО [ИМЕ НА БАЗА ДАННИ], ФИЗИЧЕСКО_ИМЕ КАТО [МЕСТОПОЛОЖЕНИЕ НА ФАЙЛА] ОТ SYS.MASTER_FILES КЪДЕ DB_NAME(DATABASE_ID) ='MASTER' GOСледва изходът:
Име на база данни Логическо име Път до файла-------------- ------------------ --------- -----------------------------------главен главен E:\SystemDatabases\master.mdf главен мастлог E:\ SystemDatabases\mastlog.ldfРезюме
В тази статия обясних стъпка по стъпка процеса на преместване на системни бази данни на нов клъстериран диск.