SQL Always On

Spesso capita di avere a che fare con database SQL che avrebbe senso proteggere con un sistema di alta affidabilità. Microsoft rende disponibili diverse metodologie per far ciò, tra cui la modalità Always On. Questa modalità è considerata la più facile e conveniente e cercherò qui di mostrarvi come si configura.

Per iniziare abbiamo necessità di predisporre due server (ormai quasi sempre virtuali) con un sistema operativo possibilmente moderno (ad oggi consiglio ovviamente o Windows Server 2016 o 2019); fatto ciò dobbiamo installare sui due server una versione di SQL Server Standard o Enterprise (la Standard ha chiaramente alcune funzionalità in meno rispetto alla Enterprise, ma che non starò a elencare). Nel mio caso ho installato SQL Server 2019 Enterprise.

L’installazione dei nodi SQL può avvenire come se fossero nodi standalone, quindi senza particolari accortezze (le configurazioni di default vanno bene).

Al termine dell’installazione è necessario eseguire i seguenti passaggi:

Aprire la console SQL Server Configuration Manager, cliccare tasto destro sull’istanza e selezionare Priprietà:

All’interno della scheda “Gruppi di disponibilità Always On” attivare la spunta “Abilita Gruppi di disponibilità Always On”:

Abilitare l’avvio automatico del servizio “SQL Server Agent” e avviarlo:

Accedere all’istanza tramite “SQL Management Studio”, selezionare i database presenti (nel mio caso il primo server era già esistente e stava erogando 4 DB) e nelle Proprietà–>Opzioni modificare il modello di recupero in “Con registrazione completa”:

Eseguire il backup dei DB presenti usando la funzione specifica presente nel menu Attività–>Backup:

Tramite “SQL Management Studio” è necessario assegnare i permessi ad ogni istanza agli altri server che comporranno il gruppo Always On; per esempio nel mio caso ho assegnato i permessi al SERVER01 per poter accedere al SERVER02 e viceversa:

use [master]
GO
CREATE LOGIN [DOMINIO\SERVER02$] FROM WINDOWS
GO
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [DOMINIO\SERVER02$]
GO

A questo punto è possibile avviare il wizard per creare il gruppo Always On:

Selezionare i DB che si vuole mettere in Always On:

Connettersi alla seconda istanza predisposta per lavorare in Always On:

Definire la preferenza di sincronizzazione dei dati; nel mio caso i DB sono piccoli ed ho lasciato quindi eseguire la sincronizzazione al sistema; in caso di DB grossi è possibile selezionare la seconda voce “Backup completo di database e log” e ripristinare a mano il DB sull’istanza secondaria (dai backup che abbiamo eseguito in precedenza); ci penserà poi l’Always On ad allinearli con le eventuali modifiche effettuare nel frattempo sui DB.

Al termine della sincronizzazione si dovrebbero ottenere 4 esiti positivi, come da figura:

Cliccare con il tasto destro del mouse sulla cartella “Gruppi di disponibilità” e cliccare su “Mostra dashboard”:

Se tutto risulta validato correttamente, il sistema è correttamente funzionante e le repliche sono attive:

A questo punto manca semplicemente la creazione del listener Always On per avere il sistema pronto per essere utilizzato. Avviare il wizard “Aggiungi listener”:

Definire la porta e l’IP del listener che lavorerà come VIP di frontend per la coppia di server inseriti nel Always On.

Gli applicativi potranno per cui essere configurati per puntare a questo VIP ed alla porta definita, attingendo quindi all’istanza di database in quel momento attiva. In caso di fail dell’istanza attiva, la secondaria prenderà in carico il VIP e procederà a servire immediatamente le attività sui DB protetti.

Share with: