Use o DTS para sincronizar dados entre instâncias do ApsaraDB RDS for SQL Server.
Pré-requisitos
-
Crie as instâncias de origem e de destino do ApsaraDB RDS for SQL Server. Para verificar as versões compatíveis, consulte Synchronization solution overview. Para criar uma instância, consulte Create an ApsaraDB RDS for SQL Server instance.
ImportanteO modo de análise híbrida baseada em logs (quando o parâmetro SQL Server Incremental Synchronization Mode está definido como Log-based Parsing for Non-heap Tables and CDC-based Incremental Synchronization for Heap Tables) oferece suporte às seguintes versões e edições do banco de dados de origem:
Edição Enterprise ou Enterprise Evaluation: 2012, 2014, 2016, 2019, 2022 ou 2025.
Edição Standard: 2016, 2019, 2022 ou 2025.
A instância de destino do ApsaraDB RDS for SQL Server deve ter mais espaço de armazenamento que a instância de origem do ApsaraDB RDS for SQL Server.
-
Ao sincronizar dados de um SQL Server autogerenciado para uma instância do ApsaraDB RDS for SQL Server, recomendamos usar o recurso de backup de banco de dados do ApsaraDB RDS for SQL Server se alguma das condições a seguir se aplicar. Para mais informações, consulte Migrar dados de um banco de dados autogerenciado para uma instância do ApsaraDB RDS for SQL Server.
A instância de origem tem mais de 10 bancos de dados.
Backups de log ocorrem mais de uma vez por hora para um único banco de dados.
Mais de 100 operações de Linguagem de Definição de Dados (DDL) são executadas por hora em um único banco de dados.
A taxa de geração de logs para um único banco de dados excede 20 MB/s.
É necessário ativar o Change Data Capture (CDC) em mais de 1.000 tabelas.
-
O banco de dados de origem contém tabelas heap, tabelas sem chave primária, tabelas compactadas, tabelas com colunas computadas ou tabelas com colunas esparsas. Execute as instruções SQL a seguir para verificar a existência desses tipos de tabela no banco de dados de origem:
-
Verifique tabelas heap no banco de dados de origem:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0); -
Verifique tabelas sem chave primária:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK'); -
Verifique colunas de chave primária não incluídas no índice clusterizado:
SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter); -
Verifique tabelas compactadas no banco de dados de origem:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0; -
Verifique tabelas que contêm colunas computadas:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1); -
Verifique tabelas que contêm colunas esparsas:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_sparse = 1);
-
Observações de uso
O DTS não sincroniza chaves estrangeiras do banco de dados de origem para o banco de dados de destino. Consequentemente, operações em cascata e de exclusão no banco de dados de origem não são replicadas no destino.
|
Tipo |
Descrição |
|
Limitações do banco de dados de origem |
|
|
Outras limitações |
|
|
Casos especiais |
Quando a instância de origem é um ApsaraDB RDS for SQL Server, o DTS cria a conta |
Faturamento
|
Tipo de sincronização |
Preço |
|
Sincronização de esquema e sincronização completa de dados |
Gratuito. |
|
Sincronização incremental de dados |
Pago. Para mais informações, consulte Billing overview. |
Topologias de sincronização
Sincronização unidirecional um para um
Sincronização unidirecional um para muitos
Sincronização unidirecional em cascata
Sincronização unidirecional muitos para um
Para descrições detalhadas de cada topologia e seus casos de uso, consulte Synchronization topologies.
Operações SQL suportadas
|
Tipo de operação |
Instrução SQL |
|
DML |
Nota
O DTS não sincroniza instruções |
|
DDL |
Nota
|
Procedimento
-
Acesse a página da lista de tarefas de sincronização da região de destino. Use um dos dois métodos abaixo:
Pelo console do DTS
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.
Pelo console do DMS
NotaAs operações reais podem variar dependendo do modo e layout do console DMS. Para mais detalhes, 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 de destino.
AvisoApós selecionar as instâncias de origem e destino, leia atentamente os limites exibidos no topo da página. O descumprimento dessas restrições pode causar falha na tarefa ou inconsistência de dados.
Seção
Parâmetro
Descrição
N/A
Task Name
O DTS gera automaticamente um nome para a tarefa. Recomenda-se especificar um nome descritivo para facilitar a identificação. O nome não precisa ser único.
Source Database
Select Existing Connection
-
Para usar uma instância de banco de dados que esteja added to the system (recém-criada ou salva), selecione-a na lista suspensa. As informações serão configuradas automaticamente.
NotaNo console do DMS, este item de configuração chama-se Select a DMS database instance..
-
Caso não tenha adicionado a instância ao sistema ou não precise usar uma instância já adicionada, configure manualmente as informações do banco de dados a seguir.
Database Type
Selecione SQL Server.
Connection Type
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região da instância de origem do ApsaraDB RDS for SQL Server.
Instance ID
Selecione o ID da instância de origem do ApsaraDB RDS for SQL Server.
Database Account
Insira a conta do banco de dados da instância de origem do ApsaraDB RDS for SQL Server. A conta deve ter permissões de owner sobre os objetos a serem sincronizados. Uma conta privilegiada atende a esse requisito.
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. O DTS confia no certificado do servidor por padrão.
Destination Database
Select Existing Connection
-
Para usar uma instância de banco de dados que esteja added to the system (recém-criada ou salva), selecione-a na lista suspensa. As informações serão configuradas automaticamente.
NotaNo console do DMS, este item de configuração chama-se Select a DMS database instance..
-
Caso não tenha adicionado a instância ao sistema ou não precise usar uma instância já adicionada, configure manualmente as informações do banco de dados a seguir.
Database Type
Selecione SQL Server.
Connection Type
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região da instância de destino do ApsaraDB RDS for SQL Server.
Instance ID
Selecione o ID da instância de destino do ApsaraDB RDS for SQL Server.
Database Account
Insira a conta do banco de dados da instância de destino do ApsaraDB RDS for SQL Server. A conta deve ter permissões de owner sobre os objetos a serem sincronizados.
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 destino, selecione Non-encrypted.
-
Se a criptografia SSL estiver ativada no banco de dados de destino, selecione SSL-encrypted. O DTS confia no certificado do servidor por padrão.
-
-
Após concluir a configuração, clique em Test Connectivity and Proceed na parte inferior da página.
NotaCertifique-se de que os blocos CIDR de endereços IP dos servidores DTS estejam adicionados às configurações de segurança dos bancos de dados de origem e destino para permitir o acesso. Isso pode ser feito automática ou manualmente. Para mais informações, consulte Add the IP address CIDR blocks of DTS servers to a whitelist.
Se o banco de dados de origem ou destino for autogerenciado (onde o Access Method não é Alibaba Cloud Instance), clique também em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers.
-
Configure os objetos da tarefa.
-
Na página Configure Objects, configure os objetos a serem sincronizados.
Parâmetro
Descrição
Synchronization Types
Incremental Data Synchronization vem selecionado. Por padrão, você também deve selecionar Schema Synchronization e Full Data Synchronization. Após a pré-verificação, o DTS executa uma sincronização completa dos objetos selecionados da instância de origem para o cluster de destino, servindo como base para a sincronização incremental subsequente.
Method to Migrate Triggers in Source Database
Escolha um método para sincronizar triggers conforme sua necessidade. Se não houver triggers para sincronizar, não é necessário configurar este parâmetro. Para mais informações, consulte Configure how to synchronize or migrate triggers.
NotaEste parâmetro só está disponível quando Schema Synchronization estiver definido em Synchronization Types.
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:
-
Suporta cenários com tabelas heap, tabelas sem chave primária, tabelas compactadas e tabelas com colunas computadas no banco de dados de origem.
-
Alta estabilidade do 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 de origem. 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 modificação de tipo de coluna em tabelas com CDC ativado no banco de dados de origem. O trigger criado pelo DTS não pode ser excluído manualmente.
NotaTabelas contendo tipos geometry, geography ou hierarchyid não suportam ativação de CDC.
-
-
-
Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported):
-
Vantagens:
Este modo não é intrusivo ao banco de dados de origem.
-
Desvantagens:
Não suporta cenários com tabelas heap, tabelas sem chave primária, tabelas compactadas ou tabelas com colunas computadas no banco de dados de origem.
-
-
Polling and querying CDC instances for incremental synchronization:
-
Vantagens:
-
Suporta sincronização completa e incremental quando o banco de dados de origem é 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 usa o componente nativo Change Data Capture (CDC) do SQL Server para obter dados incrementais, tornando a sincronização mais estável e consumindo menos largura de banda de rede.
-
-
Desvantagens:
-
A conta do banco de dados de origem usada pela instância DTS deve ter permissão para ativar o CDC. Existe um atraso de aproximadamente 10 segundos na sincronização incremental.
-
Em cenários envolvendo sincronização de múltiplos bancos de dados e tabelas, podem haver riscos de problemas de estabilidade e 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 estará disponível se você definir SQL Server Incremental Synchronization Mode como Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported).
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 pré-verificação é aprovada. Se existir, a pré-verificação falha e a tarefa não inicia.
NotaSe não for possível excluir ou renomear a tabela homônima no destino, mapeie-a para um nome diferente. Para mais informações, consulte Map table and column names.
-
Ignore Errors and Proceed: Ignora a verificação de nomes de tabela duplicados no destino.
AvisoSelecionar Ignore Errors and Proceed pode causar inconsistência de dados e colocar seus negócios em risco. Por exemplo:
-
Se os esquemas das tabelas forem iguais e um registro no destino tiver a mesma chave primária ou única que um registro na origem:
-
Durante a sincronização completa, o DTS mantém o registro no cluster de destino e o registro correspondente da origem não é sincronizado.
-
Durante a sincronização incremental, o registro da origem sobrescreve o registro no destino.
-
-
Se os esquemas forem diferentes, a sincronização inicial pode falhar, resultando em sincronização parcial de colunas ou falha total. Prossiga com cautela.
-
Source Objects
Na caixa Source Objects, clique em um objeto para sincronizar e depois clique em
para movê-lo para a caixa Selected Objects.NotaÉ possível selecionar bancos de dados, tabelas e colunas como objetos de sincronização. Ao selecionar tabelas ou colunas, outros objetos como views, triggers e stored procedures não serão sincronizados para o 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 detalhes sobre renomeação, consulte Map a single database, table, or column.
-
Para alterar em lote os nomes de vários objetos na instância de destino, clique em Batch Edit no canto superior direito da caixa Selected Objects. Para mais informações, consulte Map databases, tables, and columns in a batch.
Nota-
Para selecionar as operações SQL a sincronizar no nível de banco de dados ou tabela, clique com o botão direito em um objeto na caixa Selected Objects e escolha as operações desejadas na caixa de diálogo exibida.
-
Para filtrar dados usando cláusulas WHERE, clique com o botão direito em uma tabela na caixa Selected Objects e especifique as condições de filtro na caixa de diálogo. Para mais informações, consulte Set filter conditions.
-
Ao usar o recurso de mapeamento de nomes de objetos, outros objetos dependentes de um objeto renomeado podem falhar na sincronização.
-
-
Clique em Next: Advanced Settings para configurar parâmetros avançados.
Parâmetro
Descrição
Dedicated Cluster for Task Scheduling
Por padrão, o DTS agenda tarefas em um cluster compartilhado, sem necessidade de seleção. Para desempenho mais estável, adquira um cluster dedicado para executar tarefas de sincronização. Para mais informações, consulte What is a DTS dedicated cluster?.
Retry Time for Failed Connections
Se a conexão com o banco de dados de origem ou destino falhar após o início da tarefa, o DTS reportará um erro e iniciará tentativas de reconexão imediatas. A duração padrão de tentativa é de 720 minutos. Você pode especificar uma duração personalizada entre 10 e 1.440 minutos, recomendando-se pelo menos 30 minutos. Se a reconexão for bem-sucedida dentro desse período, a tarefa será retomada automaticamente; caso contrário, ela falhará.
Nota-
Se houver múltiplas instâncias DTS (ex: Instância A e B) compartilhando a mesma origem ou destino, e o tempo de tentativa for definido como 30 minutos para A e 60 minutos para B, a menor duração (30 minutos) prevalecerá para ambas.
-
Como o DTS cobra pelo tempo de execução durante as tentativas de reconexão, recomenda-se personalizar a duração conforme a necessidade do negócio ou liberar a instância DTS assim que as instâncias de banco de dados forem liberadas.
Retry Time for Other Issues
Se ocorrerem problemas não relacionados à conectividade (como exceções na execução de DDL ou DML) após o início da tarefa, o DTS reportará erro e iniciará tentativas contínuas. A duração padrão é de 10 minutos, personalizável entre 1 e 1.440 minutos (recomenda-se 10 minutos ou mais). Se as operações forem bem-sucedidas dentro do prazo, a tarefa retoma automaticamente; caso contrário, falhará.
ImportanteO valor de Retry Time for Other Issues deve ser menor que o de Retry Time for Failed Connections.
Enable Throttling for Full Data Synchronization
Durante a fase de sincronização completa, o DTS consome recursos de leitura e escrita dos bancos de origem e destino, aumentando a carga. Para reduzir esse impacto, defina limites de taxa 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-
Esta opção só está disponível quando Synchronization Types estiver definido como Full Data Synchronization.
-
Você também pode adjust the full synchronization rate após a instância de sincronização estar em execução.
Enable Throttling for Incremental Data Synchronization
Também é possível definir limites de taxa para a sincronização incremental. Para aliviar a pressão no banco de dados de destino, configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s).
Environment Tag
Selecione uma tag de ambiente para identificar a instância. Esta configuração pode ser ignorada neste exemplo.
Configure ETL
Escolha se deseja ativar o recurso de extração, transformação e carga (ETL). Para mais informações, consulte What is 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. Se a sincronização falhar ou a latência exceder o limiar definido, uma notificação será enviada ao contato de alerta.
-
No: Nenhum alerta configurado.
-
Yes: Configure alertas definindo um limiar 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 usar o recurso de validação de dados, consulte as instruções de configuração em Configure data validation.
-
-
Salve a tarefa e execute a pré-verificação.
Para visualizar os parâmetros da api referentes a esta instância, passe o mouse sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters no balão exibido.
Após consultar os parâmetros da api, clique em Next: Save Task Settings and Precheck na parte inferior da página.
NotaO DTS executa uma pré-verificação antes do início do job de sincronização. O job só inicia após a aprovação de todos os itens.
Se a pré-verificação falhar, clique em View Details no item com falha. Corrija o problema conforme indicado e execute a pré-verificação novamente.
-
Se a pré-verificação 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 pré-verificação novamente.
Para itens que podem ser ignorados, clique sequencialmente em Confirm Alert Details, Ignore, OK e Precheck Again para ignorar o aviso e reexecutar a pré-verificação. Ignorar avisos pode causar inconsistência de dados e riscos aos negócios.
-
Adquira a instância.
Quando a Success Rate for 100%, clique em Next: Purchase Instance.
-
Na página Purchase, selecione o método de faturamento e a especificação do link para a instância de sincronização. A tabela abaixo detalha esses parâmetros.
Categoria
Parâmetro
Descrição
New Instance Class
Método de Faturamento
-
Assinatura: Pagamento realizado na criação da instância. Ideal para necessidades de longo prazo e mais econômico que o pagamento conforme o uso. Quanto maior a duração, maior o desconto.
-
Pagamento conforme o uso: Cobrança horária. Adequado para necessidades de curto prazo. Libere a instância logo após o uso para economizar.
Configuração do Grupo de Recursos
Grupo de recursos ao qual a instância pertence. O padrão é o grupo de recursos padrão. Para mais informações, consulte What is Resource Management?.
Especificação do Link
O DTS oferece especificações de sincronização com diferentes níveis de desempenho, o que afeta a taxa de transferência. Escolha a especificação adequada ao seu cenário de negócios. Para mais informações, consulte Data synchronization link specifications.
Duração da Assinatura
No modo assinatura, selecione a duração e quantidade. Opções mensais de 1 a 9 meses ou anuais de 1, 2, 3 ou 5 anos.
NotaEsta opção só está disponível quando o método de faturamento for 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.
Verificar status do CDC
Esta seção descreve como verificar o status do CDC ou desativá-lo.
Substitua as variáveis pelos valores reais antes de executar as instruções SQL abaixo.
-
Para verificar o status do CDC no banco de dados:
SELECT name, is_cdc_enabled FROM sys.databases WHERE name = '<your db name>'; -
Para verificar o status de um job de CDC:
SELECT database_name(database_id), job_type FROM [msdb].[dbo].[cdc_jobs] WHERE database_id = DB_ID('<your db name>'); -
Para confirmar o funcionamento correto do CDC:
-
Verifique o uso do espaço de log.
SELECT * FROM sys.dm_db_log_space_usage; Confirme se o service SQL Server Agent está funcionando corretamente. Para detalhes, consulte SQL Server Agent.
-
Verifique se o CDC está lendo o log corretamente. Falhas na leitura podem fazer o DTS tentar novamente ou encerrar a tarefa.
SELECT * FROM sys.dm_cdc_log_scan_sessions;
-
-
Para desativar o CDC em um banco de dados:
USE [<your db name>]; DROP TRIGGER [dts_cdc_sync_ddl] ON database; # You must drop this trigger to disable CDC. Ignore this statement if the trigger does not exist. EXECUTE [sys].[sp_cdc_disable_db];