Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Disponibilità elevata di SQL Server:aggiungere un nuovo disco a un'istanza del cluster di failover esistente

Nel mio articolo precedente, ho spiegato il processo dettagliato di installazione di un nodo nell'istanza del cluster di failover di SQL Server esistente. Oltre a ciò, ho anche dimostrato il failover manuale e il failover automatico.

In questo articolo, dimostrerò il processo di aggiunta di un disco in un cluster di failover e quindi sposterò il database esistente su una nuova unità.

Innanzitutto, per aggiungere un disco nel cluster, è necessario eseguire i seguenti passaggi:
1. Crea un nuovo disco virtuale iSCSI.
2. Connettiti al nuovo disco virtuale iSCSI utilizzando l'iniziatore iSCSI dai nodi del cluster di failover.
3. Aggiungi un nuovo disco a uno storage cluster di failover esistente.
4. Sposta il file di database di esempio sul nuovo disco.
Per prima cosa, lascia che ti dia una breve introduzione alla configurazione demo. Ho creato quattro macchine virtuali sul mio computer. Ecco i dettagli:

Macchina virtuale Nome host Indirizzo IP Scopo
Controller di dominio DC.Local 192.168.1.110 Questa macchina virtuale verrà utilizzata come controller di dominio.
SAN SAN.DC.Local 192.168.1.111 Questa macchina virtuale verrà utilizzata come SAN virtuale. Ho creato due dischi virtuali iSCSI che collegherò dai nodi del cluster di failover utilizzando l'iniziatore iSCSI.
Nodo SQL primario SQL01.DC.Local 192.168.1.112 Su questa macchina virtuale, installeremo l'istanza cluster di failover.
Nodo SQL secondario SQL02.DC.Local 192.168.1.113 Su questa macchina virtuale, installeremo il nodo secondario dell'istanza del cluster di failover.

Su SAN.DC.Local , ho creato tre unità iSCSI. I dettagli sono i seguenti:

nome unità iSCSI Scopo
Sql-data Su questa unità, stiamo archiviando file di database di database utente e file TempDB.
Sql-log Su questa unità stiamo archiviando i file di registro dei database degli utenti.
quorum Questa unità viene utilizzata come quorum.

Di seguito è riportato lo screenshot della nostra configurazione:

Crea un disco iSCSI

Come accennato in precedenza, dovremmo prima creare un'unità virtuale iSCSI. In questo caso, utilizzerò PowerShell per creare e configurare dischi virtuali iSCSI di dimensioni fisse. La dimensione del disco virtuale è di 8 GB. Per creare una nuova unità iSCSI, eseguire il comando seguente.

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

Per verificare che il disco iSCSI sia stato creato correttamente, apri S ver M arrabbiato e fai clic su Dischi virtuali iSCSI nel riquadro di sinistra. Vedi l'immagine seguente:

Ora dobbiamo creare una destinazione iSCSI. I server remoti possono connettersi a un disco virtuale utilizzando il nome di destinazione. Qui creerò un target chiamato new-sql-data . Per creare una destinazione iSCSI denominata "new-sql-data ” e assegnalo a SQL02.dc.Local e SQL02.dc.Local , esegui il comando seguente.

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")

Una volta creata la destinazione iSCSI, dobbiamo assegnare il nostro disco virtuale alla destinazione iSCSI. Per farlo, esegui la seguente query:

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

Una volta completata la mappatura della destinazione, aggiornare il riquadro del disco virtuale iSCSI in Server Manager. Vedi l'immagine seguente:

Connettiti al nuovo disco virtuale iSCSI utilizzando l'iniziatore iSCSI dai nodi del cluster di failover

Ora connettiamoci a questa unità da SQL01.dc.local nodo utilizzando RDP.

Per connetterti al disco virtuale iSCSI utilizzando l'iniziatore iSCSI, apri l'iniziatore iSCSI e fai clic su Aggiorna pulsante per scoprire l'obiettivo. Ora puoi scegliere il nome del target appropriato da "Obiettivi scoperti " casella di testo. Seleziona il target appropriato e fai clic su C collega . Vedi l'immagine seguente:

Una volta collegati al disco virtuale, puoi vedere il disco nella D si M arrabbiato sezione in C computer M gestione . Per utilizzare il disco all'interno del cluster, dobbiamo eseguire le seguenti attività:

  • Porta il disco online. Per farlo, fai clic con il pulsante destro del mouse su D è 4 e seleziona Online . Vedi l'immagine seguente:

  • Una volta che il disco è online, inizializza il disco. Per farlo, fai clic con il pulsante destro del mouse su Disco 4 e seleziona Inizializza disco . Vedi l'immagine seguente:

  • Una volta inizializzato il disco, fai clic con il pulsante destro del mouse su Disco 4 e seleziona Nuovo volume semplice per creare una partizione. Vedi l'immagine seguente:

Allo stesso modo, dobbiamo connettere l'unità virtuale da SQL02.dc.local nodo. Per farlo, connetti SQL02.dc.local nodo utilizzando RDP, aprire l'iniziatore iSCSI e fare clic su Aggiorna pulsante per scoprire l'obiettivo. Ora puoi scegliere il nome della destinazione appropriato da Obiettivi scoperti casella di testo. Seleziona il target appropriato e fai clic su C collega . Vedi l'immagine seguente:

Aggiungi il nuovo disco a uno storage cluster di failover esistente.

Per aggiungere questo disco allo storage del cluster, connettiti a SQL01.Dc.Local utilizzando RDP, apri F amante C lustro M arrabbiato , connettiti a SQLCluster.DC.Local , seleziona D richiede dal pan di sinistra e fai clic su A disco dd . Verrà aperta la finestra di dialogo "Aggiungi disco al cluster". In questa finestra di dialogo verrà visualizzato il nuovo disco in cluster. Vedi l'immagine seguente:

Una volta aggiunto il nuovo disco, puoi vederlo nel menu del disco di Failover Cluster Manager. Vedi l'immagine seguente:

Sposta il file di database di esempio sul nuovo disco.

Una volta aggiunto il disco, spostiamo un file di database di esempio nella nuova unità. Ho creato un database chiamato de database su SQL01.dc.local . Vogliamo spostare il suo file di dati sul nuovo disco. A tale scopo, connettiti a PowerShell e quindi connettiti all'istanza di SQL Server utilizzando "SQLCmd comando '.

Una volta connesso all'istanza, esegui il comando seguente per scollegare il database.

exec sp_detach_db [demodatabase]
go

Una volta scollegato il database, copia il file di dati dall'unità F (vecchia unità) all'unità E (nuova unità) ed esegui il comando seguente per allegare il database.

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

Quando esegui il comando sopra, riceverai il seguente errore:

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.

Questo errore si verifica perché non abbiamo aggiunto il nuovo disco al gruppo di risorse del cluster e alla dipendenza AND del ruolo MSSQLSERVER. Vedi l'immagine seguente:

Per correggere questo errore, è necessario aggiungere il nuovo disco al ruolo MSSQLSERVER. Per farlo, apri Gestione cluster di failover, fai clic su Seleziona ruoli, fai clic con il pulsante destro del mouse su SQL Server (MSSQLSERVER ) e scegli Aggiungi spazio di archiviazione . Vedi l'immagine seguente:

Aggiungi spazio di archiviazione si aprirà la finestra di dialogo. Dall'elenco dello spazio di archiviazione disponibile, scegli il disco che abbiamo creato. Vedi l'immagine seguente:

Una volta aggiunta la memoria, possiamo verificarla dalla scheda delle risorse del ruolo MSSQLSERVER. Vedi l'immagine seguente:

Una volta aggiunto il disco, è necessario aggiungerlo anche alla dipendenza AND di SQL Server . A tale scopo, fare clic con il pulsante destro del mouse su SQL Server nell'elenco delle risorse in MSSQLSERVER ruolo e seleziona P proprietà . Nella P proprietà finestra di dialogo, vai alle Dipendenze scheda e seleziona Disco cluster 4 dalla casella a discesa in Risorse colonna.

Una volta aggiunta la risorsa disco, prova ad allegare il database utilizzando il seguente comando:

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

Il comando verrà eseguito correttamente. Per verificare che il file sia stato copiato nel percorso appropriato, eseguire la query seguente in PowerShell.

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

Di seguito è riportato l'output:

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

Come puoi vedere, il file del database è stato spostato nella nuova unità.

Riepilogo

In questo articolo, ho spiegato che il processo dettagliato di aggiunta di un disco a un'istanza cluster di failover di SQL Server esistente. Nel prossimo articolo spiegherò come spostare i database di sistema su un nuovo disco cluster.

Resta sintonizzato!