O que é a Sincronização de Dados SQL para Azure?
Aplica-se a: do Banco de Dados SQL do Azure
Importante
A Sincronização de Dados SQL será desativada em 30 de setembro de 2027. Considere migrar para soluções alternativas de replicação/sincronização de dados.
A Sincronização de Dados SQL é um serviço criado na Base de Dados SQL do Azure que lhe permite sincronizar os dados selecionados bidirecionalmente em várias bases de dados, tanto no local como na nuvem.
O Azure SQL Data Sync não dá suporte à Instância Gerenciada SQL do Azure ou ao Azure Synapse Analytics.
Visão geral
A sincronização de dados baseia-se no conceito de um grupo de sincronização. Um grupo de sincronização é um grupo de bancos de dados que você deseja sincronizar.
A Sincronização de Dados usa uma topologia de hub e spoke para sincronizar dados. Você define um dos bancos de dados no grupo de sincronização como o banco de dados do hub. O restante dos bancos de dados são bancos de dados membros. A sincronização ocorre apenas entre o hub e membros individuais.
- A Base de Dados de Hub deve ser uma Base de Dados SQL do Azure.
- Os bancos de dados membros podem ser bancos de dados no Banco de Dados SQL do Azure ou em instâncias do SQL Server.
- O Sync Metadata Database contém os metadados e o log do Data Sync. O Sync Metadata Database deve ser um Azure SQL Database localizado na mesma região do Hub Database. O banco de dados de metadados de sincronização é criado pelo cliente e de propriedade do cliente. Você só pode ter um banco de dados de metadados de sincronização por região e assinatura. O Banco de Dados de Metadados de Sincronização não pode ser excluído ou renomeado enquanto existirem grupos de sincronização ou agentes de sincronização. A Microsoft recomenda a criação de um novo banco de dados vazio para uso como o Banco de Dados de Metadados de Sincronização. A Sincronização de Dados cria tabelas neste banco de dados e executa uma carga de trabalho frequente.
Observação
Se você estiver usando um banco de dados local como um banco de dados membro, precisará instalar e configurar um agente de sincronização local.
Um grupo de sincronização tem as seguintes propriedades:
- O Esquema de Sincronização descreve quais dados estão a ser sincronizados.
- O Direção de Sincronização pode ser bidirecional ou pode fluir em apenas uma direção. Ou seja, a Direção de Sincronização pode ser do Hub para o Membro, do Membro para o Hub, ou em ambas as direções.
- Intervalo de Sincronização descreve a frequência com que a sincronização ocorre.
- A Política de Resolução de Conflitos é uma política de nível de grupo, que pode ser Hub ganha ou Membro ganha.
Quando utilizar
A Sincronização de Dados é útil nos casos em que os dados precisam ser mantidos atualizados em vários bancos de dados no Banco de Dados SQL do Azure ou no SQL Server. Aqui estão os principais casos de uso do Data Sync:
- Sincronização de dados híbrida: Com a Sincronização de Dados, você pode manter os dados sincronizados entre seus bancos de dados no SQL Server e no Banco de Dados SQL do Azure para habilitar aplicativos híbridos. Esse recurso pode atrair clientes que estão considerando migrar para a nuvem e gostariam de colocar parte de seus aplicativos no Azure.
- Aplicativos distribuídos: Em muitos casos, é benéfico separar cargas de trabalho diferentes em bancos de dados diferentes. Por exemplo, se você tiver um grande banco de dados de produção, mas também precisar executar uma carga de trabalho de relatórios ou análises nesses dados, é útil ter um segundo banco de dados para essa carga de trabalho extra. Essa abordagem minimiza o impacto no desempenho da carga de trabalho de produção. Você pode usar a Sincronização de Dados para manter esses dois bancos de dados sincronizados.
- Aplicativos distribuídos globalmente: Muitas empresas abrangem várias regiões e até mesmo vários países/regiões. Para minimizar a latência da rede, é melhor ter seus dados em uma região próxima a você. Com o Data Sync, você pode facilmente manter sincronizados bancos de dados em regiões ao redor do mundo.
A Sincronização de Dados não é a solução preferida para os seguintes cenários:
Cenário | Algumas soluções recomendadas |
---|---|
Recuperação de desastres | Backups automatizados no Banco de Dados SQL do Azure |
Escala de leitura | Use réplicas em modo de leitura para aliviar cargas de trabalho de consulta apenas de leitura |
ETL (OLTP para OLAP) | Azure Data Factory ou SQL Server Integration Services |
Migração do SQL Server para o Banco de Dados SQL do Azure. No entanto, a Sincronização de Dados SQL pode ser usada após a conclusão da migração, para garantir que a origem e o destino sejam mantidos sincronizados. | Serviço de Migração de Banco de Dados do Azure |
Como funciona
- Controlar alterações de dados: Data Sync rastreia alterações usando gatilhos de inserção, atualização e exclusão. As alterações são registradas em uma tabela lateral no banco de dados do usuário. BULK INSERT não dispara gatilhos por padrão. Se FIRE_TRIGGERS não for especificado, nenhum gatilho de inserção será executado. Adicione a opção FIRE_TRIGGERS para que o Data Sync possa rastrear essas inserções.
- Sincronização de dados: Data Sync foi projetada em um modelo hub and spoke. O hub sincroniza com cada membro individualmente. As alterações do hub são baixadas para o membro e, em seguida, as alterações do membro são carregadas no hub.
-
Resolução de conflitos: Data Sync oferece duas opções para resolução de conflitos, Hub ganha ou Membro ganha.
- Se selecionar Hub ganha, as alterações no hub sempre substituem as alterações no membro.
- Se você selecionar Membro ganha, as alterações no membro substituirão as alterações no hub. Se houver mais de um membro, o valor final depende de qual membro sincroniza primeiro.
Comparar com a Replicação Transacional
Sincronização de dados | Replicação transacional | |
---|---|---|
Vantagens | - Suporte ativo ativo - Bidirecional entre o local e o Banco de Dados SQL do Azure |
- Menor latência - Consistência transacional - Reutilizar topologia existente após a migração -Suporte à Instância Gerenciada SQL do Azure |
Desvantagens | - Sem consistência transacional - Maior impacto no desempenho |
- Não é possível publicar a partir da Base de Dados SQL do Azure - Alto custo de manutenção |
Link privado para sincronização de dados
Observação
O link privado do SQL Data Sync é diferente do Azure Private Link.
O novo recurso de link privado permite que você escolha um ponto de extremidade privado gerenciado pelo serviço para estabelecer uma conexão segura entre o serviço de sincronização e seus bancos de dados de membro/hub durante o processo de sincronização de dados. Um ponto de extremidade privado gerido por serviço é um endereço IP privado dentro de uma rede virtual e sub-rede específicas. No Data Sync, o ponto de extremidade privado gerenciado pelo serviço é criado pela Microsoft e usado exclusivamente pelo serviço Data Sync para uma determinada operação de sincronização.
Antes de configurar o link privado, leia os requisitos gerais para a funcionalidade.
Observação
Você deve aprovar manualmente o ponto de extremidade privado gerenciado pelo serviço na página conexões de ponto de extremidade privado do do portal do Azure durante a implantação do grupo de sincronização ou usando o PowerShell.
Começar
Configurar a Sincronização de Dados no portal do Azure
- Tutorial: Configurar a Sincronização de Dados SQL entre bancos de dados no Banco de Dados SQL do Azure e no SQL Server
- Agente de sincronização de dados - Data Sync Agent for SQL Data Sync
Configurar a sincronização de dados com o PowerShell
- Usar o PowerShell para sincronizar dados entre vários bancos de dados no Banco de Dados SQL do Azure
- Usar o PowerShell para sincronizar dados entre o Banco de dados SQL e o SQL Server
Configurar a sincronização de dados com a API REST
Analise as práticas recomendadas para a sincronização de dados
Algo correu mal
Consistência e desempenho
Consistência eventual
Como a sincronização de dados é baseada em gatilhos, a consistência transacional não é garantida. A Microsoft garante que todas as alterações são feitas eventualmente e que a Sincronização de Dados não causa perda de dados.
Impacto no desempenho
A Sincronização de Dados usa gatilhos de inserção, atualização e exclusão para controlar alterações. Ele cria tabelas laterais no banco de dados do usuário para controle de alterações. Essas atividades de controle de alterações têm impacto na carga de trabalho do banco de dados. Avalie sua camada de serviço e atualize, se necessário.
O provisionamento e o desprovisionamento durante a criação, atualização e exclusão do grupo de sincronização também podem afetar o desempenho do banco de dados.
Requisitos e limitações
Requisitos gerais
- Cada tabela deve ter uma chave primária. Não altere o valor da chave primária em nenhuma linha. Se você precisar alterar um valor de chave primária, exclua a linha e recrie-a com o novo valor de chave primária.
Importante
Alterar o valor de uma chave primária existente resultará no seguinte comportamento defeituoso:
- Os dados entre o hub e o membro podem ser perdidos mesmo que a sincronização não relate nenhum problema.
- A sincronização pode falhar porque a tabela de acompanhamento tem uma linha inexistente da origem devido à alteração da chave primária.
O isolamento de instantâneo deve ser ativado tanto para os membros do Sync como para o hub. Para obter mais informações, consulte Isolamento de Instantâneo no SQL Server.
Para usar o link privado do Data Sync, os bancos de dados de membro e hub devem ser hospedados no Azure (mesmas regiões ou regiões diferentes), no mesmo tipo de nuvem (por exemplo, ambos na nuvem pública ou ambos na nuvem governamental). Além disso, para usar o link privado,
Microsoft.Network
provedores de recursos devem estar registrados para as assinaturas que hospedam o hub e os servidores membros. Por fim, você deve aprovar manualmente o link privado para a Sincronização de Dados durante a configuração de sincronização, na seção "Conexões de ponto de extremidade privadas" no portal do Azure ou por meio do PowerShell. Para obter mais informações sobre como aprovar o link privado, consulte Tutorial: Configurar a Sincronização de Dados SQL entre bancos de dados no Banco de Dados SQL do Azure e no SQL Server. Depois de aprovar o ponto final privado gerido pelo serviço, toda a comunicação entre o serviço de sincronização e os bancos de dados de membros/hub ocorre através do link privado. Os grupos de sincronização existentes podem ser atualizados para que esse recurso seja habilitado.
Limitações gerais
- Uma tabela não pode ter uma coluna de identidade que não seja a chave primária.
- Uma chave primária não pode ter os seguintes tipos de dados: sql_variant, binary, varbinary, image, xml.
- Tenha cuidado ao usar os seguintes tipos de dados como chave primária, porque a precisão suportada é apenas para o segundo: hora, datetime, datetime2, datetimeoffset.
- Os nomes dos objetos (bancos de dados, tabelas e colunas) não podem conter o período de caracteres imprimíveis (
.
), colchete esquerdo ([
) ou colchete direito (]
). - Um nome de tabela não pode conter caracteres imprimíveis:
! " # $ % ' ( ) * + -
ou espaço. - A autenticação Microsoft Entra (anteriormente Azure Ative Directory) não é suportada.
- Se houver tabelas com o mesmo nome, mas esquema diferente (por exemplo,
dbo.customers
esales.customers
), apenas uma das tabelas poderá ser adicionada à sincronização. - Não há suporte para colunas com tipos de dados definidos pelo usuário.
- Não há suporte para a movimentação de servidores entre assinaturas diferentes.
- Se duas chaves primárias forem apenas diferentes no caso (por exemplo,
Foo
efoo
), a Sincronização de Dados não suportará esse cenário. - Truncar tabelas não é uma operação suportada pela Sincronização de Dados (as alterações não serão controladas).
- Não é suportado o uso de uma base de dados Azure SQL Hyperscale como Hub ou base de dados de sincronização de metadados. No entanto, um banco de dados Hyperscale pode ser um banco de dados membro em uma topologia de Sincronização de Dados.
- Não há suporte para tabelas com otimização de memória.
- As alterações de esquema não são replicadas automaticamente.
- A Sincronização de Dados suporta apenas as duas propriedades de índice a seguir: Exclusivo, Clusterizado/Não Clusterizado. Outras propriedades de um índice, como
IGNORE_DUP_KEY
ou o predicado de filtroWHERE
, não são suportadas e o índice de destino é provisionado sem essas propriedades, mesmo que o índice de origem tenha essas propriedades definidas. - Um banco de dados de trabalhos elásticos do Azure não pode ser usado como o banco de dados de metadados da sincronização de dados SQL, nem vice-versa.
- Não há suporte para a Sincronização de Dados SQL para bancos de dados contábeis .
Tipos de dados não suportados
- FileStream
- SQL/CLR UDT
- XMLSchemaCollection (XML suportado)
- Cursor, RowVersion, Timestamp, Hierarchyid
Tipos de coluna não suportados
A Sincronização de Dados não pode sincronizar colunas somente leitura ou geradas pelo sistema. Por exemplo:
- Colunas computadas.
- Colunas geradas pelo sistema para tabelas temporais.
Limitações nas dimensões do serviço e do banco de dados
Dimensões | Limite | Solução alternativa |
---|---|---|
Número máximo de grupos de sincronização aos quais qualquer banco de dados pode pertencer. | 5 | |
Número máximo de pontos de extremidade num único grupo de sincronização | 30 | |
Número máximo de pontos de extremidade locais em um único grupo de sincronização. | 5 | Criar vários grupos de sincronização |
Nomes de banco de dados, tabela, esquema e coluna | 50 caracteres por nome | |
Tabelas em um grupo de sincronização | 500 | Criar vários grupos de sincronização |
Colunas numa tabela num grupo de sincronização | 1000 | |
Tamanho da linha de dados em uma tabela | 24 Mb |
Observação
Poderá haver até 30 pontos de extremidade num único grupo de sincronização se houver apenas um grupo de sincronização. Se houver mais de um grupo de sincronização, o número total de pontos de extremidade em todos os grupos de sincronização não poderá exceder 30. Se um banco de dados pertencer a vários grupos de sincronização, ele será contado como múltiplos endpoints, não como um único.
Requisitos de rede
Observação
Se você usar o link privado de sincronização, esses requisitos de rede não se aplicam.
Quando o grupo de sincronização é estabelecido, o serviço de Sincronização de Dados precisa se conectar ao banco de dados do hub. Ao estabelecer o grupo de sincronização, o servidor SQL do Azure deve ter a seguinte configuração em suas configurações de Firewalls and virtual networks
:
- Negar acesso à rede pública deve ser definido como Desativado.
- Permitir que os serviços e recursos do Azure acessem esse servidor deve ser definido como Simou você deve criar regras IP para os endereços IP usados pelo serviço de Sincronização de Dados.
Depois que o grupo de sincronização for criado e provisionado, você poderá desativar essas configurações. O agente de sincronização conecta-se diretamente à base de dados do hub, e pode usar as regras de IP do firewall do servidor ou os endpoints privados para permitir que o agente aceda ao servidor do hub.
Observação
Se você alterar as configurações de esquema do grupo de sincronização, precisará permitir que o serviço de Sincronização de Dados acesse o servidor novamente para que o banco de dados do hub possa ser reprovisionado.
Residência de dados da região
Se você sincronizar dados dentro da mesma região, a Sincronização de Dados SQL não armazenará/processará dados do cliente fora dessa região na qual a instância de serviço está implantada. Se você sincronizar dados entre regiões diferentes, a Sincronização de Dados SQL replicará os dados do cliente para as regiões emparelhadas.
Perguntas frequentes sobre o SQL Data Sync
Quanto custa o serviço SQL Data Sync?
Não há cobrança para o serviço SQL Data Sync em si. No entanto, você ainda coleta cobranças de transferência de dados para movimentação de dados dentro e fora de sua instância do Banco de dados SQL. Para obter mais informações, consulte as taxas de transferência de dados .
Quais regiões oferecem suporte ao Data Sync?
A Sincronização de Dados SQL está disponível em todas as regiões.
É necessária uma conta da Base de Dados SQL?
Sim. Você deve ter uma conta do Banco de dados SQL para hospedar o banco de dados do hub.
Posso usar a Sincronização de Dados para sincronizar apenas entre bancos de dados do SQL Server?
Não diretamente. No entanto, você pode sincronizar entre bancos de dados do SQL Server indiretamente, criando um banco de dados de Hub no Azure e, em seguida, adicionando os bancos de dados locais ao grupo de sincronização.
Posso configurar a Sincronização de Dados para sincronizar entre bancos de dados no Banco de Dados SQL do Azure que pertencem a assinaturas diferentes?
Sim. Você pode configurar a sincronização entre bancos de dados que pertencem a grupos de recursos pertencentes a assinaturas diferentes, mesmo que as assinaturas pertençam a locatários diferentes.
- Se as assinaturas pertencerem ao mesmo locatário e você tiver permissão para todas as assinaturas, poderá configurar o grupo de sincronização no portal do Azure.
- Caso contrário, você terá que usar o PowerShell para adicionar os membros de sincronização.
Posso configurar a Sincronização de Dados para sincronizar entre bancos de dados no Banco de Dados SQL que pertencem a nuvens diferentes (como a Nuvem Pública do Azure e o Azure operado pela 21Vianet)?
Sim. Você pode configurar a sincronização entre bancos de dados que pertencem a nuvens diferentes. Você precisa usar o PowerShell para adicionar os membros de sincronização que pertencem às diferentes assinaturas.
Posso usar a Sincronização de Dados para semear dados do meu banco de dados de produção em um banco de dados vazio e, em seguida, sincronizá-los?
Sim. Crie o esquema manualmente no novo banco de dados criando scripts a partir do original. Depois de criar o esquema, adicione as tabelas a um grupo de sincronização para copiar os dados e mantê-los sincronizados.
Devo usar a Sincronização de Dados SQL para fazer backup e restaurar meus bancos de dados?
Não é recomendável usar o SQL Data Sync para criar um backup de seus dados. Não é possível fazer backup e restaurar para um ponto específico no tempo porque as sincronizações do SQL Data Sync não são versionadas. Além disso, a Sincronização de Dados SQL não faz backup de outros objetos SQL, como procedimentos armazenados, e não faz o equivalente a uma operação de restauração rapidamente.
Para obter uma técnica de backup recomendada, consulte Copiar uma cópia transacional consistente de um banco de dados no Banco de Dados SQL do Azure.
O Data Sync pode sincronizar tabelas e colunas criptografadas?
- Se um banco de dados usa Always Encrypted, você pode sincronizar apenas as tabelas e colunas que não estão criptografadas. Não é possível sincronizar as colunas criptografadas, porque a Sincronização de Dados não pode descriptografar os dados.
- Se uma coluna usar criptografia Column-Level (CLE), você poderá sincronizá-la, desde que o tamanho da linha seja menor que o tamanho máximo de 24 Mb. A Sincronização de Dados trata a coluna criptografada por chave (CLE) como dados binários normais. Para decifrar os dados nos outros membros da sincronização, você precisa ter o mesmo certificado.
Há suporte para agrupamento no SQL Data Sync?
Sim. A Sincronização de Dados SQL dá suporte à definição de configurações de agrupamento nos seguintes cenários:
- Se as tabelas de esquema de sincronização selecionadas ainda não estiverem em seu hub ou bancos de dados de membros, quando você implantar o grupo de sincronização, o serviço criará automaticamente as tabelas e colunas correspondentes com as configurações de agrupamento selecionadas nos bancos de dados de destino vazios.
- Se as tabelas a serem sincronizadas já existirem em seus bancos de dados de hub e membro, a Sincronização de Dados SQL exigirá que as colunas de chave primária tenham o mesmo agrupamento entre bancos de dados de hub e membro para implantar com êxito o grupo de sincronização. Não há restrições de agrupamento em colunas que não sejam as colunas de chave primária.
Há suporte para federação no SQL Data Sync?
O Banco de Dados Raiz de Federação pode ser usado no Serviço de Sincronização de Dados SQL sem qualquer limitação. Não é possível adicionar o ponto de extremidade do Banco de Dados Federado à versão atual do SQL Data Sync.
Posso usar a Sincronização de Dados para sincronizar dados exportados do Dynamics 365 usando o recurso traga seu próprio banco de dados (BYOD)?
O recurso do Dynamics 365 de trazer o seu próprio banco de dados permite que os administradores exportem entidades dos dados da aplicação para o seu próprio banco de dados SQL do Microsoft Azure. A Sincronização de Dados pode ser usada para sincronizar esses dados com outros bancos de dados se os dados forem exportados usando push incremental (não há suporte para envio por push completo) e habilitar gatilhos no banco de dados de destino estiver definido como sim.
Como faço para criar a Sincronização de Dados no grupo de Failover para dar suporte à Recuperação de Desastres?
- Para garantir que as operações de sincronização de dados na região de failover estejam no mesmo nível da região Primária, após o failover, você precisa recriar manualmente o Grupo de Sincronização na região de failover com as mesmas configurações da região primária.
Conteúdo relacionado
Monitorar e solucionar problemas
O SQL Data Sync está funcionando conforme o esperado? Para monitorar a atividade e solucionar problemas, consulte os seguintes artigos:
- Monitorizar a sincronização de dados SQL através dos logs do Azure Monitor
- Solucionar problemas com o Azure SQL Data Sync
Saiba mais sobre a Base de Dados SQL do Azure
Para obter mais informações sobre o Banco de Dados SQL do Azure, consulte os seguintes artigos: