O Data Transmission Service (DTS) permite sincronizar dados de um SQL Server autogerenciado com o AnalyticDB for PostgreSQL para análise de dados em tempo real.
Pré-requisitos
O banco de dados SQL Server autogerenciado deve ser uma versão compatível. Para mais informações, consulte Visão geral das soluções de sincronização.
Crie uma instância de destino do AnalyticDB for PostgreSQL. Para instruções, consulte Criar uma instância.
A instância de destino do AnalyticDB for PostgreSQL deve ter mais espaço de armazenamento do que o banco de dados SQL Server autogerenciado de origem.
-
Recomendamos dividir uma tarefa de sincronização em várias tarefas caso a instância de origem atenda a qualquer uma das seguintes condições:
A instância de origem possui mais de 10 bancos de dados.
Os backups de log são realizados mais de uma vez por hora em um único banco de dados.
Mais de 100 operações de Data Definition Language (DDL) são executadas por hora em um único banco de dados.
A taxa de geração de log para um único banco de dados ultrapassa 20 MB/s.
É necessário ativar o change data capture (CDC) em mais de 1.000 tabelas.
Limitações
Durante a sincronização de schema, o DTS sincroniza as chaves estrangeiras do banco de dados de source para o banco de dados de destino.
Durante a sincronização completa de dados e a sincronização incremental de dados, o DTS desabilita temporariamente as verificações de restrição e as operações de cascade de chaves estrangeiras no nível de sessão. Podem ocorrer inconsistências nos dados caso operações de atualização ou exclusão em cascade sejam realizadas no banco de dados de source enquanto a tarefa estiver em execução.
|
Tipo |
Descrição |
|
Limitações do banco de dados de origem |
|
|
Outras limitações |
|
|
Casos especiais |
Quando a instância de source é um ApsaraDB RDS for SQL Server, o DTS cria uma conta |
Faturamento
|
Tipo de sincronização |
Preço |
|
Sincronização de schema e sincronização completa de dados |
Gratuito. |
|
Sincronização incremental de dados |
Cobrado. Para mais informações, consulte Visão geral do faturamento. |
Topologias de sincronização
Sincronização unidirecional de um para um
Sincronização unidirecional de um para muitos
Sincronização unidirecional de muitos para um
Para uma introdução a essas topologias e às principais considerações, consulte Topologias de sincronização.
Operações SQL suportadas
|
Type |
SQL statement |
|
DML |
INSERT, UPDATE, and DELETE Nota
|
|
DDL |
Nota
|
Permissões da conta de banco de dados
|
Database |
Permissões necessárias |
Referências |
|
SQL Server autogerenciado |
sysadmin |
|
|
AnalyticDB for PostgreSQL instance |
Nota
Você também pode usar a conta inicial da instância AnalyticDB for PostgreSQL. |
Criar e gerenciar uma conta de banco de dados e Gerenciar usuários e permissões |
Pré-requisitos
Antes de configurar uma tarefa de sincronização de dados, configure as definições de log e crie um índice clusterizado no banco de dados SQL Server autogerenciado.
Para sincronizar vários bancos de dados, repita os Passos 1 a 3 para cada banco de dados, a fim de evitar inconsistências nos dados.
-
Execute o seguinte comando no banco de dados SQL Server autogerenciado para alterar o modelo de recuperação do banco de dados para full. Você também pode usar o SQL Server Management Studio (SSMS) para alterar o modelo de recuperação. Para mais informações, consulte View or Change the Recovery Model of a Database (SQL Server).
use master; GO ALTER DATABASE <database_name> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GOParâmetros:
<database_name>: O nome do banco de dados a ser sincronizado.Exemplo:
use master; GO ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GO -
Execute o seguinte comando para criar um backup lógico do banco de dados de source. Se você já tiver um backup lógico, ignore esta etapa.
BACKUP DATABASE <database_name> TO DISK='<physical_backup_device_name>'; GOParâmetros:
<database_name>: O nome do banco de dados de source.<physical_backup_device_name>: O caminho e o nome do arquivo de backup.
Exemplo:
BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak'; GO -
Execute o seguinte comando para criar um backup de log do banco de dados de source.
BACKUP LOG <database_name> to DISK='<physical_backup_device_name>' WITH init; GOParâmetros:
<database_name>: O nome do banco de dados de source.<physical_backup_device_name>: O caminho e o nome do arquivo de backup.
Exemplo:
BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init; GO
Procedimento
-
Acesse a página de lista de tarefas de sincronização da região de destino. Você pode usar um dos dois métodos a seguir:
From the DTS console
Faça login no console do Data Transmission Service (DTS).
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo da página, selecione a região onde a instância de sincronização está localizada.
From the DMS console
NotaAs operações reais podem variar de acordo com o modo e o layout do console do DMS. Para mais informações, consulte Simple mode e Customize the layout and style of the DMS interface.
Faça login no Data Management (DMS).
Na barra de menu superior, escolha .
À direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização está localizada.
Clique em Create Task para abrir a página de configuração da tarefa.
-
Configure os bancos de dados de origem e destino.
Category
Parameter
Description
N/A
Task Name
O DTS gera automaticamente um nome de tarefa. Recomendamos especificar um nome descritivo para facilitar a identificação. O nome não precisa ser exclusivo.
Source Database
Database Type
Selecione SQL Server.
Access Method
Selecione o tipo de conexão de acordo com a implantação do banco de dados de origem. Neste exemplo, selecione Self-managed Database on ECS.
NotaAo selecionar um tipo de conexão diferente para seu banco de dados autogerenciado, conclua as preparações correspondentes. Para mais informações, consulte Overview of preparations.
Instance Region
Selecione a região da instância ECS que hospeda o banco de dados SQL Server autogerenciado.
ECS Instance ID
Selecione o ID da instância ECS que hospeda o banco de dados SQL Server autogerenciado.
Port Number
Insira a porta de serviço do banco de dados SQL Server autogerenciado. O valor padrão é 1433.
Database Account
Insira a conta do banco de dados SQL Server autogerenciado. Para informações sobre as permissões necessárias, consulte Permissions required for database accounts.
Database Password
Insira a senha correspondente à conta do banco de dados.
Encryption
Selecione Non-encrypted ou SSL-encrypted.
-
Se a criptografia SSL não estiver ativada no banco de dados de origem, selecione Non-encrypted.
-
Se a criptografia SSL estiver ativada no banco de dados de origem, selecione SSL-encrypted. Por padrão, o DTS confia no certificado do servidor.
Destination Database
Database Type
Selecione AnalyticDB for PostgreSQL.
Connection Type
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região da instância AnalyticDB for PostgreSQL de destino.
Instance ID
Selecione o ID da instância AnalyticDB for PostgreSQL de destino.
Database Name
Insira o nome do banco de dados de destino dentro da instância AnalyticDB for PostgreSQL.
Database Account
Insira a conta da instância AnalyticDB for PostgreSQL de destino. Para informações sobre as permissões necessárias, consulte Permissions required for database accounts.
Database Password
Insira a senha correspondente à conta do banco de dados.
-
-
Após concluir a configuração, clique em Test Connectivity and Proceed na parte inferior da página. Na caixa de diálogo CIDR Blocks of DTS Servers, clique em Test Connectivity.
NotaCertifique-se de que os blocos CIDR de IP dos servidores DTS estejam adicionados às configurações de segurança dos bancos de dados de origem e destino para permitir o acesso dos servidores DTS. Essa operação pode ser feita de forma automática ou manual. Para mais informações, consulte Add the IP address CIDR blocks of DTS servers to a whitelist.
-
Configure os objetos da tarefa.
-
Na página Configure Objects, configure os objetos a serem sincronizados.
Parameter
Description
Synchronization Types
Incremental Data Synchronization está selecionado. Por padrão, você também deve selecionar Schema Synchronization e Full Data Synchronization. Após a conclusão da verificação prévia, o DTS realiza uma sincronização completa dos dados dos objetos selecionados da instância source para o cluster de destino. Esses dados servem como linha de base para a sincronização incremental subsequente.
Processing Mode of Conflicting Tables
-
Precheck and Report Errors: Verifica se existe uma tabela com o mesmo nome no banco de dados de destino. Se não existir, a verificação prévia é aprovada. Caso exista, a verificação prévia falha e a tarefa de sincronização de dados não é iniciada.
NotaSe não for possível excluir ou renomear a tabela com o mesmo nome no banco de dados de destino, mapeie-a para um nome diferente. Para mais informações, consulte Mapear nomes de tabelas e colunas.
-
Ignore Errors and Proceed: Ignora a verificação de nomes de tabelas duplicados no banco de dados de destino.
AvisoSelecionar Ignore Errors and Proceed pode causar inconsistência de dados e colocar seu negócio em risco. Por exemplo:
-
Se os schemas das tabelas forem iguais e um registro no banco de dados de destino tiver o mesmo valor de chave primária ou chave única que um registro no banco de dados source:
-
Durante a sincronização completa, o DTS mantém o registro no cluster de destino. O registro correspondente do banco de dados source não é sincronizado.
-
Durante a sincronização incremental, o registro do banco de dados source sobrescreve o registro no banco de dados de destino.
-
-
Se os schemas das tabelas forem diferentes, a sincronização inicial de dados pode falhar, resultando na sincronização apenas parcial dos dados de uma coluna ou em falha completa da sincronização. Prossiga com cautela.
-
SQL Server Incremental Synchronization Mode
-
Log-based Parsing for Non-heap Tables and CDC-based Incremental Synchronization for Heap Tables (Hybrid Log-based Parsing):
-
Vantagens:
-
Compatível com cenários que envolvem heap tables, tabelas sem chaves primárias, tabelas comprimidas e tabelas com colunas computadas no banco de dados source.
-
Alta estabilidade de link. Este modo obtém instruções DDL completas e oferece suporte abrangente a cenários DDL.
-
-
Desvantagens:
-
O DTS cria um trigger dts_cdc_sync_ddl, uma tabela de heartbeat dts_sync_progress e uma tabela de armazenamento DDL dts_cdc_ddl_history no banco de dados source. Também ativa o CDC no nível do banco de dados e em algumas tabelas.
-
Não é possível executar instruções SELECT INTO, TRUNCATE, RENAME COLUMN ou de modificação de tipo de coluna em tabelas com CDC ativado no banco de dados source. O trigger criado pelo DTS no banco de dados source não pode ser excluído manualmente.
NotaTabelas que contêm os tipos geometry, geography ou hierarchyid não suportam a ativação do CDC.
-
-
-
Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported):
-
Vantagens:
Este modo não é intrusivo ao banco de dados source.
-
Desvantagens:
Não é compatível com cenários que envolvem heap tables, tabelas sem chaves primárias, tabelas comprimidas ou tabelas com colunas computadas no banco de dados source.
-
-
Polling and querying CDC instances for incremental synchronization:
-
Vantagens:
-
Compatível com sincronização completa e incremental quando o banco de dados source é Amazon RDS for SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure SQL Server on Virtual Machine ou Google Cloud SQL for SQL Server.
-
Este modo utiliza o componente nativo Change Data Capture (CDC) do SQL Server para obter dados incrementais, tornando a sincronização incremental mais estável e consumindo menos largura de banda de rede.
-
-
Desvantagens:
-
A conta do banco de dados source utilizada pela instância DTS deve ter permissão para ativar o CDC. Existe um atraso de aproximadamente 10 segundos na sincronização incremental de dados.
-
Em cenários que envolvem a sincronização de múltiplos bancos de dados e tabelas, podem ocorrer riscos de instabilidade e problemas de desempenho.
-
-
The maximum number of tables for which CDC is enabled that DTS supports.
Esta configuração limita o número de tabelas nas quais o CDC pode ser ativado dentro da instância de sincronização atual. O valor padrão é 1.000.
NotaEste parâmetro não está disponível quando SQL Server Incremental Synchronization Mode está definido como Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported).
DDL and DML Operations to Be Synchronized
Selecione as operações DDL ou DML a serem sincronizadas no nível da instância. Para informações sobre as operações suportadas, consulte Operações SQL suportadas.
NotaPara selecionar quais operações SQL sincronizar para um banco de dados ou tabela, clique com o botão direito no objeto de sincronização na caixa Selected Objects. Na caixa de diálogo exibida, selecione as operações SQL desejadas.
Storage Engine Type
Selecione o tipo de mecanismo de armazenamento para as tabelas de destino. O valor padrão é Beam.
NotaEste parâmetro está disponível somente quando a versão do kernel da instância AnalyticDB for PostgreSQL de destino é v7.0.6.6 ou posterior, e Synchronization Types está selecionado para Schema Synchronization.
Source Objects
Na caixa Source Objects, clique em um objeto a ser sincronizado e, em seguida, clique em
para movê-lo para a caixa Selected Objects.NotaEste cenário envolve sincronização entre bancos de dados heterogêneos. Portanto, somente tabelas podem ser selecionadas como objetos de sincronização. Outros objetos, como views, triggers e stored procedures, não são sincronizados para o banco de dados de destino.
Selected Objects
-
Para renomear um único objeto de sincronização na instância de destino, clique com o botão direito no objeto na caixa Selected Objects. Para mais informações sobre como renomear objetos, consulte Mapear um único banco de dados, tabela ou coluna.
-
Para alterar os nomes de múltiplos objetos de sincronização na instância de destino em lote, clique em Batch Edit no canto superior direito da caixa Selected Objects. Para mais informações, consulte Mapear bancos de dados, tabelas e colunas em lote.
Nota-
Para selecionar as operações SQL a serem sincronizadas no nível de banco de dados ou tabela, clique com o botão direito em um objeto na lista Selected Objects e selecione as operações SQL desejadas na caixa de diálogo exibida.
-
Para especificar uma condição WHERE para filtrar dados, clique com o botão direito em uma tabela na lista Selected Objects e especifique a condição na caixa de diálogo exibida. Para instruções, consulte Configurar condições de filtro.
-
Se você usar mapeamento de objetos, objetos dependentes podem falhar na sincronização.
-
-
Clique em Next: Advanced Settings para configurar os parâmetros avançados.
Parâmetro
Descrição
Dedicated Cluster for Task Scheduling
Por padrão, o DTS agenda tarefas em um cluster compartilhado e não é necessário selecionar um cluster. Para maior estabilidade de desempenho, adquira um cluster dedicado para executar as tarefas de sincronização do DTS. Para mais informações, consulte O que é um cluster dedicado do DTS?.
Retry Time for Failed Connections
Após o início de uma tarefa de sincronização, se a conexão com o banco de dados de origem ou destino falhar, o DTS reporta um erro e inicia imediatamente as tentativas de reconexão. A duração padrão de retry é de 720 minutos. É possível definir uma duração personalizada entre 10 e 1.440 minutos. Recomendamos definir uma duração de 30 minutos ou mais. Se o DTS reconectar ao banco de dados dentro do período especificado, a tarefa de sincronização é retomada automaticamente. Caso contrário, a tarefa falha.
Nota-
Se você tiver múltiplas instâncias do DTS (por exemplo, Instância A e Instância B) que compartilham a mesma origem ou destino, e definir o tempo de retry de rede como 30 minutos para a Instância A e 60 minutos para a Instância B, a duração mais curta, de 30 minutos, será aplicada a ambas.
-
Como o DTS cobra pelo tempo de execução da tarefa durante o período de retry de conexão, recomendamos personalizar a duração de retry conforme as necessidades do seu negócio ou liberar a instância do DTS o mais breve possível após as instâncias de banco de dados de origem e destino serem liberadas.
Retry Time for Other Issues
Após o início da tarefa de sincronização, se ocorrerem outros problemas não relacionados à conectividade com o banco de dados de origem ou destino (como exceções na execução de DDL ou DML), o DTS reporta um erro e inicia imediatamente operações contínuas de retry. A duração padrão de retry é de 10 minutos. É possível personalizar a duração dentro do intervalo de 1 a 1.440 minutos. Recomendamos definir 10 minutos ou mais. Se as operações relevantes forem bem-sucedidas dentro do período de retry configurado, a tarefa de sincronização é retomada automaticamente. Caso contrário, a tarefa falha.
ImportanteO valor de Retry Time for Other Issues deve ser menor que o valor de Retry Time for Failed Connections.
Enable Throttling for Full Data Synchronization
Durante a etapa de sincronização completa, o DTS consome recursos de leitura e gravação dos bancos de dados de origem e destino, o que pode aumentar a carga sobre eles. Para reduzir essa carga, defina um limite de taxa para a tarefa de sincronização completa configurando os parâmetros Queries per second (QPS) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s).
Nota-
Este item de configuração está disponível somente quando Synchronization Types está definido como Full Data Synchronization.
-
Também é possível ajustar a taxa de sincronização completa após a instância de sincronização estar em execução.
Enable Throttling for Incremental Data Synchronization
Também é possível definir um limite de taxa para a tarefa de sincronização incremental. Para aliviar a pressão sobre o banco de dados de destino, configure os parâmetros RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s).
Enclose Object Names in Quotation Marks
Escolha se deseja adicionar aspas aos nomes dos objetos de destino. Se você selecionar Yes e qualquer uma das condições a seguir for atendida, o DTS adicionará aspas simples ou duplas aos nomes dos objetos de destino durante as etapas de sincronização inicial de schema e de sincronização incremental de dados:
-
O ambiente de negócios do banco de dados de origem é sensível a maiúsculas e minúsculas e usa capitalização mista.
-
O nome da tabela de origem não começa com uma letra e contém caracteres além de letras, números ou caracteres especiais.
NotaApenas underscores (_), cerquilhas (#) e cifrões ($) são suportados como caracteres especiais.
-
O nome do schema, tabela ou coluna a ser sincronizado é uma palavra-chave, palavra reservada ou caractere inválido no banco de dados de destino.
NotaSe optar por adicionar aspas, utilize o nome do objeto de destino entre aspas nas consultas após a conclusão da tarefa de sincronização de dados.
Environment Tag
Selecione uma tag de ambiente para identificar a instância conforme as necessidades do seu negócio. Esta etapa não é obrigatória neste exemplo.
Configure ETL
Escolha se deseja ativar o recurso de extração, transformação e carregamento (ETL). Para mais informações, consulte O que é ETL? Valores válidos:
-
Yes: Ativa o recurso ETL. Insira as instruções de processamento de dados no editor de código. Para mais informações, consulte Configure ETL in a data migration or data synchronization task.
-
No: Desativa o recurso ETL.
Monitoring and Alerting
Especifique se deseja configurar alertas. Caso a sincronização falhe ou a latência ultrapasse o limiar especificado, uma notificação será enviada a um contato de alerta.
-
No: Nenhum alerta será configurado.
-
Yes: Configure alertas definindo um limiar de alerta e especificando um notificação de alerta. Para mais informações, consulte Configure monitoring and alerting during task configuration.
-
-
Clique em Next: Data Validation para configurar uma tarefa de validação de dados.
Para utilizar o recurso de validação de dados, consulte Configure data validation para obter as instruções de configuração.
-
Opcional: Após concluir as configurações anteriores, clique em Next: Configure Database and Table Fields para especificar o Type, a Primary Key Column e a Distribution Key para as tabelas de destino na instância AnalyticDB for PostgreSQL.
NotaEsta etapa está disponível somente se você selecionou Schema Synchronization em Synchronization Types ao configurar os objetos de sincronização. Você pode alterar as configurações definindo Definition Status como All.
A Primary Key Column pode ser uma chave composta formada por múltiplas colunas. Selecione uma ou mais colunas de Primary Key Column para servir como Distribution Key. Para mais informações, consulte Manage tables e Define table distribution.
-
-
Salve a tarefa e execute uma verificação prévia.
Para visualizar os parâmetros da API de configuração desta instância, passe o cursor sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters no balão exibido.
Após concluir a visualização dos parâmetros da API, clique em Next: Save Task Settings and Precheck na parte inferior da página.
NotaAntes do início do job de sincronização, o DTS executa uma verificação prévia. O job só pode ser iniciado após todos os itens da verificação prévia serem aprovados.
Se a verificação prévia falhar, clique em View Details no item com falha. Corrija o problema conforme orientado e execute a verificação prévia novamente.
-
Se a verificação prévia retornar um aviso:
Se um item de verificação falhar e não puder ser ignorado, clique em View Details ao lado do item. Siga as instruções para corrigir o problema e execute a verificação prévia novamente.
Para itens que podem ser ignorados, clique em Confirm Alert Details, Ignore, OK e Precheck Again em sequência para ignorar o aviso e reexecutar a verificação prévia. Optar por ignorar o item de aviso pode causar problemas como inconsistência de dados e representar riscos para o seu negócio.
-
Adquira a instância.
Quando a Success Rate atingir 100%, clique em Next: Purchase Instance.
-
Na página Purchase, selecione o método de faturamento e a especificação de link para a instância de sincronização de dados. A tabela a seguir descreve esses parâmetros em detalhes.
Categoria
Parâmetro
Descrição
New Instance Class
Método de Faturamento
-
Assinatura: o pagamento é realizado no momento da criação da instância. Mais indicado para necessidades de longo prazo, com custo menor do que o pagamento conforme o uso. Quanto maior o período de assinatura, maior o desconto.
-
Pagamento conforme o uso: a cobrança é feita por hora. Adequado para necessidades de curto prazo. Você pode liberar a instância imediatamente após o uso para reduzir custos.
Configuração do Grupo de Recursos
O grupo de recursos ao qual a instância pertence. O padrão é o grupo de recursos default. Para mais informações, consulte O que é o Resource Management?.
Especificação de Link
O DTS oferece especificações de sincronização com diferentes níveis de desempenho. A especificação do link de sincronização influencia a taxa de sincronização. Escolha uma especificação de acordo com o seu cenário de negócios. Para mais informações, consulte Especificações do link de sincronização de dados.
Duração da Assinatura
No modo de assinatura, selecione a duração e a quantidade para a instância de assinatura. É possível optar por assinatura mensal de 1 a 9 meses, ou anual de 1, 2, 3 ou 5 anos.
NotaEsta opção está disponível apenas quando o método de faturamento é Subscription.
-
Após concluir a configuração, leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.
-
Clique em Buy and Start. Na caixa de diálogo OK, clique em OK.
Acompanhe o progresso da tarefa na página Data Synchronization.