Replicação transacional de Instância Gerenciada de SQL do Azure (versão prévia)

APLICA-SE A: Instância Gerenciada de SQL do Azure

A replicação transacional é um recurso da Instância Gerenciada de SQL do Azure e do SQL Server que permite replicar dados de uma tabela na Instância Gerenciada de SQL do Azure ou em uma instância de SQL Server para tabelas colocadas em bancos de dados remotos. Esse recurso permite que você sincronize várias tabelas em bancos de dados diferentes.

A replicação transacional está atualmente em versão prévia pública para a Instância Gerenciada de SQL.

Visão geral

Você pode usar a replicação transacional para enviar por push as alterações feitas em um Instância Gerenciada de SQL do Azure para:

  • Um banco de dados SQL Server local ou uma VM do Azure

  • Um banco de dados no Banco de Dados SQL do Azure

  • Um banco de dados de instância na Instância Gerenciada de SQL do Azure

    Observação

    Para usar todos os recursos da Instância Gerenciada de SQL do Azure, você deve estar usando as versões mais recentes do SSMS (SQL Server Management Studio) e do SSDT (SQL Server Data Tools).

Componentes

Os principais componentes na replicação transacional são o Publicador, o Distribuidore o Assinante, conforme mostrado na figura a seguir:

replication with SQL Database

Função Banco de Dados SQL do Azure Instância Gerenciada do Azure SQL
Publicador Não Sim
Distribuidor Não Sim
Assinante de pull Não Sim
Assinante push Sim Sim
     

O Publicador publica as alterações feitas em algumas tabelas (artigos), enviando as atualizações para o Distribuidor. O Publicador pode ser um Instância Gerenciada de SQL do Azure ou uma instância do SQL Server.

O Distribuidor coleta as alterações nos artigos de um Publicador e as distribui aos Assinantes. O Distribuidor pode ser uma Instância Gerenciada de SQL do Azure ou uma instância do SQL Server (qualquer versão, desde que seja igual ou maior do que a versão do publicador).

O Assinante recebe as alterações feitas no Publicador. Uma instância do SQL Server e uma Instância Gerenciada de SQL do Azure podem ser assinantes push e pull, embora não haja suporte para uma assinatura pull quando o distribuidor é um Instância Gerenciada de SQL do Azure e o assinante não é. Um banco de dados no Banco de Dados SQL do Azure só pode ser um assinante push.

A Instância Gerenciada de SQL do Azure pode dar suporte a um assinante das seguintes versões do SQL Server:

  • SQL Server 2016 e posterior

  • SQL Server 2014 RTM CU10 (12.0.4427.24) ou SP1 CU3 (12.0.2556.4)

  • SQL Server 2012 – SP2 CU8 (11.0.5634.1) ou SP3 (11.0.6020.0) ou SP4 (11.0.7001.0)

    Observação

    • Para outras versões do SQL Server que não dão suporte à publicação para objetos no Azure, é possível utilizar o método de republicação de dados para mover dados para versões mais recentes do SQL Server.
    • A tentativa de configurar a replicação usando uma versão mais antiga pode resultar em erro número MSSQL_REPL20084 (o processo não pôde conectar ao assinante) e MSSQL_REPL40532 (não é possível abrir servidor <nome> solicitado pelo logon. Houve falha no logon).

Tipos de replicação

Existem diferentes tipos de replicação:

Replicação Banco de Dados SQL do Azure Instância Gerenciada do Azure SQL
Transacional Padrão Sim (somente como assinante) Sim
Instantâneo Sim (somente como assinante) Sim
Replicação de mesclagem Não Não
Ponto a ponto Não Não
Bidirecional Não Sim
Assinaturas atualizáveis Não Não
     

Matriz de suporte

A matriz de suporte de replicação transacional para a Instância Gerenciada de SQL do Azure é a mesma para SQL Server.

Publicador Distribuidor Assinante
SQL Server 2019 SQL Server 2019 SQL Server 2019
Microsoft SQL Server 2017
SQL Server 2016
Microsoft SQL Server 2017 SQL Server 2019
Microsoft SQL Server 2017
SQL Server 2019
Microsoft SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2016 SQL Server 2019
Microsoft SQL Server 2017
SQL Server 2016
SQL Server 2019
Microsoft SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2014 SQL Server 2019
Microsoft SQL Server 2017
SQL Server 2016
SQL Server 2014
Microsoft SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2012 SQL Server 2019
Microsoft SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2008 R2
SQL Server 2008
SQL Server 2019
Microsoft SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
     

Quando usar

A replicação transacional é útil nos seguintes cenários:

  • Publique alterações feitas em uma ou mais tabelas em um banco de dados e as distribua para um ou vários bancos de dados em uma instância do SQL Server ou banco de dados do SQL do Azure que assinou as alterações.
  • Mantenha vários bancos de dados distribuídos em estado sincronizado.
  • Por meio da publicação contínua das alterações, migre bancos de dados de uma instância do SQL Server ou Instância Gerenciada de SQL do Azure para outro banco de dados.

Comparar a sincronização de dados com a replicação transacional

Categoria Sincronização de Dados Replicação transacional
Vantagens – Suporte ativo-ativo
– Bidirecional entre o Banco de Dados SQL do Azure e o local
– Menor latência
– Consistência transacional
– Reutilização da topologia existente após a migração
Desvantagens – Não há consistência transacional
– Maior impacto do desempenho
– Não pode publicar do Banco de Dados do SQL do Azure
– Alto custo de manutenção

Configurações comuns

De modo geral, o publicador e o distribuidor devem ambos estar na nuvem ou ser locais. Há suporte para as seguintes configurações:

Publicador com distribuidor local na Instância Gerenciada de SQL

Single instance as Publisher and Distributor

O publicador e o distribuidor são configurados em uma única Instância Gerenciada de SQL e estão distribuindo as alterações para outra Instância Gerenciada de SQL, Banco de Dados do SQL ou instância do SQL Server.

Publicador com distribuidor remoto em uma Instância Gerenciada de SQL

Nessa configuração, uma instância gerenciada publica as alterações em um distribuidor colocado em outra Instância Gerenciada do SQL que pode atender a muitas instâncias gerenciadas do SQL de origem e distribuir as alterações para um ou vários destinos no banco de dados SQL do Azure, Instância Gerenciada de SQL do Azure ou SQL Server.

Separate instances for Publisher and Distributor

O publicador e o distribuidor são configurados em duas instâncias gerenciadas. Essa configuração tem algumas restrições:

  • As duas instâncias gerenciadas estão na mesma vNet.
  • As duas instâncias gerenciadas estão no mesmo local.

Publicador/Distribuidor local com assinante remoto

Azure SQL Database as subscriber

Nessa configuração, um banco de dados no Banco de Dados do SQL do Azure ou Instância Gerenciada de SQL do Azure é um assinante. Essa configuração dá suporte à migração do local para o Azure. Se um assinante for um banco de dados no Banco de Dados SQL do Azure, ele deverá estar no modo de push.

Requisitos

  • Use a autenticação do SQL para conectividade entre os participantes da replicação.
  • Use um compartilhamento da Conta de Armazenamento do Azure para o diretório de trabalho usado pela replicação.
  • Abra a porta de saída TCP 445 nas regras de segurança de sub-rede para acessar o compartilhamento de arquivos do Azure.
  • Abra a porta de saída TCP 1433 quando o Instância Gerenciada do SQL for o Publicador/distribuidor e o Assinante não for. Talvez você também precise alterar a regra de segurança de saída NSG da Instância Gerenciada de SQL para allow_linkedserver_outbound a allow_linkedserver_outbound da porta 1433 de virtualnetwork para internet.
  • Coloque o publicador e o distribuidor na nuvem ou ambos no local.
  • Configure o emparelhamento VPN entre as redes virtuais dos participantes da replicação se as redes virtuais forem diferentes.

Observação

Você pode encontrar o erro 53 ao se conectar a um arquivo de armazenamento do Azure se a porta 445 de saída do grupo de segurança de rede (NSG) for bloqueada quando o distribuidor for um banco de dados da Instância Gerenciada de SQL do Azure e o assinante for local. Atualize a NSG da vNET para resolver esse problema.

Com grupos de failover

Se uma Instância Gerenciada de SQL de publicador ou distribuidor estiver em um grupo de failover, o administrador da Instância Gerenciada de SQL deverá limpar todas as publicações no antigo primário e reconfigurá-las no novo primário após a ocorrência de um failover. As seguintes atividades são necessárias neste cenário:

  1. Pare todos os trabalhos de replicação em execução no banco de dados, se houver algum.

  2. Remova os metadados da assinatura do publicador executando o seguinte script no banco de dados do publicador:

    EXEC sp_dropsubscription @publication='<name of publication>', @article='all',@subscriber='<name of subscriber>'
    
  3. Remova os metadados da assinatura do assinante. Execute o seguinte script no banco de dados de assinatura na Instância Gerenciada de SQL do assinante:

    EXEC sp_subscription_cleanup
       @publisher = N'<full DNS of publisher, e.g. example.ac2d23028af5.database.windows.net>',
       @publisher_db = N'<publisher database>',
       @publication = N'<name of publication>';
    
  4. Force a remoção de todos os objetos de replicação do publicador executando o seguinte script no banco de dados publicado:

    EXEC sp_removedbreplication
    
  5. Force a remoção do distribuidor antigo da Instância Gerenciada de SQL primária original (se estiver fazendo failover novamente para um antigo primário que costumava ter um distribuidor). Execute o seguinte script no banco de dados mestre da Instância Gerenciada de SQL do distribuidor antigo:

    EXEC sp_dropdistributor 1,1
    

Se uma Instância Gerenciada de SQL do assinante estiver em um grupo de failover, a publicação deverá ser configurada para se conectar ao ponto de extremidade do ouvinte do grupo de failover para a instância gerenciada do assinante. No caso de um failover, a ação subsequente pelo administrador da instância gerenciada depende do tipo de failover ocorrido:

  • Para um failover sem perda de dados, a replicação continuará funcionando após o failover.
  • Para um failover com perda de dados, a replicação também funcionará. Ele replicará as alterações perdidas novamente.
  • Para um failover com perda de dados, mas a perda de dados está fora do período de retenção do banco de dado de distribuição, o administrador do SQL Instância Gerenciada precisará reinicializar o banco de dados de assinatura.

Próximas etapas

Para obter mais informações sobre como configurar a replicação transacional, consulte os seguintes tutoriais:

Confira também