Condividi tramite


Panoramica del mirroring del database

Data aggiornamento: 5 dicembre 2005

Il mirroring del database è essenzialmente una soluzione software per aumentare la disponibilità del database. Il mirroring viene implementato per singoli database e funziona solo con database che utilizzano il modello di recupero con registrazione completa. I modelli di recupero con registrazione minima e con registrazione minima delle transazioni di massa non supportano il mirroring del database. Di conseguenza, tutte le operazioni di massa vengono registrate per intero. Il mirroring del database funziona con qualsiasi livello di compatibilità del database supportato.

[!NOTA] Non è possibile eseguire il mirroring dei database master, msdb, tempdb o model.

Il mirroring del database gestisce due copie di un singolo database che devono trovarsi su istanze diverse di Motore di database di SQL Server (istanze del server). In genere, tali istanze del server risiedono su computer ubicati in posizioni diverse. Un'istanza del server (il server principale) rende disponibile il database per i client, mentre l'altra istanza (il server mirror) funge da server di hot standby o da server di standby a caldo (warm standby) in base alla configurazione e allo stato della sessione di mirroring. Quando viene sincronizzata una sessione di mirroring del database, il mirroring del database rende disponibile un server di hot standby che supporta il failover rapido senza perdita di dati da transazioni di cui è stato eseguito il commit. Quando la sessione non è sincronizzata, il server mirror è in genere disponibile come server di standby a caldo (warm standby) e ciò può causare perdite di dati.

Vantaggi del mirroring del database

Il mirroring del database è una semplice strategia che offre i vantaggi seguenti:

  • Maggiore protezione dei dati.
    Il mirroring del database offre una ridondanza dei dati completa o quasi completa, in base al fatto che la modalità operativa sia a protezione elevata o a prestazioni elevate. Per ulteriori informazioni, vedere "Modalità operative" di seguito in questo argomento.
  • Maggiore disponibilità di un database.
    In caso di emergenza, il failover automatico in modalità a protezione elevata attiva rapidamente la modalità in linea per la copia di standby del database (senza alcuna perdita di dati). Nelle altre modalità operative l'amministratore del database può scegliere se forzare il servizio (con possibile perdita di dati) nella copia di standby del database. Per ulteriori informazioni, vedere "Cambio di ruolo" di seguito in questo argomento.
  • Migliore disponibilità del database di produzione durante gli aggiornamenti.
    Per ridurre il tempo di inattività di un database con mirroring, è possibile aggiornare in sequenza le istanze di SQL Server che partecipano in una sessione di mirroring del database, provocando il tempo di inattività di un singolo failover. Questo modo di aggiornamento è noto come aggiornamento in sequenza. Per ulteriori informazioni, vedere Procedura: Installazione di un Service Pack in un sistema con tempi di inattività minimi dei database con mirroring.

Funzionamento del mirroring del database

Il server principale e il server mirror comunicano e cooperano come partner in una sessione di mirroring del database. I due partner svolgono ruoli complementari nella sessione: il ruolo principale e il ruolo mirror. In ogni momento, un partner svolge il ruolo principale, l'altro il ruolo mirror. Ogni partner è definito proprietario del suo ruolo corrente. Il partner proprietario del ruolo principale è definito server principale e la sua copia del database è il database principale corrente. Il partner proprietario del ruolo mirror è definito server mirror e la sua copia del database è il database mirror corrente. Quando il mirroring del database è distribuito in un ambiente di produzione, il database principale è il database di produzione.

Il mirroring del database include il rollforward sul database mirror di tutte le operazioni di inserimento, aggiornamento ed eliminazione eseguite sul database principale il più rapidamente possibile. Il rollforward viene eseguito inviando ogni record del log delle transazioni attivo al server mirror, il quale applica i record del log al database mirror, in sequenza, il più rapidamente possibile. Diversamente dalla replica, che opera a livello logico, il mirroring del database opera a livello dei record del log fisico.

Modalità operative

Una sessione di mirroring del database può essere eseguita in un'operazione sincrona o asincrona. In modalità asincrona il commit delle transazioni viene eseguito senza attendere che il server mirror salvi il log su disco, ottimizzando così le prestazioni. L'operazione sincrona assicura che il commit di una transazione venga eseguito su entrambi i partner, ma con il rischio di aumentare la latenza delle transazioni.

Per il mirroring del database sono disponibili due modalità operative. Una di esse, la modalità a protezione elevata supporta l'operazione sincrona. In modalità a protezione elevata, all'avvio di una sessione, il server mirror sincronizza il database mirror con il database principale il più rapidamente possibile. Quando i database sono sincronizzati, il commit di una transazione viene eseguito su entrambi i partner, ma con il rischio di aumentare la latenza delle transazioni.

La seconda modalità operativa, la modalità a prestazioni elevate, prevede l'esecuzione in modo asincrono. Il server mirror tenta di restare sincronizzato con i record del log inviati dal server principale. Anche se il database mirror può restare un passo indietro rispetto al database principale, il divario tra i database è in genere di entità ridotta, ma può diventare significativo se il server principale è soggetto a un ingente carico di lavoro o se il sistema del server mirror è sottoposto a overload.

In modalità a prestazioni elevate, non appena il server principale invia un record del log al server mirror, il server principale invia una conferma al client, senza attendere un acknowledgement dal server mirror. Il commit delle transazioni viene pertanto eseguito senza attendere che il server mirror salvi il log su disco. L'operazione asincrona consente l'esecuzione del server principale con una latenza minima per le transazioni, ma comporta il rischio potenziale di perdita dei dati.

Tutte le sessioni di mirroring del database supportano solo un server principale e un server mirror. Nella figura seguente viene illustrata questa configurazione.

Partner in una sessione di mirroring del database

La modalità a prestazioni elevate con failover automatico richiede la presenza di una terza istanza del server, nota come server di controllo del mirroring. A differenza dei due partner, il server di controllo del mirroring non rende disponibile il database, ma supporta semplicemente il failover automatico mediante la verifica dell'efficienza del server principale. Il server mirror avvia il failover automatico solo se il server mirror e il server di controllo del mirroring rimangono connessi tra loro dopo la disconnessione di entrambi dal server principale.

Nella figura seguente viene illustrata una configurazione che include un server di controllo del mirroring.

Sessione di mirroring che include un server di controllo del mirroring

Per ulteriori informazioni, vedere "Cambio di ruolo" di seguito in questo argomento.

Protezione delle transazioni e modalità operative

La modalità operativa può essere sincrona o asincrona in base all'impostazione del livello di protezione delle transazioni. Se si utilizza esclusivamente SQL Server Management Studio per configurare il mirroring del database, le impostazioni di protezione delle transazioni vengono configurate automaticamente quando si seleziona la modalità operativa.

Se si utilizza Transact-SQL per configurare il mirroring del database, è necessario conoscere la procedura di impostazione della protezione delle transazioni. La protezione delle transazioni è controllata dalla proprietà SAFETY dell'istruzione ALTER DATABASE. In un database sottoposto a mirroring, la proprietà SAFETY può essere impostata su FULL o su OFF.

  • Se l'opzione SAFETY è impostata su FULL, l'operazione di mirroring del database è sincrona dopo la fase di sincronizzazione iniziale. Se un server di controllo del mirroring è in modalità a protezione elevata, la sessione supporta il failover automatico.
  • Se l'opzione SAFETY è impostata su OFF, l'operazione di mirroring del database è asincrona. La sessione viene eseguita in modalità a prestazioni elevate e anche l'opzione WITNESS deve essere impostata su OFF.

Per ulteriori informazioni, vedere Impostazioni di Transact-SQL e modalità operative del mirroring del database.

Cambio di ruolo

Nel contesto di una sessione di mirroring del database, in genere i ruoli principale e mirror sono intercambiabili tramite un processo denominato cambio di ruolo. Il cambio di ruolo comporta il trasferimento del ruolo principale al server mirror. In un cambio di ruolo, il server mirror funge da partner di failover per il server principale. Quando si verifica un cambio di ruolo, il server mirror assume il ruolo principale e attiva la modalità in linea per la propria copia del database come nuovo database principale. Il server principale precedente, quando disponibile, assume il ruolo di mirror e il suo database diventa il nuovo database mirror. Potenzialmente, i ruoli possono essere scambiati ripetutamente nei due sensi.

Esistono le tre forme seguenti di cambio di ruolo:

  • Failover automatico
    Richiede la modalità a protezione elevata e la presenza di un server mirror e di un server per il controllo del mirroring. Il database deve essere già sincronizzato e il server di controllo del mirroring deve essere connesso al server mirror.
    Il ruolo del server di controllo del mirroring consiste nel verificare il funzionamento di un determinato server partner. Se il server mirror perde la connessione al server principale, ma il server di controllo del mirroring è ancora connesso al server principale, il server non avvierà il failover. Per ulteriori informazioni, vedere Server di controllo del mirroring del database.
  • Failover manuale
    Richiede la modalità a protezione elevata. I partner devono essere connessi tra loro e il database deve essere già sincronizzato.
  • Servizio forzato (con possibile perdita di dati)
    In modalità a prestazioni elevate e a protezione elevata senza failover automatico, è possibile forzare il servizio se il server principale non è disponibile e il server mirror è disponibile.
    ms189852.note(it-it,SQL.90).gifImportante:
    La modalità a prestazioni elevate è destinata all'utilizzo senza un server di controllo del mirroring. Tuttavia, se è disponibile un server per il controllo del mirroring, per poter forzare il servizio è necessario che il server di controllo del mirroring sia connesso al server mirror.

In qualsiasi scenario di cambio di ruolo, quando il nuovo database principale è in linea, le applicazioni client possono eseguire un rapido recupero tramite la riconnessione al database.

Supporto di mirroring del database

I partner per il mirroring del database e i server di controllo del mirroring sono supportati in SQL Server 2005 Standard Edition SP1 e versioni successive e in SQL Server 2005 Enterprise Edition SP1 e versioni successive. I partner devono tuttavia utilizzare la stessa edizione e il mirroring del database asincrono (prestazioni elevate) è supportato solo in SQL Server 2005 Enterprise Edition SP1 e versioni successive. I server di controllo del mirroring sono supportati anche in SQL Server 2005 Workgroup Edition SP1 e versioni successive e in SQL Server 2005 Express Edition SP1 e versioni successive.

Argomenti correlati al mirroring del database

Vedere anche

Altre risorse

Connessione di client a un database con mirroring
Utilizzo del mirroring del database con altri componenti e funzionalità
sp_dbcmptlevel (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005