Utilize o DTS para sincronizar dados entre instâncias do ApsaraDB RDS for SQL Server.
Pré-requisitos
-
As instâncias de origem e de destino do ApsaraDB RDS for SQL Server já devem estar criadas. Para verificar as versões compatíveis, consulte {{XREF_0}}. Para criar uma instância, consulte {{XREF_1}}.
ImportanteNo modo híbrido de análise 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), as seguintes versões e edições do banco de dados de origem são suportadas:
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 precisa ter mais espaço de armazenamento do 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, recomenda-se utilizar o recurso de backup de banco de dados do ApsaraDB RDS for SQL Server caso alguma das condições abaixo se aplique. 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 possui mais de 10 bancos de dados.
Backups de log são executados mais de uma vez por hora em um único banco de dados.
Mais de 100 operações de Linguagem de Definição de Dados (DDL) são realizadas por hora em um único banco de dados.
A taxa de geração de logs de 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:
-
Verificar tabelas heap no banco de dados de origem:
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]; -
Verificar tabelas sem chave primária:
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]; -
Verificar colunas de chave primária não incluídas no índice clusterizado:
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]; -
Verificar tabelas compactadas no banco de dados de origem:
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]; -
Verificar tabelas que contêm colunas computadas:
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]; -
Verificar tabelas que contêm colunas esparsas:
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];
-
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 schema e sincronização completa de dados |
Gratuito. |
|
Sincronização incremental de dados |
Pago. Para mais informações, consulte {{XREF_6}}. |
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 {{XREF_7}}.
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 de lista de tarefas de sincronização da região de destino. Utilize 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 {{XREF_8}} e {{XREF_9}}.
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 {{XREF_10}} (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 a instância não tenha sido adicionada ao sistema ou você prefira não usar uma instância já cadastrada, configure manualmente as informações abaixo.
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
Escolha entre 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 {{XREF_11}} (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 a instância não tenha sido adicionada ao sistema ou você prefira não usar uma instância já cadastrada, configure manualmente as informações abaixo.
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
Escolha entre 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 foram 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 {{XREF_12}}.
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, ignore este parâmetro. Para mais informações, consulte {{XREF_13}}.
NotaEste parâmetro só fica disponível quando Schema Synchronization estiver selecionado 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:
-
Compatível com cenários que envolvem 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 o trigger dts_cdc_sync_ddl, a tabela de heartbeat dts_sync_progress e a tabela de armazenamento DDL dts_cdc_ddl_history no banco de dados de origem. Além disso, 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:
Modo não intrusivo ao banco de dados de origem.
-
Desvantagens:
Incompatível com cenários que envolvem 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.
-
Utiliza 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 precisa ter permissão para ativar o CDC. Existe um atraso de aproximadamente 10 segundos na sincronização incremental.
-
Em cenários com múltiplos bancos de dados e tabelas, podem ocorrer riscos de estabilidade 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 na instância de sincronização atual. O valor padrão é 1.000.
NotaEste parâmetro não estará disponível se SQL Server Incremental Synchronization Mode estiver definido 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.
NotaCaso não seja possível excluir ou renomear a tabela homônima no destino, mapeie-a para um nome diferente. Para mais informações, consulte {{XREF_14}}.
-
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 idênticos e um registro no destino tiver a mesma chave primária ou única de 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 schemas das tabelas 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 dentro da caixa Selected Objects. Para mais detalhes sobre renomeação, consulte {{XREF_15}}.
-
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 {{XREF_16}}.
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 caixa Selected Objects e marque 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 {{XREF_17}}.
-
O uso do recurso de mapeamento de nomes de objetos pode causar falha na sincronização de outros objetos dependentes do objeto renomeado.
-
-
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 maior estabilidade, adquira um cluster dedicado para executar tarefas de sincronização. Para mais informações, consulte {{XREF_18}}.
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á imediatamente novas tentativas. A duração padrão de tentativa é de 720 minutos. Você pode personalizar esse valor entre 10 e 1.440 minutos, recomendando-se no mínimo 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 múltiplas instâncias DTS (por exemplo, Instância A e Instância B) compartilharem a mesma origem ou destino, e o tempo de nova tentativa de rede for definido como 30 minutos para a Instância A e 60 minutos para a Instância B, o menor valor (30 minutos) prevalecerá para ambas.
-
Como o DTS cobra pelo tempo de execução da tarefa 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 de origem e destino 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á um erro e iniciará tentativas contínuas. A duração padrão é de 10 minutos, personalizável entre 1 e 1.440 minutos, recomendando-se no mínimo 10 minutos. Se as operações forem bem-sucedidas dentro desse período, a tarefa será retomada automaticamente; caso contrário, ela 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 dados 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 inclui Full Data Synchronization.
-
Também é possível {{XREF_19}} após a instância de sincronização estar em execução.
Enable Throttling for Incremental Data Synchronization
Defina limites de taxa também 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
Decida se deseja ativar o recurso de extração, transformação e carga (ETL). Para mais informações, consulte {{XREF_20}}. Valores válidos:
-
Yes: Ativa o recurso ETL. Insira as instruções de processamento de dados no editor de código. Para mais detalhes, consulte {{XREF_21}}.
-
No: Desativa o recurso ETL.
Monitoring and Alerting
Defina se deseja configurar alertas. Caso a sincronização falhe ou a latência ultrapasse o limiar especificado, uma notificação será enviada ao contato de alerta.
-
No: Nenhum alerta configurado.
-
Yes: Configure alertas definindo um limiar e especificando um alert notification. Para mais informações, consulte {{XREF_22}}.
-
-
Clique em Next: Data Validation para configurar uma tarefa de validação de dados.
Para utilizar o recurso de validação de dados, consulte as instruções de configuração em {{XREF_23}}.
-
-
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.
NotaAntes de iniciar o job de sincronização, o DTS executa uma pré-verificação. O job só começa após a aprovação de todos os itens.
Se a pré-verificação falhar, clique em View Details no item reprovado. Corrija o problema conforme indicado e execute a pré-verificação novamente.
-
Se a pré-verificação retornar um aviso:
Caso um item de verificação falhe e não possa 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 pular o aviso e refazer a pré-verificação. Ignorar avisos pode causar inconsistência de dados e riscos ao 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 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 da assinatura, 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 {{XREF_24}}.
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 {{XREF_25}}.
Duração da assinatura
No modo assinatura, selecione a duração e a quantidade. Opções mensais de 1 a 9 meses ou anuais de 1, 2, 3 ou 5 anos.
NotaEsta opção só aparece quando o método de faturamento é Subscription.
-
Após concluir a configuração, leia e aceite os 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 explica 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:
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]; -
Para verificar o status de um job do CDC:
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]; -
Para confirmar que o CDC está funcionando corretamente:
-
Verifique o uso do espaço de log.
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]; Confirme se o serviço SQL Server Agent está operando normalmente. 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.
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];
-
-
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];