sql >> Databáze >  >> RDS >> Sqlserver

Přesunout systémové databáze v clusteru převzetí služeb při selhání serveru SQL Server

Nedávno jsem byl přidělen k projektu – náš zákazník si koupil nové SAN a chtěl, abychom staré vyměnili za nové SAN. Uživatelské a systémové databáze využívaly SAN, mezitím byl operační systém a SQL nainstalovány na lokální disky serveru. Máme štěstí..!! Cílem bylo přesunout stávající uživatelské a systémové databáze do nové SAN a omezit prostoje na co nejmenší možnou míru. Abychom minimalizovali prostoje, rozhodli jsme se místo přeinstalace OS a SQL použít následující přístup.

  1. Připojte novou síť SAN ke stávajícímu serveru, vytvořte na něm nové disky a přidejte tyto disky do existující instance clusteru s podporou převzetí služeb při selhání.
  2. Zastavte SQL Server, zkopírujte hlavní databáze, model a databáze msdb na nových discích a spusťte služby SQL.
  3. Přesuňte uživatelské databáze na nové disky a odstraňte starou síť SAN.

V mém předchozím článku jsem vysvětlil krok za krokem proces přidávání nového úložiště do existujícího clusteru s podporou převzetí služeb při selhání. Navíc jsem předvedl proces přesunu uživatelských databází na nové disky.

V tomto článku předvedu proces přesunu systémových databází na nové disky, které jsem použil ve svém projektu. V mém předchozím článku jsme přidali jednotku do existujícího clusteru s podporou převzetí služeb při selhání a v tomto článku budeme používat stejnou jednotku. Jmenovka disku je „E:\ “, tak jsem vytvořil adresář s názvem „SystemDatabases ” v E:\ řídit. Viz následující obrázek:

V současné době jsou systémové databáze na „F:\MSSQL14.MSSQLSERVER\MSSQL\DATA “. Chceme tyto databáze přesunout do „E:\SystemDatabases “. Na rozdíl od uživatelských databází není přesun systémových databází jednoduchým procesem. Musíme dodržet správné pořadí a kroky, jinak se instance SQL nespustí.

Nejprve se podívejme na aktuální umístění systémových databází. Provedením následujícího dotazu získáte aktuální umístění systémové databáze.

POUŽÍVEJTE MASTERGOSELECT DB_NAME(DATABASE_ID) JAKO [NÁZEV DATABÁZE],        NAME JAKO [LOGICKÝ NÁZEV],        PHYSICAL_NAME JAKO [CESTA SOUBORU]  Z SYS.MASTER_FILES  WHERE DATABASE_ID <4

Následuje výstup:

DatabaseName Logical Name Cesta k souboru-------------- ------------------- --------- -----------------------------------master master 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.MSSQLSERVER\MSSQL\DATA\templog.ldfmodeldev \MSSQL14.MSSQLSERVER\MSSQL\DATA\model.mdfmodel modellog F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\modellog.ldfmsdb msdbdata F:\MSSQL14.MSSQLSERVER\MSSQL\DATA\msdbdata.mdfmsdb msdblog\F.MSSQLSERVER1 MSSQL\DATA\msdblog.ldf

Nyní vysvětlím proces přesunu databází do jiného adresáře následujícím způsobem.

  1. Vysvětlete kroky přesunu msdb a modelových databází.
  2. Vysvětlete kroky přesunu databáze tempdb.
  3. Vysvětlete kroky přesunu hlavní databáze.

Tato ukázka vám ukáže, jak přesunout všechny systémové databáze do E:\ disk, a tím snížit prostoje, takže na konci procesu restartuji služby SQL.

Kroky pro přesun msdb a modelových databází

Chcete-li přesunout databáze msdb a model, musíme nejprve aktualizovat umístění souborů v systémovém katalogu provedením dotazu ALTER Database. Chcete-li to provést, spusťte následující dotaz v prostředí PowerShell nebo 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:\SYSTEMDATABASE\MSDBDATA.MDF'); GO   ALTER DATABASE MSDB MODIFY FILE (NAME =MSDBLOG, FILENAME =  'E:\SYSTEMDATABASES\MSDBLOG.LDF'); GO

Výstup je následující:

Soubor "MODELDEV" byl změněn v systémovém katalogu. Nová cesta bude použita při příštím spuštění databáze. Soubor "MODELLOG" byl změněn v systémovém katalogu. Nová cesta bude použita při příštím spuštění databáze. V systémovém katalogu byl změněn soubor "MSDBDATA". Nová cesta bude použita při příštím spuštění databáze. Soubor "MSDBLOG" byl změněn v systémovém katalogu. Nová cesta bude použita při příštím spuštění databáze.

Nyní proveďte následující dotaz, abyste ověřili, že cesty jsou aktualizovány v systémovém katalogu. Chcete-li to provést, proveďte následující dotaz:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME],        PHYSICAL_NAME AS [UMÍSTĚNÍ SOUBORU]  Z SYS.MASTER_FILES  WHERE  DB_NAME(DATABASE_ID) IN ('MSDB', 'MODEL') GO 

Následuje výstup:

DatabaseName Logical Name Cesta k souboru-------------- ------------------- --------- ----------------------------------model modeldev E:\SystemDatabases\model.mdfmodel modellog E:\SystemDatabases \modellog.ldfmsdb msdbdata E:\SystemDatabases\msdbdata.mdfmsdb msdblog E:\SystemDatabases\msdblog.ldf

Postup přesunutí databáze tempDB

Když restartujeme SQL Server – automaticky znovu vytvoří soubory tempdb a soubory protokolu, takže soubory tempdb nemusíme přesouvat ručně – vše, co musíme udělat, je změnit cestu k databázovým souborům. Chcete-li změnit cestu k souborům databáze tempdb, proveďte následující dotaz v prostředí 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

Výstup je následující:

Soubor "tempdev" byl změněn v systémovém katalogu. Nová cesta bude použita při příštím spuštění databáze. Soubor "templog" byl změněn v systémovém katalogu. Nová cesta bude použita při příštím spuštění databáze.

Nyní proveďte následující dotaz, abyste ověřili, že cesty jsou aktualizovány v systémovém katalogu:

SELECT DB_NAME(DATABASE_ID)AS [NÁZEV DATABÁZE],        PHYSICAL_NAME AS [UMÍSTĚNÍ SOUBORU]  Z SYS.MASTER_FILES  WHERE  DB_NAME(DATABASE_ID) ='TEMPDB'  GO

Následuje výstup:

DatabaseName Logical Name Cesta k souboru-------------- ------------------- --------- -----------------------------------tempdb tempdev E:\SystemDatabases\tempdb.mdf tempdb templog E:\ SystemDatabases\templog.ldf

Postup přesunutí hlavní databáze

Proces přesunutí hlavní databáze na jiný disk se liší od přesunu jiných systémových databází. Chcete-li přesunout systémovou databázi, provedeme následující kroky:

  1. Otevřete Správce konfigurace SQL Server 2017 a rozbalte položku a klikněte na Služby SQL Server . Viz následující obrázek:
  2. Klikněte pravým tlačítkem na SQL Server (MSSQLSERVER) a klikněte na vlastnosti. V dialogovém okně vlastností vyberte „Parametry spuštění “. Viz následující obrázek:
  3. Jak můžete vidět na obrázku výše, ve stávajících parametrech textové pole obsahuje výchozí umístění datového souboru, souboru protokolu a protokolu chyb. Zde -d  označuje výchozí cestu datového souboru hlavní databáze  podobně -l  označuje výchozí cestu k souboru protokolu hlavní databáze. Tyto parametry musíme nahradit novým umístěním. Klikněte tedy na parametr datafile a nahraďte jej „–  dE:\Systemdatabases\master.mdf ” a klikněte na Aktualizovat. Podobně klikněte na parametr souboru protokolu a nahraďte jej řetězcem “-lE:\Systemdatabases\mastlog.ldf“ hodnotu a klikněte na aktualizovat. Viz následující obrázek:

4. Klepnutím na tlačítko OK zavřete dialogové okno.

Poznámka:

Protože tento úkol provádíme na instanci převzetí služeb při selhání SQL Server, musíme provést všechny výše uvedené změny na sekundárních uzlech (SQL02.Dc.Local)

Restartujte služby SQL Server.

Po aktualizaci nové cesty msdb, modelu a tempdb v katalogu SQL Server musíme zastavit služby, abychom zkopírovali databázové soubory na nové jednotky. Chcete-li tak učinit, otevřete SQL Server Configuration Manager 2017>> Klikněte na Služby>> Klikněte pravým tlačítkem na SQL Server (MSSQLSERVER) a klikněte na „Stop“. Viz následující obrázek:

Nyní zkopírujte všechny soubory systémové databáze na nový disk. Viz následující obrázek:

Nyní spusťte službu ze správce konfigurace serveru SQL. Pokud se služby úspěšně spustily, cesta k systému a databáze byly úspěšně aktualizovány. Provedením následujícího dotazu zkontrolujte cestu hlavní databáze:

SELECT DB_NAME(DATABASE_ID)AS [DATABASE NAME],        PHYSICAL_NAME AS [UMÍSTĚNÍ SOUBORU]  Z SYS.MASTER_FILES  WHERE  DATABASE_NAME(DATABASE_ID) ='MASTER'  GO

Následuje výstup:

DatabaseName Logical Name Cesta k souboru-------------- ------------------- --------- -----------------------------------master master E:\SystemDatabases\master.mdf master mastlog E:\ SystemDatabases\mastlog.ldf

Shrnutí

V tomto článku jsem vysvětlil krok za krokem proces přesunu systémových databází na nový seskupený disk.


  1. Žádná další data ke čtení z chyby soketu

  2. Způsoby, jak vědět, jak se vypořádat s korupcí databáze na serveru SQL

  3. Zavřít nebylo v databázi nikdy explicitně voláno

  4. Špatné návyky :Při výběru klíčů se zaměřte pouze na místo na disku