Il modo in cui mi piace sempre visualizzare le soluzioni ad alta disponibilità è il seguente:
Istanza del cluster di failover di SQL Server (FCI)
Cosa è altamente disponibile? L'intera istanza. Ciò include tutti gli oggetti server (accessi, lavori di SQL Server Agent, ecc.). Ciò include anche i database e le loro entità di contenimento. È un'ottima soluzione per le istanze di SQL Server a disponibilità elevata, perché sarà il livello di contenimento con questa soluzione data.
Che dire dei rapporti? Nessuno, NULL, inesistente. Un'istanza del cluster di failover ha un nodo attivo che consegna il gruppo di cluster contenente l'istanza, VNN, ecc. E tutti gli altri nodi sono passivi, inattivi (per quanto riguarda l'attuale gruppo di cluster) e in attesa di un failover.
Cosa succede in caso di failover? Il tempo di inattività di una FCI sarà determinato dalla quantità di tempo impiegata dal nodo passivo per acquisire la risorsa del cluster e portare l'istanza di SQL Server in uno stato di esecuzione. Questo è in genere minimo nel tempo.
Qualche astrazione del cliente? Sì, questo verrà incorporato in modo innato con il nome della rete virtuale per l'istanza del cluster di failover. Questo indicherà sempre il nodo attivo che sta attualmente distribuendo la risorsa cluster di SQL Server.
Gruppi di disponibilità AlwaysOn
Cosa è altamente disponibile? Un gruppo di disponibilità sarà il contenimento logico dell'alta disponibilità qui, mentre un gruppo di disponibilità è costituito da un numero di database e un nome di rete virtuale (il listener, una risorsa cluster opzionale). Vale la pena notare che gli oggetti server come accessi e lavori di SQL Server Agent non faranno parte della soluzione HA e occorre prestare particolare attenzione per garantire che siano implementati correttamente con un gruppo di disponibilità. Non è un requisito eccessivamente gravoso, ma deve essere curato.
Che dire dei rapporti? Questa è un'ottima soluzione per i report, anche se probabilmente non userei una replica sincrona come istanza di reporting. Esistono due relazioni di commit, sincrone e asincrone. Secondo me e da quello che ho visto in pratica, è che la tua replica secondaria sincrona è lì in attesa di un disastro. Pensala come quella replica pronta a eseguire un failover senza perdita di dati in caso di problemi. Quindi esistono repliche asincrone in grado di gestire quel carico di lavoro di reporting. Non stai usando questa replica come soluzione di cui sopra, ma per altre cose come la segnalazione. I carichi di lavoro di reporting possono essere indirizzati a questa replica (direttamente o indirettamente tramite il routing di sola lettura tramite il listener).
Cosa succede in caso di failover? Per una replica secondaria di commit sincrono associata a failover automatico, si tratterà della modifica dello stato del ruolo di replica da SECONDARY_NORMAL a PRIMARY_NORMAL. Affinché ci sia un failover automatico, è necessario disporre di una replica secondaria sincrona attualmente sincronizzata e ciò che è implementato è il criterio di failover flessibile per determinare quando effettivamente dovrebbe verificarsi questo failover. Tale politica è effettivamente configurabile.
Qualche astrazione del cliente? Sì, è possibile configurare facoltativamente un listener di gruppi di disponibilità AlwaysOn. Questo è fondamentalmente solo un nome di rete virtuale (può essere visto tramite WSFC come una risorsa cluster nel gruppo cluster dell'AG) che punta alla replica primaria corrente. Questa è una parte fondamentale dello spostamento del carico di lavoro dei report e della creazione di un elenco di routing di sola lettura su tutti i server su cui si desidera reindirizzare il traffico ReadOnly (impostato tramite la stringa di connessione, con il provider .NET Framework per SQL Server, questo sarà il parametro Intento applicazione , impostato su ReadOnly ). È inoltre necessario impostare un URL di routing di sola lettura per ogni replica che si desidera ricevere questo carico di lavoro di report mentre si è nel ruolo di replica secondaria.
Replica transazionale
Cosa è altamente disponibile? Questo è discutibile, ma non dirò nulla . Non vedo la replica come una soluzione ad alta disponibilità. Sì, le modifiche ai dati vengono inviate agli abbonati ma stiamo parlando a livello di pubblicazione / articolo. Questo sarà un sottoinsieme dei dati (potrebbe includere tutti i dati, ma ciò non verrà applicato. Vale a dire creare una nuova tabella nel database del publisher e che non verrà automaticamente inviato agli abbonati). Per quanto riguarda l'HA, questo è il fondo del barile e non lo raggrupperò lì con una soluzione HA solida come una roccia.
Che dire dei rapporti? Un'ottima soluzione per la segnalazione di un sottoinsieme di dati, non c'è dubbio. Se si dispone di un database da 1 TB altamente transazionale e si desidera mantenere tale carico di lavoro di reporting fuori dal database OLTP, la replica transazionale è un ottimo modo per inviare un sottoinsieme di dati a un abbonato (o agli abbonati) per il carico di lavoro di reporting. Cosa succede se su quei 1 TB di dati il carico di lavoro dei report è solo di circa 50 GB? Questa è una soluzione intelligente e relativamente configurabile per soddisfare le esigenze della tua azienda.
Sommario
Ciò che si riduce a una manciata di domande a cui è necessario rispondere (in parte dall'azienda):
- Cosa deve essere altamente disponibile ?
- Cosa impone lo SLA per HA / DR?
- Che tipo di segnalazione avverrà e quali latenze sono accettabili?
- Cosa dobbiamo gestire con l' HA geograficamente disperso ? (la replica dell'archiviazione è costosa, ma indispensabile con una FCI. Le AG non richiedono l'archiviazione condivisa da istanze autonome e potresti utilizzare un testimone di condivisione file per il quorum che potenzialmente elimina la necessità di archiviazione condivisa)