Todos os produtos
Search
Central de documentação

Data Transmission Service:Sincronizar dados de uma instância de cluster sharded do ApsaraDB for MongoDB para uma função do Function Compute

Última atualização: Oct 09, 2026

O Data Transmission Service (DTS) captura alterações incrementais de um cluster sharded do ApsaraDB for MongoDB e entrega cada evento de alteração para uma função do Function Compute no formato Canal JSON. Escreva o código da sua função para processar, transformar ou encaminhar os eventos para sistemas downstream.

O que sua função recebe

Cada invocação passa um objeto com um array Records. Cada elemento no array representa um evento de alteração:

Campo

Tipo

Descrição

isDdl

Boolean

True para operações DDL; False para operações DML

type

String

DML: INSERT, UPDATE ou DELETE. DDL: DDL

database

String

Nome do banco de dados MongoDB

table

String

Nome da coleção

pkNames

String

Nome da chave primária. Sempre _id para MongoDB

es

Long

Timestamp UNIX de 13 dígitos (ms) — quando a operação ocorreu na source

ts

Long

Timestamp UNIX de 13 dígitos (ms) — quando o DTS começou a gravar no destino

data

Object Array

Array de um elemento. O elemento possui uma chave doc cujo valor é uma string JSON que representa o documento. Desserialize o valor para ler o registro

old

Object Array

Mesmo formato de data. Presente apenas quando type é UPDATE; contém o estado do documento antes da atualização

id

Int

Número de série da operação

A função recebe duas categorias de operações:

  • DDL — alterações de schema: CreateIndex, CreateCollection, DropIndex, DropCollection

  • DML — alterações de dados: INSERT, UPDATE, DELETE

Payloads de exemplo

Crie uma coleção (DDL)

db.createCollection("testCollection")
{
  "Records": [{
    "data": [{"doc": "{\"create\": \"testCollection\", \"idIndex\": {\"v\": 2, \"key\": {\"_id\": 1}, \"name\": \"_id_\"}}"}],
    "pkNames": ["_id"],
    "type": "DDL",
    "es": 1694056437000,
    "database": "MongoDBTest",
    "id": 0,
    "isDdl": true,
    "table": "testCollection",
    "ts": 1694056437510
  }]
}

Exclua uma coleção (DDL)

db.testCollection.drop()
{
  "Records": [{
    "data": [{"doc": "{\"drop\": \"testCollection\"}"}],
    "pkNames": ["_id"],
    "type": "DDL",
    "es": 1694056577000,
    "database": "MongoDBTest",
    "id": 0,
    "isDdl": true,
    "table": "testCollection",
    "ts": 1694056577789
  }]
}

Crie um índice (DDL)

db.testCollection.createIndex({name: 1})
{
  "Records": [{
    "data": [{"doc": "{\"createIndexes\": \"testCollection\", \"v\": 2, \"key\": {\"name\": 1}, \"name\": \"name_1\"}"}],
    "pkNames": ["_id"],
    "type": "DDL",
    "es": 1694056670000,
    "database": "MongoDBTest",
    "id": 0,
    "isDdl": true,
    "table": "testCollection",
    "ts": 1694056670719
  }]
}

Exclua um índice (DDL)

db.testCollection.dropIndex({name: 1})
{
  "Records": [{
    "data": [{"doc": "{\"dropIndexes\": \"testCollection\", \"index\": \"name_1\"}"}],
    "pkNames": ["_id"],
    "type": "DDL",
    "es": 1694056817000,
    "database": "MongoDBTest",
    "id": 0,
    "isDdl": true,
    "table": "$cmd",
    "ts": 1694056818035
  }]
}

Inserir documentos (DML)

// Batch insert
db.runCommand({insert: "user", documents: [{"name": "jack", "age": 20}, {"name": "lili", "age": 20}]})

// Single insert
db.user.insert({"name": "jack", "age": 20})
{
  "Records": [
    {
      "data": [{"doc": "{\"_id\": {\"$oid\": \"64f9397f6e255f74d65a****\"}, \"name\": \"jack\", \"age\": 20}"}],
      "pkNames": ["_id"],
      "type": "INSERT",
      "es": 1694054783000,
      "database": "MongoDBTest",
      "id": 0,
      "isDdl": false,
      "table": "user",
      "ts": 1694054784427
    },
    {
      "data": [{"doc": "{\"_id\": {\"$oid\": \"64f9397f6e255f74d65a****\"}, \"name\": \"lili\", \"age\": 20}"}],
      "pkNames": ["_id"],
      "type": "INSERT",
      "es": 1694054783000,
      "database": "MongoDBTest",
      "id": 0,
      "isDdl": false,
      "table": "user",
      "ts": 1694054784428
    }
  ]
}

Atualize um documento (DML)

db.user.update({"name": "jack"}, {$set: {"age": 30}})
{
  "Records": [{
    "data": [{"doc": "{\"$set\": {\"age\": 30}}"}],
    "pkNames": ["_id"],
    "old": [{"doc": "{\"_id\": {\"$oid\": \"64f9397f6e255f74d65a****\"}}"}],
    "type": "UPDATE",
    "es": 1694054989000,
    "database": "MongoDBTest",
    "id": 0,
    "isDdl": false,
    "table": "user",
    "ts": 1694054990555
  }]
}
Para operações UPDATE, apenas o comando $set é executado de forma síncrona quando o DTS sincroniza dados incrementais.

Exclua um documento (DML)

db.user.remove({"name": "jack"})
{
  "Records": [{
    "data": [{"doc": "{\"_id\": {\"$oid\": \"64f9397f6e255f74d65a****\"}}"}],
    "pkNames": ["_id"],
    "type": "DELETE",
    "es": 1694055452000,
    "database": "MongoDBTest",
    "id": 0,
    "isDdl": false,
    "table": "user",
    "ts": 1694055452852
  }]
}

Limitações

Revise estas restrições antes de criar sua tarefa de sincronização.

Restrições de escopo:

  • O DTS suporta apenas a sincronização incremental de dados, sem suporte para sincronização completa.

  • O DTS não suporta a sincronização entre regiões.

  • O DTS não pode sincronizar dados dos bancos de dados admin, config ou local.

  • O DTS não suporta o mapeamento de objetos.

  • O DTS não retém informações de transação. As transações são convertidas em registros individuais no destino.

Restrições do banco de dados source:

  • A source deve usar a arquitetura de cluster sharded, com no máximo 10 nós Mongos.

  • A source não pode ser um cluster do Azure Cosmos DB for MongoDB ou um cluster elástico do Amazon DocumentDB.

  • As coleções a serem sincronizadas devem ter restrições PRIMARY KEY ou UNIQUE e todos os campos devem ser únicos. Caso contrário, o banco de dados de destino poderá conter registros duplicados.

  • Um único documento não pode exceder 16 MB. O DTS não grava documentos acima desse tamanho na função de destino, gerando um erro. Se necessário, use o recurso de extração, transformação e carga (ETL) para filtrar campos grandes.

  • Sincronize até 1.000 coleções por tarefa. Para mais coleções, crie várias tarefas ou sincronize no nível do banco de dados.

  • Não redimensione a instância source enquanto uma tarefa de sincronização estiver em execução.

  • O DTS não pode se conectar a um banco de dados MongoDB por meio de um endpoint SRV.

  • Se o balanceador do banco de dados source estiver ativo, a tarefa poderá sofrer atrasos.

  • Se o banco de dados source for um banco de dados MongoDB autogerenciado que usa a arquitetura de cluster sharded, defina o parâmetro Access Method como Express Connect, VPN Gateway, or Smart Access Gateway ou Cloud Enterprise Network (CEN).

Restrições de gravação:

  • Para operações INSERT, os dados inseridos devem conter chaves de shard.

  • Não é possível modificar chaves de shard em operações UPDATE.

  • Configure apenas uma tarefa do DTS por função de destino. Várias tarefas que gravam na mesma função podem causar erros de dados.

Requisitos de oplog e change stream:

  • O oplog deve estar ativado e reter pelo menos 7 dias de dados de log, ou os change streams devem estar ativados para cobrir pelo menos os últimos 7 dias de alterações. Se nenhuma dessas condições for atendida, o DTS poderá falhar ao capturar as alterações da source, causando inconsistência ou perda de dados não coberta pelo acordo de nível de service (SLA) do DTS.

Restrições de change stream (se aplicável):

  • Os change streams exigem o MongoDB 4.0 ou posterior.

  • O DTS não suporta sincronização bidirecional ao usar change streams.

  • Para clusters não elásticos do Amazon DocumentDB, use change streams: defina Migration Method como ChangeStream e Architecture como Sharded Cluster.

Novos bancos de dados:

  • O DTS não sincroniza dados incrementais de bancos de dados criados após o início da tarefa de sincronização.

Operações suportadas

As operações capturadas dependem do método de migração.

Usando oplog (recomendado):

  • CREATE COLLECTION, CREATE INDEX

  • DROP DATABASE, DROP COLLECTION, DROP INDEX

  • RENAME COLLECTION

  • INSERT, UPDATE e DELETE no nível do documento

Usando change streams:

  • DROP DATABASE, DROP COLLECTION

  • RENAME COLLECTION

  • INSERT, UPDATE e DELETE no nível do documento

Faturamento

A sincronização incremental de dados é cobrada. Para detalhes de preços, consulte Billing overview.

Método de faturamento

Descrição

Assinatura

Pague antecipadamente por 1 a 9 meses, ou 1, 2, 3 ou 5 anos. Mais econômico para uso a longo prazo

Pagamento conforme o uso

Cobrança por hora. Libere a instância quando não for mais necessária para interromper as cobranças

O DTS cobra pela instância durante os períodos de tentativa de reconexão.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Uma instância de cluster sharded do ApsaraDB for MongoDB em execução. Consulte Create a sharded cluster instance

  • Um service e uma função do Function Compute, com Handler Type definido como Event Handler. Consulte Crie rapidamente uma função

  • Uma conta de banco de dados na instância source do ApsaraDB for MongoDB com permissões de leitura nos bancos de dados source, admin e local. Consulte Manage the permissions of MongoDB database users

    Nota

    Se você usar ChangeStream como método de sincronização incremental, a conta do banco de dados source requer permissões de leitura de Change Streams em toda a instância (como readAnyDatabase). Se a source for uma instância do ApsaraDB for MongoDB com uma conta personalizada, você também deve conceder à conta permissão de leitura no banco de dados admin. Para obter detalhes, consulte Permissions of the root account specified during instance creation.

Crie uma tarefa de sincronização

Etapa 1: Acesse a página Data Synchronization

Acesse a página Data Synchronization usando um dos consoles:

Console do DTS

  1. Faça logon no console do DTS.console do DTS

  2. No painel de navegação à esquerda, clique em Data Synchronization.

  3. No canto superior esquerdo, selecione a região de execução da tarefa de sincronização.

Console do DMS

O caminho exato de navegação depende do layout do seu console do DMS. Consulte Modo simples e Personalizar o layout e o estilo do console do DMS.

  1. Faça logon no console do DMS.console do DMS

  2. Na barra de navegação superior, mova o ponteiro sobre Data + AI e escolha DTS (DTS) > Data Synchronization.

  3. No menu suspenso à direita de Data Synchronization Tasks, selecione a região de destino.

Etapa 2: Configure os bancos de dados source e de destino

Clique em Create Task e configure os seguintes parâmetros:

Seção Parâmetro Descrição
N/D Task Name O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação da tarefa. A exclusividade não é obrigatória
Source Database Select Existing Connection Selecione uma instância de banco de dados registrada para preencher automaticamente os parâmetros abaixo ou configure-os manualmente
Database Type Selecione MongoDB
Access Method Selecione Alibaba Cloud Instance
Instance Region Região da instância source do MongoDB
Replicate Data Across Alibaba Cloud Accounts Selecione No para sincronização na mesma conta
Architecture Selecione Sharded Cluster
Migration Method Como o DTS captura dados incrementais. Opções: Oplog (recomendado) ou ChangeStream (veja os detalhes abaixo)
Instance ID ID da instância source do MongoDB
Authentication Database Banco de dados que armazena as credenciais da conta. Padrão: admin
Database Account Conta do banco de dados source com as permissões de leitura necessárias
Database Password Senha da conta do banco de dados
Shard account Conta para acessar shards na instância source
Shard password Senha da conta de shard
Encryption Modo de criptografia da conexão. Opções: Non-encrypted, SSL-encrypted ou Mongo Atlas SSL. As opções disponíveis dependem das seleções de Access Method e Architecture. SSL-encrypted não está disponível quando Architecture é Sharded Cluster e Migration Method é Oplog
Destination Database Select Existing Connection Selecione uma instância registrada do Function Compute para preencher automaticamente os parâmetros abaixo ou configure-os manualmente
Database Type Selecione Function Compute
Access Method Selecione Alibaba Cloud Instance
Instance Region Corresponde à região da source. Não é possível alterá-la
Service O service do Function Compute que contém a função de destino
Function A função que recebe os dados sincronizados
Service Version and Alias Versão ou alias do service. Opções: Default Version (fixo em LATEST), Specified Version (requer Service Version) ou Specified Alias (requer Service Alias). Consulte Terms

Escolha um método de migração:

Método

Quando usar

Oplog (recomendado)

O oplog está ativado na source (padrão para MongoDB autogerenciado e ApsaraDB for MongoDB). Fornece menor latência de sincronização devido à extração mais rápida de logs

ChangeStream

O oplog está desativado ou você usa um cluster não elástico do Amazon DocumentDB (change streams obrigatórios). Exige MongoDB 4.0 ou posterior. O DTS não suporta sincronização bidirecional

Quando Architecture é Sharded Cluster e Migration Method é ChangeStream , os parâmetros Shard account e Shard password não são necessários.

Etapa 3: Testar a conectividade

Clique em Test Connectivity and Proceed.

Certifique-se de adicionar os blocos CIDR dos servidores DTS ao grupo de segurança ou à lista de permissões da source e do destino. Consulte Adicionar os blocos CIDR dos servidores DTS . Se a source ou o destino usar um método de acesso autogerenciado, clique primeiro em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .

Etapa 4: Selecione objetos para sincronizar

Na etapa Configure Objects, configure os seguintes parâmetros:

Parâmetro

Descrição

Synchronization Types

Fixo como Incremental Data Synchronization. Não é possível alterá-lo

Data Format

Fixo como Canal Json. Para descrições dos campos, consulte a Canal Json section dos formatos de dados de um tópico de cluster Kafka

Source Objects

Selecione os bancos de dados ou coleções para sincronizar e clique em 向右 para movê-los para Selected Objects

Selected Objects

Revise os objetos selecionados. Clique em zuoyi para remover objetos. Clique com o botão direito em um objeto e configure a granularidade da sincronização (nível de banco de dados ou coleção)

Etapa 5: Configure configurações avançadas

Clique em Next: Advanced Settings e configure:

Parâmetro

Descrição

Dedicated Cluster for Task Scheduling

Por padrão, o DTS agenda a tarefa para o cluster compartilhado. Adquira um cluster dedicado para maior estabilidade. Consulte O que é um cluster dedicado do DTS

Retry Time for Failed Connections

Tempo durante o qual o DTS tenta reconectar quando a source ou o destino está inacessível. Intervalo: 10 a 1440 minutos. Padrão: 720. Defina como pelo menos 30 minutos. Se várias tarefas compartilharem a mesma source ou destino, o menor tempo de nova tentativa terá precedência

Retry Time for Other Issues

Tempo durante o qual o DTS repete operações DDL ou DML com falha. Intervalo: 1 a 1440 minutos. Padrão: 10. Defina como pelo menos 10 minutos. Deve ser menor que Retry Time for Failed Connections

Obtain the entire document after it is updated

Apenas para ChangeStream. Yes: envia o documento completo após uma atualização. No: envia apenas os campos alterados

Enable Throttling for Incremental Data Synchronization

Limite o throughput de sincronização para reduzir a carga no destino. Configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s)

Environment Tag

Tag para identificar o ambiente da instância do DTS. Opcional

Configure ETL

Ative o recurso ETL para transformar dados em trânsito. Consulte O que é ETL? e Configure ETL em uma tarefa de migração ou sincronização de dados

Monitoring and Alerting

Envie alertas quando a tarefa falhar ou a latência de sincronização exceder um limiar. Consulte Configure monitoramento e alertas ao criar uma tarefa do DTS

Etapa 6: Execute a pré-verificação

Clique em Next: Save Task Settings and Precheck.

visualize os parâmetros da API para esta configuração de tarefa passando o mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .

O DTS executa uma pré-verificação antes de iniciar a tarefa de sincronização. A tarefa só é iniciada após a aprovação nessa pré-verificação.

  • Se um item falhar: clique em View Details ao lado do item com falha, corrija o problema relatado e clique em Precheck Again.

  • Se um alerta for acionado:

    • Se não for possível ignorar o alerta: clique em View Details, corrija o problema e execute a pré-verificação novamente.

    • Se for possível ignorar o alerta: clique em Confirm Alert Details, clique em Ignore na caixa de diálogo, confirme com OK e clique em Precheck Again. Ignorar alertas pode resultar em inconsistência de dados.

Etapa 7: Comprar uma instância

  1. Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.

  2. Na página buy, configure:

Seção Parâmetro Descrição
New Instance Class Billing Method Assinatura ou Pagamento conforme o uso
Resource Group Settings Grupo de recursos para a instância. Padrão: default resource group. Consulte O que é o Resource Management?
Instance Class Determina a velocidade de sincronização. Consulte Classes de instância de instâncias de sincronização de dados
Subscription Duration Disponível apenas para faturamento por Assinatura. Opções: 1 a 9 meses, ou 1, 2, 3 ou 5 anos
  1. Leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.

  2. Clique em Buy and Start e clique em OK na caixa de diálogo de confirmação.

Acompanhe o progresso da tarefa na lista de tarefas.

Próximos passos

  • Escreva o manipulador de eventos do Function Compute para processar o payload Canal JSON. Use o campo isDdl para ramificar a lógica entre DDL e DML e desserialize a string doc em cada elemento data para acessar os campos do documento.

  • Para reduzir a carga de documentos com campos grandes na sua função, configure filtros ETL antes que os dados cheguem à função. Consulte Configure ETL em uma tarefa de migração ou sincronização de dados.

  • Para monitorar a integridade da sincronização, configure alertas em Advanced Settings ou após a criação da tarefa. Consulte Configure monitoramento e alertas ao criar uma tarefa do DTS.

  • Se uma tarefa falhar, o suporte técnico do DTS tentará restaurá-la em até 8 horas. Durante a restauração, o DTS pode reiniciar a tarefa e ajustar os parâmetros da tarefa (não os parâmetros do banco de dados). Para obter uma lista de parâmetros modificáveis, consulte Modifique parâmetros da instância.