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.

Condizioni necessarie per un failover automatico

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

  • 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.

  • 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.

Funzionamento del failover automatico

Se le condizioni riportate sopra sono soddisfatte, il failover automatico avvia la sequenza di azioni seguente:

  1. Se il server principale è ancora in esecuzione, lo stato del database principale cambia in DISCONNECTED e tutti i client vengono disconnessi dal database principale.

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

  3. 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.

  4. 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.

  5. 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.

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:

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