O blog da AWS

Use réplicas de leitura entre regiões com o Amazon Relational Database Service for SQL Server

Por Gene Mays, Arquiteto sênior de soluções especializado em Microsoft na AWS;
Alex Pawvathil, Technical Account Manager na AWS e
Swarndeep Singh, Arquiteto de soluções sênior na AWS
Liberado no último dia 16 de novembro, agora você pode criar réplicas de leitura entre regiões com o Amazon Relational Database Service (Amazon RDS) for SQL Server. Esse recurso permite implantar uma instância de banco de dados somente para leitura em uma região secundária da AWS. Com a réplica de leitura entre regiões, os dados são enviados de forma assíncrona da instância principal do banco de dados para uma réplica de leitura entre regiões, quase em tempo real para escalabilidade de leitura. Além disso, ele permite que você crie uma solução de recuperação de desastres e também pode migrar um banco de dados existente para uma nova região da AWS. Você pode criar até um total de cinco réplicas in-region e cross-region combinadas por origem.Em caso de desastre em sua região principal da AWS, as réplicas de leitura entre regiões permitem que você promova manualmente suas réplicas de leitura como uma nova instância Single-AZ. Observe que depois que a instância de banco de dados é promovida como uma instância Single-AZ, ela não pode se tornar uma instância de réplica de leitura. No entanto, você pode converter essa instância promovida de Single-AZ em uma instância Multi-AZ e criar novas réplicas de leitura a partir da instância autônoma. As réplicas de leitura entre regiões ( cross-region) oferecem uma opção de baixo Recovery Time Objective (RTO) para recuperação de desastres.Neste post, demonstramos como usar réplicas de leitura entre regiões com o Amazon RDS for SQL Server.

Visão geral da solução

O diagrama a seguir é uma visão de alto nível do Amazon RDS for SQL Server em uma configuração Multi-AZ, usando grupos de disponibilidade Always On com uma réplica de leitura in-region e uma réplica de leitura cross-region. As instâncias primária e secundária, juntamente com a instância de banco de dados de réplica de leitura in-region, estão hospedadas em diferentes zonas de disponibilidade dentro da mesma região da AWS. A réplica de leitura cross-region está hospedada em uma região diferente da AWS. As alterações de dados na instância de banco de dados primária são replicadas para a instância de banco de dados secundária de forma síncrona e para as réplicas de leitura de forma assíncrona.

Se os usuários da sua aplicação estiverem espalhados pelo mundo, você poderá utilizar réplicas de leitura entre regiões para atender consultas de leitura de uma região da AWS próxima ao seu usuário. Isso ajuda a reduzir a latência da rede para seus usuários enquanto interagem com sua aplicação, e sua aplicação pode escalar globalmente.

Você pode usar réplicas de leitura entre regiões para reduzir a carga de leitura mais intensa em seu banco de dados, roteando as consultas de leitura de suas aplicações para uma réplica de leitura em outra região. Você pode usar os weighted record sets do Amazon Route 53 para distribuir solicitações de leitura em suas réplicas de leitura. Em uma hosted zone do Route 53, você pode criar individual record sets para cada endpoint de réplica de leitura associado às suas réplicas, e dar a elas o mesmo peso. Em seguida, você pode enviar solicitações diretas para o endpoint de réplica de leitura individual de sua escolha. Outra coisa que você deve observar ao criar réplicas de leitura é que os logins existentes, custom server roles e jobs de SQL nas instâncias de banco de dados primárias são copiados quando você cria a réplica de leitura. Você precisará desativar ou excluir quaisquer jobs, logins ou server roles da réplica de leitura entre regiões depois que esta  réplica for criada, se necessário. No entanto, se você criar objetos do tipo server-level na instância de banco de dados primária posteriormente, deverá recriá-los manualmente em cada réplica de leitura, pois os objetos de tipo server-level não são replicados para réplicas in-region ou cross-region.

Observe os seguintes detalhes de configuração para implantar uma réplica de leitura entre regiões do Amazon RDS for SQL Server

  1. A instância de origem deve ser Multi-AZ com Enterprise Edition. A imagem a seguir mostra o requisito para a sua instância primária implantar uma réplica de leitura entre regiões.

  1. A instância de origem e a réplica de leitura entre regiões devem estar em execução no SQL Server Enterprise Edition com as seguintes versões
    • RDS for SQL Server 2019 (versão 15.00.4073.23 e superior).
    • RDS for SQL Server 2017 (versão 14.00.3049.1 e superior).
    • RDS for SQL Server 2016 (versão 13.00.5216.0 e superior).
  2. O Amazon RDS for SQL Server configura réplicas de leitura entre regiões usando grupos de disponibilidade distribuídos.
  3. Os tipos de instâncias de réplica de origem e leitura são independentes e não precisam ser os mesmos.
  4. Os logins são independentes entre a instância primária e a réplica de leitura entre regiões.
  5. Essa solução usa replicação assíncrona.
  6. Se você precisar de Windows Authentication, as réplicas de leitura entre regiões devem fazer parte de um AWS Directory Service for Microsoft Active Directory (Managed Active Directory) e o Managed Active Directory deve ser replicado entre regiões usando a edição Enterprise.

Esteja ciente das limitações das réplicas de leitura entre regiões do Amazon RDS for SQL Server

  1. Você não pode fazer o failover para uma réplica cross-region de Amazon RDS for SQL Server e fazer o failback.
  2. Você deve promover manualmente suas réplicas de leitura entre regiões do Amazon RDS for SQL Server para uma instância autônoma de Single-AZ.
  3. Você pode criar até um total de cinco réplicas de leitura em todas as regiões suportadas para uma instância de origem.
  4. As réplicas de leitura entre regiões do Amazon RDS for SQL Server não replicam novos logins ou trabalhos após a criação inicial da réplica.
  5. Você sempre pode excluir e recriar sua réplica de leitura entre regiões, se precisar.
  6. Você deve usar o Managed Active Directory se precisar de Windows Authentication.
  7. Você deve usar a mesma configuração para Service Principal Name (SPNs) e Kerberos que o Amazon RDS for SQL Server.
  8. As réplicas de leitura entre regiões do Amazon RDS for SQL Server não podem fazer parte de um AD on-premises nem usar o AD Connector.

Crie uma réplica de leitura entre regiões do Amazon RDS for SQL Server no console da AWS

Você pode criar uma réplica de leitura entre regiões do Amazon RDS for SQL Server usando o AWS Management Console ou a AWS Command Line Interface (AWS CLI). Cada réplica de leitura tem seus próprios endpoints para conectar.

Para criar uma réplica de leitura entre regiões do Amazon RDS for SQL Server por meio do console, conclua as seguintes etapas:

  1. No console do Amazon RDS, escolha Databases.
  2. Selecione sua instância de origem.
  3. No menu Actions, escolha Create read replica. A imagem a seguir mostra como implantar uma réplica de leitura entre regiões.

4. Na seção Instance specifications, escolha uma classe de instância de banco de dados de sua preferência.

5. Selecione o tipo de armazenamento de sua escolha.

6. Para Provisioned IOPS, insira um valor de IOPS.

7. Em Network & Security, selecione a região desejada (e a zona de disponibilidade opcional). A imagem a seguir mostra onde escolher a região de destino para sua réplica de leitura.

8. Em Publicly accessible, selecione No.

9. Revise as configurações de criptografia, a porta usada pela engine escolhida (porta 1433) e os valores de monitoramento e configuração.

10. Escolha Create read replica. A imagem a seguir mostra opções e configurações para sua réplica de leitura.

Crie uma réplica de leitura entre regiões do Amazon RDS for SQL Server com o AWS CLI

Para criar uma réplica de leitura entre regiões usando o AWS CLI, execute o seguinte código abaixo em uma máquina que tenha o AWS CLI instalado:

aws rds create-db-instance-read-replica 
         --db-instance-identifier <READ REPLICA NAME> 
         --source-db-instance-identifier <SOURCE INSTANCE NAME>
         --region <target-region-name>
         --source-region <source-region-name> 
         --db-subnet-group-name <db-subnet-group-name>

Monitorando uma réplica de leitura do Amazon RDS for SQL Server

Você pode usar o Amazon CloudWatch para monitorar o lag de replicação. Você pode monitorar o status da replicação por meio do console ou da AWS CLI. Você também pode executar uma consulta SQL na instância de banco de dados primária para determinar o lag de replicação atual. O status da replicação é de Replicating ou Replication degraded, a menos que ocorra um erro com a replicação, que pode ser determinado pelo campo Replication Error no console do Amazon RDS ou pelo registro de eventos. Você também pode ver o status de uma réplica de leitura usando o comando describe-db-instances da AWS CLI ou a operação DescribeDBInstances da API do Amazon RDS.

A imagem a seguir mostra o status da replicação de uma réplica de leitura.

Você pode executar a seguinte consulta SQL na instância primária para monitorar o atraso de todas as réplicas de leitura (cross-region e in-region):

SELECT AR.replica_server_name
	, DB_NAME (ARS.database_id) '<DATABASE NAME>'
	, AR.availability_mode_desc
	, ARS.synchronization_health_desc
	, ARS.last_hardened_lsn
	, ARS.last_redone_lsn
	, ARS.secondary_lag_seconds
FROM sys.dm_hadr_database_replica_states ARS
INNER JOIN sys.availability_replicas AR ON ARS.replica_id = AR.replica_id
WHERE DB_NAME(ARS.database_id) = '<DATABASE NAME>'
ORDER BY AR.replica_server_name;

A imagem a seguir mostra a latência entre todas as réplicas.

Promovendo réplicas de leitura entre regiões

Você pode promover sua réplica de leitura entre regiões como uma instância autônoma de Single-AZ com base nas necessidades de sua empresa e pode alterar a configuração da sua aplicação para se conectar à instância promovida.

A imagem a seguir mostra como promover uma réplica de leitura entre regiões.

Observe que depois de promover sua réplica de leitura entre regiões, a réplica é removida da cadeia de replicação e agora é uma instância Single-AZ do Amazon RDS for SQL Server com acesso de leitura e gravação.

Os diagramas abaixo mostram o processo de promoção de sua réplica de leitura entre regiões para uma instância Single-AZ:

  1. Este diagrama mostra o estado atual antes da promoção

2. Este diagrama mostra a nova instância Single-AZ após a promoção

Clean Up

Se ocorrer um desastre real e você promover sua réplica de leitura para instância principal, certifique-se de encerrar a instância primária anterior se ela não estiver mais sendo usada, afim de evitar cobranças indesejadas. Certifique-se de limpar todos os recursos da AWS depois de seguir esta postagem do blog em seu ambiente de teste.

Conclusão

Com réplicas de leitura entre regiões no Amazon RDS for SQL Server, você pode expandir cargas de trabalho de leitura intensiva em cinco regiões diferentes. Neste post, percorremos as etapas para criar réplicas de leitura entre regiões do Amazon RDS for SQL Server.

 

Este artigo foi traduzido do Blog da AWS em Inglês.

 


Sobre os autores

Gene Mays é arquiteto sênior de soluções especializado em Microsoft na AWS. Ele trabalha com o SQL Server há mais de 15 anos e tem uma vasta experiência em vários setores. Ele ajudou muitos clientes a arquitetar soluções de alta disponibilidade e recuperação de desastres para o SQL Server, bem como a orquestrar migrações em grande escala na AWS. Antes de trabalhar com a AWS, Gene tem experiência no suporte a clientes corporativos nos setores financeiro e de saúde.

 

 

 

 

Alex Pawvathil é Technical Account Manager na AWS. O foco de Alex é o Amazon RDS for SQL Server. Ele trabalha com o SQL Server há mais de 12 anos. Como parte da equipe de suporte corporativo da AWS, ele ajuda os clientes a planejar e criar soluções usando as melhores práticas e a manter seus ambientes operacionalmente saudáveis.

 

 

 

 

Swarndeep Singh é arquiteto de soluções sênior na AWS. Ele trabalha com a equipe do Amazon RDS, com foco em mecanismos de banco de dados comerciais e SQL Server. Ele gosta de enfrentar desafios técnicos no Amazon RDS e é apaixonado por trabalhar com clientes da AWS, criar soluções personalizadas e compartilhar conhecimento com seus colegas de equipe.

 

 

 

 

Tradutor

Luciano Bernardes trabalha atualmente como Sr Solutions Architect na AWS, especializado em workloads Microsoft. Com 15 anos de experiência no mercado, trabalhou a maior parte em consultoria técnica especializada em Microsoft, em clientes de várias verticais, com demandas voltadas para infraestrutura on-premises e em nuvem. Como SA, trabalha próximo a clientes e parceiros de consultoria em LATAM, para apoiá-los em tomadas de decisão e revisão de arquitetura de workoads Microsoft na nuvem AWS.

 

 

 

 

Revisor

Bruno Lopes é Senior Solutions Architect no time da AWS LATAM. Trabalha com soluções de TI há mais de 14 anos, tendo em seu portfólio inúmeras experiências em workloads Microsoft, ambientes híbridos e capacitação técnica de clientes como Technical Trainer e Evangelista. Agora atua como um Arquiteto de Soluções, unindo todas as capacidades para desburocratizar a adoção das melhores tecnologias afim de ajudar os clientes em seus desafios diários.