Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implantar Grupos de Disponibilidade Always On Distribuídos do Microsoft SQL Server para DR no OCI
Introdução
O grupo de disponibilidade Distributed Always On (Grupo de disponibilidade distribuído) é um recurso poderoso no Microsoft SQL Server que estende os recursos do grupo de disponibilidade tradicional para o SQL Server.
Os grupos de disponibilidade distribuídos permitem criar uma solução de DR (Recuperação de Desastre) que abrange vários WSFCs (Clusters de Failover) do Windows Server em execução em diferentes regiões do OCI (Oracle Cloud Infrastructure).
Isso permite que você alcance níveis mais altos de disponibilidade, recursos de recuperação de desastres e distribuição geográfica para seus bancos de dados críticos do SQL Server em execução na OCI.
Exclusões deste Tutorial
Neste tutorial, não abordaremos a criação passo a passo dos únicos grupos de disponibilidade do Microsoft SQL Server Always On. Para obter mais informações, consulte Implantar Grupos de Disponibilidade Always On do Microsoft SQL Server para HA e DR na OCI.
Consulte a seguinte documentação oficial da Microsoft:
Objetivos
- Crie a solução de grupo de disponibilidade Always On distribuída do Microsoft SQL Server no OCI.
Pré-requisitos
-
Os blocos de construção de um grupo de disponibilidade distribuído são:
-
VCNs: Crie Redes Virtuais na Nuvem (VCNs) do OCI em duas regiões separadas do OCI e conecte-se por meio de pareamento remoto de DRGs (Dynamic Routing Gateways).
-
AOAG 1: Está em execução na Região 1 do OCI. É aqui que o banco de dados a ser replicado é executado normalmente. Isso se baseia em um WSFC em execução no SQL Server #1 e no SQL Server #2 no exemplo a seguir (região do OCI de Paris).
-
AOAG 2: Está em execução na Região 2 do OCI. Esse é um grupo de disponibilidade Always On totalmente independente executado em um WSFC composto pelo SQL Server #3 e pelo SQL Server #4 no exemplo a seguir (região Marselha do OCI).
-
AOAG Distribuído: Esta é uma construção lógica criada no banco de dados SQL a ser replicado.
A imagem a seguir mostra a representação lógica de um grupo de disponibilidade distribuído.
-
-
Crie dois grupos de disponibilidade Always On independentes (um na primeira região e o outro na segunda região). Para obter mais informações, consulte Implantar Grupos de Disponibilidade Always On do Microsoft SQL Server para HA e DR na OCI.
Agora, temos dois grupos de disponibilidade Always On independentes em execução em duas regiões diferentes da OCI pareadas, neste exemplo, as regiões da OCI são Paris e Marselha.
-
Temos o primeiro cluster WSFC (
paris-wsfc
) na primeira região com o primeiro grupo de disponibilidade SQL Always On (paris-aoag
) e o listener SQL (paris-sql-list
) para o grupo de disponibilidade SQL Always On.Os dois nós do Windows são
sql-srv1
esql-srv2
. -
Na segunda região, temos o segundo cluster WSFC (
marseille-wsfc
) com o segundo grupo de disponibilidade SQL Always On (marseille-aoag
) e o listener SQL (mars-sql-list
) para o segundo grupo de disponibilidade SQL Always On.Os dois nós do Windows são
sql-srv3
esql-srv4
. -
Da perspectiva do SQL Server, começando em
sql-srv1
(paris-aoag
), podemos ver neste exemplo o DemoDB que é o banco de dados replicado com o primeiro grupo de disponibilidade Sempre Ativo e odistributed-aoag
recém-criado. -
Portanto, conectando-se com
sql-srv3
(marseille-aoag
), podemos ver neste exemplo também o DemoDB que é o banco de dados replicado com o primeiro grupo de disponibilidade Sempre Ativo, odistributed-aoag
recém-criado e omarseille-aoag
que é o segundo grupo de disponibilidade Sempre Ativo criado no segundo site (Marselha).
-
Tarefa 1: Criar Grupo de Disponibilidade Distribuído
Crie um grupo de disponibilidade distribuída (distributed-aoag
) composto pelos dois grupos de disponibilidade subjacentes já em execução Sempre Ativo.
Como já mencionado, assumimos que dois grupos de disponibilidade Always On independentes já estão ativos e em execução em duas regiões OCI diferentes.
O segundo grupo de disponibilidade Sempre Ativo (marseille-aoag
), o stand-by, não precisa ter bancos de dados associados; portanto, praticamente o segundo grupo de disponibilidade Sempre Ativo precisa estar vazio antes da criação do grupo de disponibilidade distribuído, portanto, sem nenhum banco de dados de disponibilidade associado. Você pode criar o segundo grupo de disponibilidade Sempre Ativo como de costume com um banco de dados inicial associado e, depois disso, pode remover esse banco de dados que foi usado apenas para criar o segundo grupo de disponibilidade Sempre Ativo. Isso ocorre porque a interface gráfica não é possível criar um grupo de disponibilidade Sempre Ativo com qualquer banco de dados associado.
-
Crie um grupo de disponibilidade distribuído no primeiro grupo de disponibilidade Sempre Ativo.
Conecte-se ao SQL Server no primeiro servidor (nó
sql-srv1
do site de Paris neste exemplo) e execute os comandos SQL a seguir.Observação:
-
Os nomes do listener são
paris-sql-list
emars-sql-list
. -
A porta TCP a ser usada,
5022
é a porta do ponto final e deve ser usada. Geralmente, isso é diferente da porta do listener (1433
). -
Os nomes do grupo de disponibilidade devem ser exatamente os nomes usados pelo grupo de disponibilidade Always On já em execução.
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
-
-
Junte-se ao grupo de disponibilidade distribuído no segundo grupo de disponibilidade Always On.
Conecte-se ao SQL Server no primeiro servidor do segundo grupo de disponibilidade Always On (servidor do site Marselha
sql-srv3
) e execute os comandos SQL a seguir.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 entender que, ao contrário dos grupos de disponibilidade tradicionais, os grupos de disponibilidade distribuídos não exigem grupos de recursos ou funções no WSFC. Todos os metadados são gerenciados no SQL Server. Isso significa que mesmo o SQL Server Management Studio não exibe diretamente os nomes dos bancos de dados no grupo de disponibilidade distribuída.
Para exibir essas informações, execute o script Transact-SQL a seguir.
--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
Observação: Para acomodar a latência de rede potencial entre regiões, configuramos o grupo de disponibilidade Always On principal e secundário com replicação de commit assíncrono. Isso minimiza a sobrecarga de desempenho no banco de dados principal. Dentro de cada grupo de disponibilidade Always On, optamos pela replicação de commit síncrono entre réplicas para garantir alta disponibilidade. No entanto, para failover entre réplicas de commit assíncrono (no caso de grupo de disponibilidade distribuído), a redução da perda de dados requer uma alternância temporária para o modo de commit síncrono antes de iniciar o failover. Para o failover_mode, o único modo disponível para o grupo de disponibilidade distribuída é manual.
Tarefa 2: Procedimento de Failover para Grupo de Disponibilidade Distribuído
Nesta tarefa, falaremos sobre failover entre os dois grupos de disponibilidade Always On. O procedimento de failover do banco de dados é composto pelas seguintes etapas e verificações fáceis.
-
Verificações iniciais.
-
Altere o modo de disponibilidade de assíncrono para síncrono, para o grupo de disponibilidade Always On principal e o grupo de disponibilidade Always On secundário.
-
Execute scripts para verificar se a sincronização está correta.
-
Altere a função do grupo de disponibilidade Always On principal de principal para secundário.
-
Failover para o grupo de disponibilidade Always On secundário.
-
Altere o modo de disponibilidade de síncrono para assíncrono, para o grupo de disponibilidade Always On principal e o grupo de disponibilidade Always On secundário.
Siga as etapas:
-
Execute os scripts a seguir para verificar se a sincronização está correta, primeiro no SQL principal atual do site principal atual e depois no SQL principal do site secundário.
Os resultados executados precisam ser
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
-
Altere o modo de disponibilidade. Execute o script a seguir primeiro no SQL Server principal atual do site principal atual e, em seguida, no SQL Server principal do site secundário.
--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 );
-
Para garantir que não haja perda de dados, verifique os resultados desta etapa. O status deve ser
SYNCHRONIZED
elast_hardened_lsn
deve corresponder para cada banco de dados no principal global e no encaminhador.-- 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;
-
Agora você está pronto para definir
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
no SQL Server principal atual no site principal atual.--Run this script into Primary AOAG USE MASTER; ALTER AVAILABILITY GROUP [distributed-aoag] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);
E agora você está pronto para alterar a função do grupo de disponibilidade Always On principal de principal para secundário.
--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);
-
Altere a função do grupo de disponibilidade Always On secundário de secundário para principal. O script a seguir executará essa alteração de atribuição, ativando o banco de dados para operações de leitura ou gravação. Além disso, as funções dos grupos de disponibilidade Sempre Ativo dentro do grupo de disponibilidade distribuído também serão atualizadas de acordo.
--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;
Execute o seguinte script para verificar o status.
--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
-
Agora, no novo SQL Server principal, cancele a definição de
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
.--Run this script into Primary AOAG ALTER AVAILABILITY GROUP [distributed-aoag] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0);
Altere o modo de disponibilidade de volta para o modo padrão executando o script a seguir nos sites principal e secundário.
--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 );
Tarefa 3: Procedimento de Failback para Distribuído Sempre no Grupo de Disponibilidade
Para restaurar Paris como o site principal e Marselha como o site secundário, basta executar um novo switchover para reverter a sincronização, conforme descrito na Tarefa 2.
Links Relacionados
-
Implantar Grupos de Disponibilidade do Microsoft SQL Server Always On para HA e DR na OCI
-
Configurar um grupo de disponibilidade Always On distribuído
Confirmações
- Autors - Alessandro Volpi (Especialista em Solução em Nuvem)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Deploy Microsoft SQL Server Distributed Always On Availability Groups for DR on OCI
G23261-01
December 2024