Eseguire il failover e il ripristino di database in mirroring in una sola farm

In questo articolo viene illustrato come eseguire il failover e il ripristino di una farm di Microsoft Office SharePoint Server 2007 configurata per l'utilizzo del mirroring di database a elevata disponibilità, sulla base delle procedure illustrate nell'articolo Configurare la disponibilità in una sola farm tramite mirroring del database di SQL Server.

Sezioni dell'articolo:

  • Processo di failover automatico per un database con mirroring

  • Processo di failover manuale per un database con mirroring

  • Monitorare e consultare gli avvisi del mirroring del failover

  • Processo: eseguire il failover di tutti i database restanti

  • Processo: aggiornare gli alias di connessione

  • Failback

  • Riepilogo

Quando si verifica il failover di un ambiente di Microsoft Office SharePoint Server 2007 che esegue database con mirroring, è necessario che vengano eseguiti i processi seguenti:

  • Viene eseguito il failover sul server mirror di uno o più database nel server principale, automaticamente o manualmente.

  • Viene imposto il failover di tutti gli altri database del server principale.

    È consigliabile utilizzare gli avvisi e i processi di Microsoft SQL Server 2005 per monitorare il mirroring e imporre il failover di tutti i database.

  • Gli alias di connessione in tutti i server Web front-end e i computer che fanno riferimento ai database vengono reimpostati in modo da fare riferimento al server mirror.

Processo di failover automatico per un database con mirroring

Il failover automatico si verifica quando il server principale ha perso la comunicazione con il resto della configurazione di mirroring del database mentre il server mirror e il server di controllo mantengono la comunicazione.

Nota

Se tutte le istanze deI server perdono la comunicazione, il failover automatico non si verifica, anche se il server mirror e il server di controllo ristabiliscono la comunicazione in un secondo momento.

Quando viene avviato il failover automatico, si verifica il processo seguente:

  1. Se il server principale è ancora in esecuzione, lo stato del database principale viene impostato su DISCONNESSO e tutti i client vengono disconnessi dal database principale.

  2. Il server di controllo e il server mirror rilevano che il server principale non è disponibile.

  3. Se nella coda rollforward sono presenti registri in attesa, il server mirror completerà il roll forward dei database mirror. Il tempo richiesto per applicare il registro dipende dalla velocità del sistema, dal carico di lavoro recente e dalla dimensione dei registri nella coda rollforward.

  4. Quando il server principale precedente ritorna nella sessione, riconosce che il partner di failover è ora proprietario del ruolo principale. Il server principale precedente assume il ruolo di server mirror e il database principale precedente diventa il database mirror. Il nuovo server mirror sincronizza il nuovo database mirror con il database principale il prima possibile. Non appena il nuovo server mirror ha completato la risincronizzazione dei database, il failover risulta di nuovo possibile ma nella direzione inversa.

Per una descrizione più dettagliata del failover automatico, vedere Failover automatico (https://go.microsoft.com/fwlink/?linkid=83690&clcid=0x410).

Processo di failover manuale per un database con mirroring

Il failover manuale si verifica in genere quando sono ancora in esecuzione sia il server principale che il server mirror. L'amministratore decide in modo specifico di passare il database attivo dal server principale al server mirror.

Durante un failover manuale si verifica il processo seguente:

  1. L'amministratore si connette al server principale e utilizza i comandi Transact-SQL seguenti per ogni database:

    USE master;
    ALTER DATABASE <database_name> SET PARTNER FAILOVER; -- where database_name is the mirrored database. 
    

    Questa istruzione avvia una transizione immediata del server mirror al ruolo principale.

  2. Nel server principale precedente i client vengono disconnessi dal database e viene eseguito il rollback delle transazioni non salvate.

Quando si esegue il failover manuale con una configurazione di failover automatico che include un server di controllo, il server principale e il server mirror cambiano automaticamente ruolo.

Monitoraggio e avvisi relativi al failover con mirroring

Utilizzare gli avvisi di SQL Server per monitorare il mirroring ed eseguire processi che impongono il failover. È consigliabile utilizzare i processi e gli avvisi sia sulle istanze principali che sulle istanze mirror di SQL Server.

Avviso: rilevare il passaggio di un singolo database da principale a mirror

All'interno dell'avviso viene utilizzato un comando Transact-SQL per rilevare se alcuni database sono passati al database mirror corrispondente.

SELECT * FROM Database_MIRRORING_STATE_CHANGE 
WHERE State=8 AND (databasename='Central Administration' OR databasename='Configuration' 
ORdatabasename='SSP' 
OR databasename=’SSP Content' 
OR databasename='SSP Search' 
OR databasename='WSS Search' 
OR databasename='Content_<port>' )

Processo: eseguire il failover di tutti i database rimanenti

Dopo la visualizzazione dell'avviso di rilevamento, eseguire un processo per imporre il failover di tutti i database sui database mirror corrispondenti.

Nell'esempio seguente è disponibile uno script Transact-SQL che può essere utilizzato in un processo per eseguire il failover di tutti i database con mirroring:

USE master;
DECLARE i CURSOR
READ_ONLY
FOR 
SELECT name FROM sys.databases WHERE database_id IN
(SELECT database_id FROM sys.database_mirroring WHERE mirroring_state=4)

DECLARE @name varchar(255)
DECLARE @cmd varchar(1000)
OPEN i

FETCH NEXT FROM i INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
set @cmd = 'ALTER Database [' + @name + '] SET PARTNER FAILOVER;'
exec (@cmd)

DECLARE @message varchar(100)
SELECT @message = 'Failover for : ' + @name
PRINT @message
END
FETCH NEXT FROM i INTO @name
END

CLOSE i
DEALLOCATE i
GO

Processo: aggiornare gli alias di connessione

Dopo il failover, il nome del server database associato all'alias di connessione di SQL Server deve essere cambiato dal server principale al server mirror in tutti i computer che eseguono Microsoft Office SharePoint Server 2007.

Nota

Il riferimento che si trova all'interno di ogni applicazione Web non viene modificato. Non è pertanto necessaria alcuna operazione in Microsoft Office SharePoint Server 2007 dopo il failover.

Creare un processo di SQL Server da eseguire dopo il completamento del failover. In tale processo eseguire un comando per cambiare in mirror l'impostazione del Registro di sistema relativa al valore dell'alias:

\Registry\Machine\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo
<alias> = REG_SZ DBMSSOCN,DBMirror

Nota

È necessario che l'account utilizzato per eseguire i processi e gli avvisi di SQL Server disponga di autorizzazioni appropriate per la modifica dei valori del Registro di sistema nei computer che eseguono Microsoft Office SharePoint Server 2007. Per ulteriori informazioni, vedere Assegnare le autorizzazioni a una chiave del Registro di sistema (https://go.microsoft.com/fwlink/?linkid=116137&clcid=0x410).

Per un esempio relativo alla procedura di reazione di questo processo, vedere Case study di disponibilità elevata per SharePoint tramite il mirroring del database (white paper).

Esecuzione del failback

Per eseguire il failback sul server principale, è necessario eseguire manualmente il failback dei database. È possibile utilizzare gli stessi processi di SQL Server per automatizzare il failback e la reimpostazione degli alias di connessione del client di SQL Server. Prima di eseguirli, è necessario modificare i valori impostati nei processi.

Dopo avere configurato il mirroring in un ambiente con singola farm, è consigliabile testare i processi, gli avvisi, i processi e gli script per il failover e il failback. Se si verifica il failover di un singolo database, è consigliabile scrivere script che tentano innanzitutto di eseguire il failback sul server principale prima di eseguire il failover di tutti gli altri database nel server mirror.

Scaricare il manuale

Questo argomento è incluso nel manuale seguente, che può essere scaricato per una lettura e una stampa più agevoli: