AMBIENTE HÍBRIDO – AZURE SQL DATABASE COM SQL SERVER ON-PREMISES

Olá Pessoal!

O processo de adoção de soluções na nuvem esta mais natural e transparente a cada dia, sendo assim, os clientes estão optando por estender o ambiente local (On-premises) e integrá-lo como parte da arquitetura Cloud cada vez mais, transformando em uma solução híbrida. Esse tipo de solução pode ser alcançada de maneiras diferentes dependendo do tipo de plataforma de dados escolhida no ambiente da nuvem, nesse artigo vamos abordar o funcionamento de uma solução entre Azure SQL Database (Platform as a Service) e o SQL Server 2017 On-Premises.

Temos o seguinte cenário para trabalhar, o cliente deseja migrar o banco de dados SQL Server para o Azure SQL Database, levando em consideração principalmente o custo/benefício do serviço, além disso tem intenção de manter os dados replicados em sua instância de origem no SQL Server 2017 On-Premises, funcionando como uma espécie de Disaster Recovery.

Essa integração entre o SQL Database e o SQL Server depende do serviço Azure SQL Data Sync que está incorporado no Azure SQL Database. O Azure SQL Data Sync pode ser utilizado para distribuição de dados entre SQL Server, Azure SQL VM e Azure SQL databases, tanto unidirecional quanto bidirecional. Para nosso cenário, utilizaremos esse serviço para sincronização dos dados entre o Azure SQL Database e SQL Server on-premises.

Veja na topologia abaixo o modelo que utilizaremos:

A primeira etapa dessa solução envolve a migração da base para o Azure SQL Database, no qual pode ser feito através do Microsoft Data Migration Assistant (DMA). Vou considerar que essa etapa foi concluída com sucesso e sem restrições, sendo assim, o ambiente no Azure (PaaS) já está preparado.

Veja na imagem acima que uma das opções disponíveis no menu de configurações do Azure SQL Database é o “Sync to other databases” e após acessar essa opção pode ser visto as categorias “Sync Group” e “Sync Agent“.

O Data Sync é baseado no conceito do Sync Group, que é o grupo de bases que você deseja sincronizar. Dentro do Sync Group é definido a base que servirá como “Hub” e as restantes são definidas como membro, dessa forma a comunicação ocorre apenas entre o “Hub” e os membros individuais.

Algumas considerações importantes:

  • A base de dados “Hub” precisa ser um Azure SQL Database;
  • As bases de dados member podem ser SQL Databases, on-premises SQL Server databases ou instâncias SQL Server em Azure virtual Machines;
  • A base de dados Sync contém o metadado e log do Data Sync, sendo necessário ser um Azure SQL Database localizado na mesma região que a base de dados “Hub”;
  • Se uma base de dados on-premises for definida como membro, obrigatoriamente deve ser instalado e configurado o “Local Sync Agent“.

Como pode ser visto nas considerações, em nosso cenário será necessário instalar o “Local Sync Agent“, entretanto iniciaremos pela configuração do “Sync Group“.

Selecione a opção de “New Sync Group” dentro do menu “Sync to others databases“, como pode ser visto na imagem anterior. Deve ser preenchido o nome do “Sync Group“, a base de dados que irá receber os metadados, sendo que, é recomendado que uma nova base seja criada exclusivamente para armazenar esses dados, também deve ser selecionado na opção “Automatic Sync“, que define a frequência de atualização dados dados e por último, o “Conflict Resolution” que tem duas opções, “Hub Win” e “Member Win“, caso seja escolhido o primeiro, se algum conflito ocorrer na sincronização os dados da origem (“Hub”) substituem os dados conflitados no destino (“Member”), na segunda opção, ocorre exatamente o inverso.

Após finalizar essa etapa, o Azure vai iniciar o processo de implantação do “Sync Group” e em seguida avançar para a inclusão dos membros no menu “Add sync members“. Nessa etapa o usuário e senha de acesso devem ser preenchidos para a base de dados atual selecionada como “Hub“. Logo abaixo temos disponível a seleção do “Member Database“, que pode ser um Azure Database ou um On-Premises Database, para nosso cenário irei selecionar a segunda opção.

A primeira opção dentro da etapa do “Configure On-Premises” é para fazer a configuração do “Sync Agent Gateway“, sendo assim, vemos criar um novo e para isso devemos fazer o download do SQL Azure Data Sync Agent. A instalação é bem simples e apenas requer um usuário com privilégios para rodar o serviço no Windows.

Após a instalação, devemos retornar ao Azure e preencher o nome do agente para que possa ser gerado a chave de registro do “Sync Agent“.

Retorne ao “Sync Agent” e selecione “Submit Agent Key“, em seguida preencha o “Agent Key” com a chave copiada e também as credenciais de acesso do Azure SQL Database criado anteriormente para os metadados.

O próximo passo será registar o acesso ao SQL Server On-Premises através da opção “Register” no “Sync Agent“.

Uma vez que as configurações foram finalizadas, podemos retornar ao Azure e selecionar “OK” no menu “Select Sync Agent” e retornar ao “Configure On-Premises“. Seguiremos para a opção “Select the Database“, na qual temos que preencher o nome no campo “Sync Member Name“, selecionar o “Sync Agent” recém configurado e o “Sync Directions“. O “Sync Directions” determina a direção que os dados serão sincronizados, no nosso caso utilizaremos o “From the Hub“, ou seja, a base de dados no Azure SQL Database que está configurada como “Hub” será a origem dos dados a serem sincronizados.

Finalize essa configuração através do botão “OK” no menu “Select the Database“, “Configure On-Premises” e “Select sync members“, em seguida o Azure vai iniciar as implementações. Por último, iremos ao menu “Configure sync group” para selecionar as tabelas que serão sincronizadas. Repare que existe um alerta informando que apenas as tabelas com chave primária são suportadas, felizmente a tabela “SalesOrderDetailEnlarged” atende esse requisito.

Após salvarmos a configuração, o Azure irá processar as alterações e retornar para o menu inicial do “Sync to other databases“.

Ao verificar via SSMS as bases do Azure SQL Database, perceba que além da “AventureWorks2017” que já existia, foi adicionada a base de dados “dbsyncmetadata” com os metadados, também foram criados novas tabelas de apoio da solução dentro da base “AventureWorks2017“. Essas mesmas tabelas foram criadas no SQL Server On-Premises.

Agora a solução para atender o cliente está pronta, restando apenas testar o seu funcionamento. Podemos acessar o “Sync Group” e acompanhar os logs para identificar as notificações de erro e sincronização.

Apesar de serem etapas simples, existem muitas limitações que impossibilitam que essa solução seja utiliza para qualquer cenário, é importante que seja feita a leitura de toda documentação do produto, assim como, os devidos testes antes da utilização em produção.

Seguem as referências:

https://docs.microsoft.com/pt-br/azure/sql-database/sql-database-get-started-sql-data-sync

https://docs.microsoft.com/pt-br/azure/sql-database/sql-database-sync-data

https://azure.microsoft.com/pt-br/blog/azure-sql-hybrid-data-movement/

Até a próxima!

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s