Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Distribuisci gruppi di disponibilità Always On distribuiti da Microsoft SQL Server per DR su OCI
Introduzione
Distributed Always On availability group (gruppo di disponibilità distribuita) è una potente funzione di Microsoft SQL Server che estende le funzionalità del gruppo di disponibilità tradizionale per SQL Server.
I gruppi di disponibilità distribuiti ti consentono di creare una soluzione di disaster recovery (DR) che si estende su più cluster WSFC (Windows Server Failover Clusters) in esecuzione in diverse aree di Oracle Cloud Infrastructure (OCI).
Ciò consente di ottenere livelli più elevati di disponibilità, funzionalità di disaster recovery e distribuzione geografica per i database SQL Server critici in esecuzione su OCI.
Esclusioni per questo tutorial
In questa esercitazione non verrà illustrata la creazione passo per passo dei singoli gruppi di disponibilità Microsoft SQL Server Always On. Per ulteriori informazioni, vedere Distribuire i gruppi di disponibilità Always On Microsoft SQL Server per HA e DR su OCI.
Fare riferimento alla seguente documentazione Microsoft ufficiale:
Obiettivi
- Crea una soluzione di gruppo di disponibilità Always On distribuita da Microsoft SQL Server su OCI.
Prerequisiti
-
Gli elementi di base di un gruppo di disponibilità distribuito sono:
-
VCN: crea le reti cloud virtuali (VCN) OCI in due region OCI separate e connettiti tramite il peering remoto dei gateway di instradamento dinamico (DRG).
-
AOAG 1: questo è in esecuzione nell'area geografica 1 di OCI. Qui è dove il database da replicare viene eseguito normalmente. Si basa su un WSFC in esecuzione su SQL Server #1 e SQL Server #2 nell'esempio riportato di seguito (area OCI di Parigi).
-
AOAG 2: questa operazione è in esecuzione nell'OCI Region 2. Gruppo di disponibilità Always On completamente indipendente in esecuzione su un WSFC composto da SQL Server #3 e SQL Server #4 nell'esempio riportato di seguito (area OCI di Marsiglia).
-
AOAG distribuito: si tratta di un costrutto logico creato nel database SQL da replicare.
L'immagine seguente mostra la rappresentazione logica di un gruppo di disponibilità distribuito.
-
-
Creare due gruppi di disponibilità Always On indipendenti (uno nella prima area e l'altro nella seconda area). Per ulteriori informazioni, vedere Distribuire i gruppi di disponibilità Always On Microsoft SQL Server per HA e DR su OCI.
Ora, abbiamo due gruppi di disponibilità Always On indipendenti in esecuzione in due region OCI con peering. In questo esempio, le region OCI sono Parigi e Marsiglia.
-
Abbiamo il primo cluster WSFC (
paris-wsfc
) nella prima area con il primo gruppo di disponibilità Always On SQL (paris-aoag
) e il listener SQL (paris-sql-list
) per il gruppo di disponibilità Always On SQL.I due nodi Windows sono
sql-srv1
esql-srv2
. -
Nella seconda area sono disponibili il secondo cluster WSFC (
marseille-wsfc
) con il secondo gruppo di disponibilità SQL Always On (marseille-aoag
) e il listener SQL (mars-sql-list
) per il secondo gruppo di disponibilità SQL Always On.I due nodi Windows sono
sql-srv3
esql-srv4
. -
Dal punto di vista di SQL Server, a partire da
sql-srv1
(paris-aoag
), in questo esempio è possibile vedere DemoDB che è il database replicato con il primo gruppo di disponibilità Always On e il nuovodistributed-aoag
creato. -
Pertanto, la connessione con
sql-srv3
(marseille-aoag
) consente di vedere in questo esempio anche il DemoDB che è il database replicato con il primo gruppo di disponibilità Sempre attivo, il nuovodistributed-aoag
creato e ilmarseille-aoag
che è il secondo gruppo di disponibilità Sempre attivo creato nel secondo sito (Marsiglia).
-
Task 1: Crea gruppo disponibilità distribuita
Creare un gruppo di disponibilità distribuita (distributed-aoag
) composto dai due gruppi di disponibilità Always On già in esecuzione.
Come già accennato, si suppone che due gruppi di disponibilità Always On indipendenti siano già attivi e in esecuzione in due region OCI diverse.
Il secondo gruppo di disponibilità Sempre attivo (marseille-aoag
), quello in standby, non deve avere database associati. Pertanto, praticamente il secondo gruppo di disponibilità Sempre attivo deve essere vuoto prima della creazione del gruppo di disponibilità distribuito, quindi senza alcun database di disponibilità associato. È possibile creare il secondo gruppo di disponibilità Sempre attivo, come al solito, con un database iniziale associato e successivamente è possibile rimuovere questo database utilizzato solo per creare il secondo gruppo di disponibilità Sempre attivo. Questo perché l'interfaccia grafica non è possibile creare un gruppo di disponibilità Sempre attivo con qualsiasi database associato.
-
Creare un gruppo di disponibilità distribuito nel primo gruppo di disponibilità Sempre attivo.
Connettersi a SQL Server sul primo server (nodo
sql-srv1
del sito di Parigi in questo esempio) ed eseguire i comandi SQL riportati di seguito.Nota:
-
I nomi del listener sono
paris-sql-list
emars-sql-list
. -
Porta TCP da utilizzare,
5022
è la porta dell'endpoint e deve essere utilizzata. Di solito è diverso dalla porta del listener (1433
). -
I nomi dei gruppi di disponibilità devono corrispondere esattamente ai nomi utilizzati dal gruppo di disponibilità Always On già in esecuzione.
USE MASTER; CREATE AVAILABILITY GROUP [distributed-aoag] WITH (DISTRIBUTED) AVAILABILITY GROUP ON 'paris-aoag' WITH ( LISTENER_URL = 'tcp://paris-sql-list.acme.corp:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC ), 'marseille-aoag' WITH ( LISTENER_URL = 'tcp://mars-sql-list.acme.corp:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC ); GO
-
-
Eseguire il join al gruppo di disponibilità distribuito nel secondo gruppo di disponibilità Sempre attivo.
Connettersi a SQL Server sul primo server del secondo gruppo di disponibilità Always On (server
sql-srv3
del sito Marsiglia) ed eseguire i seguenti comandi SQL.USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] JOIN AVAILABILITY GROUP ON 'paris-aoag' WITH ( LISTENER_URL = 'tcp://paris-sql-list.acme.corp:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC ), 'marseille-aoag' WITH ( LISTENER_URL = 'tcp://mars-sql-list.acme.corp:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC ); GO
-
È importante comprendere che, a differenza dei gruppi di disponibilità tradizionali, i gruppi di disponibilità distribuita non richiedono gruppi di risorse o ruoli nel WSFC. Tutti i metadati vengono gestiti all'interno di SQL Server. Ciò significa che anche SQL Server Management Studio non visualizza direttamente i nomi dei database nel gruppo di disponibilità distribuito.
Per visualizzare queste informazioni, eseguire il seguente script Transact-SQL.
--View metadata and status of the Distributed Availability Group SELECT r.replica_server_name, r.endpoint_url, rs.connected_state_desc, rs.role_desc, rs.operational_state_desc, rs.recovery_health_desc,rs.synchronization_health_desc, r.availability_mode_desc, r.failover_mode_desc FROM sys.dm_hadr_availability_replica_states rs INNER JOIN sys.availability_replicas r ON rs.replica_id=r.replica_id ORDER BY r.replica_server_name
Nota: per soddisfare la potenziale latenza di rete tra le aree, è stato configurato il gruppo di disponibilità Always On primario e secondario con replica a commit asincrono. Ciò riduce al minimo il sovraccarico delle prestazioni nel database primario. All'interno di ciascun gruppo di disponibilità Always On, abbiamo scelto la replica a commit sincrono tra le repliche per garantire l'alta disponibilità. Tuttavia, per il failover tra le repliche di commit asincrono (in caso di gruppo di disponibilità distribuito), la riduzione della perdita di dati richiede un passaggio temporaneo alla modalità di commit sincrono prima di avviare il failover. Per failover_mode, l'unica modalità disponibile per il gruppo di disponibilità distribuita è manuale.
Task 2: procedura di failover per il gruppo di disponibilità distribuita
In questo task si parlerà di failover tra i due gruppi di disponibilità Always On. La procedura di failover del database è composta dai seguenti semplici passi e controlli.
-
Controlli iniziali.
-
Modificare la modalità di disponibilità da asincrona a sincrona per il gruppo di disponibilità Always On primario e il gruppo di disponibilità Always On secondario.
-
Eseguire gli script per verificare se la sincronizzazione è corretta.
-
Modificare il ruolo del gruppo di disponibilità Sempre attivo principale da primario a secondario.
-
Failover al gruppo di disponibilità Always On secondario.
-
Modificare la modalità di disponibilità da sincrona ad asincrona per il gruppo di disponibilità Always On primario e il gruppo di disponibilità Always On secondario.
Seguire i passi indicati:
-
Eseguire gli script riportati di seguito per verificare se la sincronizzazione è corretta, prima sull'SQL primario corrente del sito primario e quindi sull'SQL primario del sito secondario.
I risultati eseguiti devono essere
CONNECTED_STATE
=CONNECTED
eSYNCHRONIZATION_HEALTH
=HEALTHY
.select ag.name, ag.is_distributed, ar.replica_server_name, ar.availability_mode_desc, ars.connected_state_desc, ars.role_desc, ars.operational_state_desc, ars.synchronization_health_desc from sys.availability_groups ag join sys.availability_replicas ar on ag.group_id=ar.group_id left join sys.dm_hadr_availability_replica_states ars on ars.replica_id=ar.replica_id where ag.is_distributed=1 GO
-
Modificare la modalità di disponibilità. Eseguire lo script seguente prima sull'SQL Server primario corrente del sito primario e quindi sull'SQL Server primario del sito secondario.
--Run this first on the primary replica of the primary AOAG and then again on the secondary AOAG USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] MODIFY AVAILABILITY GROUP ON 'paris-aoag' WITH ( AVAILABILITY_MODE = SYNCHRONOUS_COMMIT ), 'marseille-aoag' WITH ( AVAILABILITY_MODE = SYNCHRONOUS_COMMIT );
-
Per evitare perdite di dati, verificare i risultati di questo passo. Lo stato deve essere
SYNCHRONIZED
elast_hardened_lsn
deve corrispondere per ogni database sia nel database primario globale che nell'inoltro.-- Run this query on the Global Primary and the forwarder -- Check the results to see if synchronization_state_desc is SYNCHRONIZED, and the last_hardened_lsn is the same per database on both the global primary and forwarder -- If not rerun the query on both side every 5 seconds until it is the case -- SELECT ag.name , drs.database_id , db_name(drs.database_id) as database_name , drs.group_id , drs.replica_id , drs.synchronization_state_desc , drs.last_hardened_lsn FROM sys.dm_hadr_database_replica_states drs INNER JOIN sys.availability_groups ag on drs.group_id = ag.group_id;
-
Ora è possibile impostare
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
su SQL Server primario corrente nel sito primario corrente.--Run this script into Primary AOAG USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);
Ora è possibile modificare il ruolo del gruppo di disponibilità Sempre attivo principale da primario a secondario.
--Run this script into Primary AOAG, this will terminate client applications connected to the primary replica of the primary AOAG USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] SET (ROLE = SECONDARY);
-
Modificare il ruolo del gruppo di disponibilità Sempre attivo secondario da secondario a primario. Lo script seguente eseguirà questa modifica del ruolo, abilitando il database per le operazioni di lettura o scrittura. Inoltre, i ruoli dei gruppi di disponibilità Sempre attivo all'interno del gruppo di disponibilità distribuito verranno aggiornati di conseguenza.
--Run this script into Secondary AOAG, this will terminate client applications connected to the primary replica of the primary AOAG ALTER AVAILABILITY GROUP [distributed-aoag] FORCE_FAILOVER_ALLOW_DATA_LOSS;
Eseguire lo script seguente per controllare lo stato.
--check the status on the new primary (formerly standby site) select ag.name, ag.is_distributed, ar.replica_server_name, ar.availability_mode_desc, ars.connected_state_desc, ars.role_desc, ars.operational_state_desc, ars.synchronization_health_desc from sys.availability_groups ag join sys.availability_replicas ar on ag.group_id=ar.group_id left join sys.dm_hadr_availability_replica_states ars on ars.replica_id=ar.replica_id where ag.is_distributed=1 GO
-
Ora nel nuovo SQL Server primario, annullare l'impostazione di
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
.--Run this script into Primary AOAG ALTER AVAILABILITY GROUP [distributed-aoag] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0);
Ripristinare la modalità di disponibilità alla modalità standard eseguendo lo script seguente sia sui siti primari che su quelli secondari.
--Run this first on the primary replica of the primary AOAG and then again on the secondary AOAG ALTER AVAILABILITY GROUP [distributed-aoag] MODIFY AVAILABILITY GROUP ON 'paris-aoag' WITH ( AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT ), 'marseille-aoag' WITH ( AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT );
Task 3: procedura di failback per il gruppo di disponibilità distribuito Sempre su
Per ripristinare Parigi come sito principale e Marsiglia come sito secondario, è sufficiente eseguire un nuovo switchover per invertire la sincronizzazione, come descritto nel Task 2.
Collegamenti correlati
-
Distribuire i gruppi di disponibilità Always On Microsoft SQL Server per HA e DR su OCI
-
Configurare un gruppo di disponibilità Always On distribuito
Conferme
- Autori - Alessandro Volpi (esperto di soluzioni cloud)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Deploy Microsoft SQL Server Distributed Always On Availability Groups for DR on OCI
G23256-01
December 2024