Failover automatico
Il failover automatico è supportato esclusivamente nelle sessioni di mirroring del database in esecuzione con un server di controllo del mirroring in modalità a protezione elevata (modalità a protezione elevata con failover automatico). In modalità a protezione elevata con failover automatico, dopo la sincronizzazione del database, se il database principale risulta non disponibile, si verifica un failover automatico. In seguito a questo processo, il server mirror assume il ruolo di server principale e attiva la modalità in linea per la propria copia del database come database principale. La sincronizzazione del database impedisce la perdita di dati durante il failover, poiché per ogni transazione di cui è stato eseguito il commit nel database principale viene eseguito il commit anche nel database mirror.
Affinché il failover automatico garantisca una maggiore affidabilità, è necessario che il database mirror e principale si trovino in computer diversi.
Per l'esecuzione del failover automatico è necessario che si verifichino le condizioni seguenti:
La sessione di mirroring del database deve essere in esecuzione in modalità a protezione elevata e deve disporre di un server di controllo del mirroring. Per ulteriori informazioni, vedere Mirroring sincrono del database (modalità a sicurezza elevata).
La sessione deve disporre di un server di controllo del mirroring.
Il database mirror deve essere già stato sincronizzato. Questa condizione garantisce che il log inviato al server mirror sia stato interamente scritto su disco.
Le comunicazioni tra il server principale e gli altri componenti della configurazione di mirroring del database sono state interrotte, mentre il server mirror e il server di controllo del mirroring mantengono il quorum. Tuttavia, se si interrompe la comunicazione tra tutte le istanze del server e in un momento successivo il server di controllo del mirroring e il server mirror tornano a comunicare, il failover automatico non si verifica.
[!NOTA] Per ulteriori informazioni, vedere Quorum: Impatto di un server di controllo del mirroring sulla disponibilità del database.
Il server mirror ha rilevato la perdita del server principale.
La modalità in base a cui il server mirror rileva un errore del server principale varia a seconda che si tratti di un errore hardware o software. Per ulteriori informazioni, vedere Possibili errori durante il mirroring del database.
Se le condizioni riportate sopra sono soddisfatte, il failover automatico avvia la sequenza di azioni seguente:
Se il server principale è ancora in esecuzione, lo stato del database principale cambia in DISCONNECTED e tutti i client vengono disconnessi dal database principale.
Il server di controllo del mirroring e il server mirror rilevano che il server principale non è disponibile.
Se un log è in attesa nella coda di rollforward, il server mirror termina il rollforward del database mirror.
[!NOTA] La quantità di tempo necessaria per applicare il log varia in base alla velocità del sistema, al carico di lavoro recente e alle dimensioni del log nella coda di rollforward.
Viene attivata la modalità in linea per il database mirror precedente come nuovo database principale, mentre la procedura di recupero elimina tutte le transazioni di cui non è stato eseguito il commit eseguendone il rollback il più rapidamente possibile. Vengono utilizzati blocchi per isolare tali transazioni.
Quando il server principale precedente partecipa nuovamente alla sessione, esso rileva che ora è il proprio partner a detenere il ruolo di server principale. Il server principale precedente assume il ruolo di server mirror, rendendo la propria copia del database il nuovo database mirror. Il nuovo server mirror provvede il più rapidamente possibile a sincronizzare il nuovo database mirror con il database principale. Nell'istante stesso in cui il nuovo server mirror ha ristabilito la sincronizzazione dei database, il failover è nuovamente possibile, stavolta nella direzione inversa.
Nella figura seguente viene illustrata una singola istanza di failover automatico.
La sessione ha inizialmente un quorum completo, ovvero tutti e tre i server sono connessi. Partner_A è il server principale e Partner_B il server mirror. Partner_A, o il database principale del Partner_A, diventa non disponibile. Sia il server di controllo del mirroring che Partner_B rilevano che il server principale non è più disponibile e la sessione mantiene il quorum. Partner_B diviene il server principale e rende disponibile la propria copia del database come nuovo database principale. Quando si riconnette alla sessione, Partner_A rileva che Partner_B detiene ora il ruolo di server principale. Partner_A assume quindi il ruolo di server mirror.
Dopo il failover, i client devono riconnettersi al database principale corrente. Per ulteriori informazioni, vedere Connessione di client a un database con mirroring.
[!NOTA] Le transazioni che sono state preparate utilizzando Microsoft Distributed Transaction Coordinator, ma di cui non è stato ancora eseguito il commit nel momento in cui si verifica un failover, vengono considerate interrotte dopo il failover del database.
Disabilitazione del failover automatico mediante SQL Server Management Studio
Per disabilitare il failover automatico, aprire la pagina Mirroring di Proprietà database e cambiare la modalità operativa selezionando una delle seguenti opzioni:
- Protezione elevata senza failover automatico (sincrona)
In questa modalità il database continua a essere sincronizzato e il failover manuale rimane possibile. Per ulteriori informazioni, vedere Mirroring sincrono del database (modalità a sicurezza elevata). - Prestazioni elevate (asincrona)
In questa modalità il database mirror potrebbe avere un certo ritardo rispetto al database principale e il failover manuale non è più possibile. Per ulteriori informazioni, vedere Mirroring asincrono del database (modalità a prestazioni elevate).
Per cambiare modalità operativa
Disabilitazione del failover automatico mediante Transact-SQL
In un punto qualsiasi di una sessione di mirroring del database, il proprietario del database può disabilitare il failover automatico disattivando il server di controllo del mirroring.
Per disattivare il server di controllo del mirroring
[!NOTA] Se si disattiva il server di controllo del mirroring mentre resta attiva la protezione completa delle transazioni, la sessione passa in modalità a protezione elevata senza failover automatico.
Vedere anche
Concetti
Stima dell'interruzione del servizio durante il cambio di ruolo
Possibili errori durante il mirroring del database
Stati di mirroring
Mirroring sincrono del database (modalità a sicurezza elevata)