sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server Hög tillgänglighet:Lägg till ny disk till en befintlig failover-klusterinstans

I min tidigare artikel har jag förklarat steg-för-steg-processen för att installera en nod i befintliga SQL Server Failover Cluster Instance. Tillsammans med det har jag också demonstrerat manuell failover och automatisk failover.

I den här artikeln kommer jag att demonstrera processen att lägga till en disk i ett failover-kluster och sedan flytta den befintliga databasen till en ny enhet.

Först, för att lägga till en disk i klustret, måste vi utföra följande steg:
1. Skapa en ny virtuell iSCSI-disk.
2. Anslut till den nya virtuella iSCSI-disken med iSCSI-initiatorn från failover-klusternoder.
3. Lägg till en ny disk till en befintlig failover-klusterlagring.
4. Flytta exempeldatabasfilen till den nya disken.
Låt mig först ge dig en kort introduktion till demoinstallationen. Jag har skapat fyra virtuella maskiner på min dator. Här är detaljerna:

Virtuell maskin Värdnamn IP-adress Syfte
Domänkontrollant DC.Local 192.168.1.110 Denna virtuella maskin kommer att användas som en domänkontrollant.
SAN SAN.DC.Local 192.168.1.111 Denna virtuella maskin kommer att användas som ett virtuellt SAN. Jag har skapat två virtuella iSCSI-diskar som jag kommer att ansluta från failover-klusternoder med iSCSI-initiatorn.
Primär SQL-nod SQL01.DC.Local 192.168.1.112 På den här virtuella maskinen kommer vi att installera den failover-klustrade instansen.
Sekundär SQL-nod SQL02.DC.Local 192.168.1.113 På den här virtuella maskinen kommer vi att installera den sekundära noden för failover-klusterinstansen.

SAN.DC.Local , Jag har skapat tre iSCSI-enheter. Detaljerna är följande:

iSCSI-enhetsnamn Syfte
Sql-data På den här enheten lagrar vi databasfiler med användardatabaser och TempDB-filer.
Sql-log På den här enheten lagrar vi loggfilerna för användardatabaser.
quorum Denna enhet används som ett kvorum.

Följande är skärmdumpen av vår konfiguration:

Skapa en iSCSI-disk

Som jag nämnde ovan bör vi först skapa en virtuell iSCSI-enhet. I det här fallet kommer jag att använda PowerShell för att skapa och konfigurera virtuella iSCSI-diskar med fast storlek. Storleken på den virtuella disken är 8 GB. För att skapa en ny iSCSI-enhet, kör följande kommando.

New-IscsiVirtualDisk –Path F:\new-sql-data\new-sql-data.vhdx –SizeBytes (8GB) –UseFixed

För att verifiera att iSCSI-disken har skapats framgångsrikt, öppna S erver M anager och klicka på iSCSI virtuella diskar på den vänstra rutan. Se följande bild:

Nu måste vi skapa ett iSCSI-mål. Fjärrservrar kan ansluta till en virtuell disk genom att använda målnamnet. Här kommer jag att skapa ett mål som heter new-sql-data . För att skapa ett iSCSI-mål med namnet "new-sql-data ” och tilldela den till SQL02.dc.Local och SQL02.dc.Local , kör följande kommando.

New-IscsiServerTarget -TargetName "new-sql-data" -InitiatorIds @("IQN:iqn.1991-05.com.microsoft:sql01.dc.local", "IQN:iqn.1991-05.com.microsoft:sql02.dc.local")

När iSCSI-målet har skapats måste vi tilldela vår virtuella disk till iSCSI-målet. För att göra det, kör följande fråga:

Add-IscsiVirtualDiskTargetMapping -TargetName new-sql-data –Path "F:\new-sql-data\new-sql-data.vhdx"

När målmappningen är klar, uppdatera den virtuella iSCSI-diskrutan i Server Manager. Se följande bild:

Anslut till den nya virtuella iSCSI-disken med iSCSI-initiatorn från failover-klusternoder

Låt oss nu ansluta till den här enheten från SQL01.dc.local nod genom att använda RDP.

För att ansluta till den virtuella iSCSI-disken med iSCSI-initiatorn, öppna iSCSI-initiatorn och klicka på Uppdatera knappen för att upptäcka målet. Nu kan du välja rätt målnamn från "Upptäckta mål " textruta. Välj lämpligt mål och klicka på C anslut . Se följande bild:

När vi väl är anslutna till den virtuella disken kan du se disken i D isk M anager avsnitt under C dator M hantering . För att använda disken i klustret måste vi utföra följande uppgifter:

  • Sätt in disken online. För att göra det, högerklicka på D isk 4 och välj Online . Se följande bild:

  • När disken är online initialiserar du den. För att göra det högerklickar du på Disk 4 och välj Initiera disk . Se följande bild:

  • När disken har initierats högerklickar du på Disk 4 och välj Ny enkel volym för att skapa en partition. Se följande bild:

På samma sätt måste vi ansluta den virtuella enheten från SQL02.dc.local nod. För att göra det, anslut SQL02.dc.local nod som använder RDP, öppna iSCSI-initiatorn och klicka på Uppdatera knappen för att upptäcka målet. Nu kan du välja rätt målnamn från Upptäckta mål textruta. Välj lämpligt mål och klicka på C anslut . Se följande bild:

Lägg till den nya disken i ett befintligt failover-klusterlagring.

För att lägga till den här disken till klusterlagringen, anslut till SQL01.Dc.Local med RDP öppnar du F ailover C glans M anager , anslut till SQLCluster.DC.Local , välj D isker från den vänstra panoreringen och klicka på A dd disk . Dialogrutan "Lägg till disk i kluster" öppnas. I den här dialogrutan kommer den nya klustrade disken att visas. Se följande bild:

När den nya disken har lagts till kan du se den i diskmenyn i Failover Cluster Manager. Se följande bild:

Flytta exempeldatabasfilen till den nya disken.

När disken har lagts till, låt oss flytta en exempeldatabasfil till den nya enheten. Jag har skapat en databas som heter de modatabasSQL01.dc.local . Vi vill flytta dess datafil till den nya disken. För att göra det, anslut till PowerShell och anslut sedan till SQL Server-instansen med "SQLCmd kommando.

När du är ansluten till instansen, kör följande kommando för att koppla bort databasen.

exec sp_detach_db [demodatabase]
go

När databasen är lossad kopierar du datafilen från enhet F (gammal enhet) till enhet E (ny enhet) och kör följande kommando för att bifoga databasen.

CREATE DATABASE demodatabase
    ON (FILENAME = 'E:\SQLData\demodatabase.mdf'),   
    (FILENAME = 'F:\SQLLog\demodatabase_log.ldf')   
    FOR ATTACH; 
GO

När du kör kommandot ovan får du följande felmeddelande:

Msg 5184, Level 16, State 2, Server SQLCLUST, Line 1
Cannot use file 'E:\SQLData\demodatabase.mdf' for clustered server. Only formatted files on which the cluster resource of the server has a dependency can be used. Either the disk resource containing the file is not present in the cluster group or the cluster resource of the Sql Server does not have a dependency on it.

Det här felet uppstår eftersom vi inte lade till den nya disken i klusterresursgruppen och till OCH beroende av MSSQLSERVER-rollen. Se följande bild:

För att åtgärda detta fel måste vi lägga till den nya disken i rollen MSSQLSERVER. För att göra det, öppna Failover Cluster Manager, klicka på Välj roller, högerklicka på SQL Server (MSSQLSERVER ) roll och välj Lägg till lagring . Se följande bild:

Lägg till lagringsutrymme dialogrutan kommer att öppnas. Välj disken som vi skapade från listan över tillgängligt lagringsutrymme. Se följande bild:

När vi väl har lagt till lagringen kan vi verifiera den från resursfliken för MSSQLSERVER-rollen. Se följande bild:

När disken väl har lagts till måste vi också lägga till den i SQL Server OCH beroende . För att göra det högerklickar du på SQL Server i listan över resurser under MSSQLSERVER roll och välj P egenskaper . I P egenskaper dialogrutan, gå till Beroenden fliken och välj Cluster Disk 4 från rullgardinsmenyn i Resurser kolumn.

När diskresursen har lagts till, försök att bifoga databasen med följande kommando:

CREATE DATABASE demodatabase
    ON (FILENAME = 'E:\SQLData\demodatabase.mdf'),   
    (FILENAME = 'F:\SQLLog\demodatabase_log.ldf')   
    FOR ATTACH; 
GO

Kommandot kommer att utföras framgångsrikt. För att verifiera att filen har kopierats till rätt plats, kör följande fråga i PowerShell.

select db_name(database_id) as [database name], physical_name from sys.master_files where db_name(database_id) ='demodatabase'

Följande är resultatet:

Database Name		physical_name
------------ 		---------------------------------
demodatabase		E:\SQLData\demodatabase.mdf
demodatabase		F:\SQLLog\demodatabase_log.ldf

Som du kan se har databasfilen flyttats till den nya enheten.

Sammanfattning

I den här artikeln har jag förklarat att steg-för-steg-processen att lägga till en disk till en befintlig SQL Server-failover-klustrad instans. I nästa artikel kommer jag att förklara hur man flyttar systemdatabaser till en ny klustrad disk.

Håll utkik!


  1. Kan du skapa ett index i CREATE TABLE-definitionen?

  2. SQL-fråga för att få aggregerade resultat i kommaavgränsare tillsammans med grupp för kolumn i SQL Server

  3. Skapa en dynamisk mysql-fråga med php-variabler

  4. Hur pratar Access med ODBC-datakällor? Del 4