Todos los productos
Search
Centro de documentos

Data Transmission Service:Sincronización de datos desde una instancia de clúster fragmentado de ApsaraDB for MongoDB hacia una función de Function Compute

Última actualización: Sep 30, 2026

Data Transmission Service (DTS) captura los cambios incrementales de un clúster fragmentado de ApsaraDB for MongoDB y entrega cada evento de cambio a una función de Function Compute en formato Canal JSON. Escriba el código de su función para procesar, transformar o reenviar los eventos a sistemas posteriores.

Datos que recibe la función

Cada invocación pasa un objeto con un arreglo Records. Cada elemento del arreglo representa un evento de cambio:

Campo

Tipo

Descripción

isDdl

Boolean

True para operaciones DDL; False para operaciones DML

type

String

DML: INSERT, UPDATE o DELETE. DDL: DDL

database

String

Nombre de la base de datos MongoDB

table

String

Nombre de la colección

pkNames

String

Nombre de la clave primaria. Siempre es _id para MongoDB

es

Long

Marca de tiempo UNIX de 13 dígitos (ms): momento en que se ejecutó la operación en el origen

ts

Long

Marca de tiempo UNIX de 13 dígitos (ms): momento en que DTS comenzó a escribir en el destino

data

Object Array

Arreglo de un solo elemento. El elemento tiene una clave doc cuyo valor es una cadena JSON que representa el documento. Deserialice el valor para leer el registro

old

Object Array

Mismo formato que data. Presente solo cuando type es UPDATE; contiene el estado del documento antes de la actualización

id

Int

Número de serie de la operación

La función recibe dos categorías de operaciones:

  • DDL: cambios de esquema, como CreateIndex, CreateCollection, DropIndex y DropCollection

  • DML: cambios de datos, como INSERT, UPDATE y DELETE

Ejemplos de cargas útiles

Crear una colección (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
  }]
}

Eliminar una colección (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
  }]
}

Crear un í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
  }]
}

Eliminar un í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
  }]
}

Insertar 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
    }
  ]
}

Actualizar un 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
  }]
}
En las operaciones UPDATE, solo el comando $set se ejecuta de forma síncrona cuando DTS sincroniza datos incrementales.

Eliminar un 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
  }]
}

Límites

Revise estas restricciones antes de crear la tarea de sincronización.

Restricciones de alcance:

  • Solo se admite la sincronización incremental de datos. No se admite la sincronización completa de datos.

  • No se admite la sincronización entre regiones.

  • DTS no puede sincronizar datos de las bases de datos admin, config ni local.

  • No se admite la asignación de objetos.

  • No se conserva la información de transacciones. Las transacciones se convierten en registros individuales en el destino.

Restricciones de la base de datos de origen:

  • El origen debe usar la arquitectura de clúster fragmentado, con un máximo de 10 nodos Mongos.

  • El origen no puede ser un clúster de Azure Cosmos DB for MongoDB ni un clúster elástico de Amazon DocumentDB.

  • Las colecciones que se van a sincronizar deben tener restricciones PRIMARY KEY o UNIQUE, y todos los campos deben ser únicos. De lo contrario, la base de datos de destino podría contener registros de datos duplicados.

  • Un solo documento no puede superar los 16 MB. Los documentos que excedan este tamaño no se pueden escribir en la función de destino y generan un error. Si es necesario, utilice la función de extracción, transformación y carga (ETL) para filtrar campos grandes.

  • Se pueden sincronizar hasta 1,000 colecciones por tarea. Para más colecciones, cree varias tareas o sincronice a nivel de base de datos.

  • No se puede escalar la instancia de origen mientras se ejecuta una tarea de sincronización.

  • DTS no puede conectarse a una base de datos MongoDB mediante un endpoint SRV.

  • Si el balanceador de la base de datos de origen está activo, la tarea podría experimentar retrasos.

  • Si la base de datos de origen es una base de datos MongoDB autogestionada con arquitectura de clúster fragmentado, establezca el parámetro Access Method en Express Connect, VPN Gateway, or Smart Access Gateway o Cloud Enterprise Network (CEN).

Restricciones de escritura:

  • En las operaciones INSERT, los datos que se insertan deben contener claves de fragmentación.

  • En las operaciones UPDATE, no se pueden modificar las claves de fragmentación.

  • Configure solo una tarea de DTS por función de destino. Varias tareas que escriban en la misma función pueden causar errores de datos.

Requisitos de oplog y change stream:

  • El oplog debe estar habilitado y conservar al menos 7 días de datos de registro, O BIEN los change streams deben estar habilitados para cubrir al menos los últimos 7 días de cambios. Si no se cumple ninguna de estas condiciones, DTS podría no capturar los cambios del origen, lo que puede provocar inconsistencia o pérdida de datos no cubierta por el acuerdo de nivel de servicio (SLA) de DTS.

Restricciones de change stream (si aplica):

  • Los change streams requieren MongoDB 4.0 o posterior.

  • No se admite la sincronización bidireccional cuando se usan change streams.

  • Para clústeres no elásticos de Amazon DocumentDB, use change streams: establezca Migration Method en ChangeStream y Architecture en Sharded Cluster.

Nuevas bases de datos:

  • DTS no sincroniza datos incrementales de bases de datos creadas después de que inicia la tarea de sincronización.

Operaciones compatibles

Las operaciones capturadas dependen del método de migración.

Con oplog (recomendado):

  • CREATE COLLECTION, CREATE INDEX

  • DROP DATABASE, DROP COLLECTION, DROP INDEX

  • RENAME COLLECTION

  • INSERT, UPDATE y DELETE a nivel de documento

Con change streams:

  • DROP DATABASE, DROP COLLECTION

  • RENAME COLLECTION

  • INSERT, UPDATE y DELETE a nivel de documento

Facturación

La sincronización incremental de datos tiene costo. Para obtener detalles sobre precios, consulte Billing overview.

Método de facturación

Descripción

Subscription

Pago anticipado por 1–9 meses, o 1, 2, 3 o 5 años. Más rentable para uso a largo plazo

Pay-as-you-go

Facturación por hora. Libere la instancia cuando ya no la necesite para detener los cargos

DTS cobra por la instancia durante los períodos de reintento de conexión.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Una instancia de clúster fragmentado de ApsaraDB for MongoDB en ejecución. Consulte Create a sharded cluster instance

  • Un servicio y una función de Function Compute, con Handler Type establecido en Event Handler. Consulte Crear rápidamente una función

  • Una cuenta de base de datos en la instancia de ApsaraDB for MongoDB de origen con permisos de lectura en las bases de datos de origen, admin y local. Consulte Manage the permissions of MongoDB database users

    Nota

    Si utiliza ChangeStream como método de sincronización incremental, la cuenta de la base de datos de origen requiere permisos de lectura de Change Streams a nivel de instancia (como readAnyDatabase). Si el origen es una instancia de ApsaraDB for MongoDB con una cuenta personalizada, también debe otorgar a la cuenta permiso de lectura en la base de datos admin. Para obtener más información, consulte Permissions of the root account specified during instance creation.

Crear una tarea de sincronización

Paso 1: Abrir la página Data Synchronization

Vaya a la página Data Synchronization mediante cualquiera de las siguientes consolas:

Consola de DTS

  1. Inicie sesión en la consola de DTS.DTS console

  2. En el panel de navegación izquierdo, haga clic en Data Synchronization.

  3. En la esquina superior izquierda, seleccione la región donde se ejecutará la tarea de sincronización.

Consola de DMS

La ruta de navegación exacta depende del diseño de su consola de DMS. Consulte Modo simple y Personalizar el diseño y estilo de la consola de DMS.

  1. Inicie sesión en la consola de DMS.DMS console

  2. En la barra de navegación superior, pase el puntero sobre Data + AI y elija DTS (DTS) > Data Synchronization.

  3. En el menú desplegable a la derecha de Data Synchronization Tasks, seleccione la región de destino.

Paso 2: Configurar las bases de datos de origen y destino

Haga clic en Create Task y configure los siguientes parámetros:

Sección Parámetro Descripción
N/A Task Name DTS genera automáticamente un nombre. Especifique un nombre descriptivo para identificar fácilmente la tarea. No es necesario que sea único
Source Database Select Existing Connection Seleccione una instancia de base de datos registrada para completar automáticamente los parámetros siguientes o configúrelos manualmente
Database Type Seleccione MongoDB
Access Method Seleccione Alibaba Cloud Instance
Instance Region Región de la instancia de MongoDB de origen
Replicate Data Across Alibaba Cloud Accounts Seleccione No para sincronización dentro de la misma cuenta
Architecture Seleccione Sharded Cluster
Migration Method Forma en que DTS captura los datos incrementales. Opciones: Oplog (recomendado) o ChangeStream (consulte los detalles a continuación)
Instance ID ID de la instancia de MongoDB de origen
Authentication Database Base de datos que almacena las credenciales de la cuenta. Valor predeterminado: admin
Database Account Cuenta de la base de datos de origen con los permisos de lectura necesarios
Database Password Contraseña de la cuenta de la base de datos
Shard account Cuenta para acceder a los shards en la instancia de origen
Shard password Contraseña de la cuenta del shard
Encryption Modo de cifrado de la conexión. Opciones: Non-encrypted, SSL-encrypted o Mongo Atlas SSL. Las opciones disponibles dependen de las selecciones de Access Method y Architecture. SSL-encrypted no está disponible cuando Architecture es Sharded Cluster y Migration Method es Oplog
Destination Database Select Existing Connection Seleccione una instancia de Function Compute registrada para completar automáticamente los parámetros siguientes o configúrelos manualmente
Database Type Seleccione Function Compute
Access Method Seleccione Alibaba Cloud Instance
Instance Region Coincide con la región de origen. No se puede cambiar
Service Servicio de Function Compute que contiene la función de destino
Function Función que recibe los datos sincronizados
Service Version and Alias Versión o alias del servicio. Opciones: Default Version (fijo en LATEST), Specified Version (requiere Service Version) o Specified Alias (requiere Service Alias). Consulte Términos

Elija un método de migración:

Método

Cuándo utilizarlo

Oplog (recomendado)

El oplog está habilitado en el origen (valor predeterminado tanto para MongoDB autogestionado como para ApsaraDB for MongoDB). Proporciona menor latencia de sincronización gracias a una extracción de registros más rápida

ChangeStream

El oplog está deshabilitado o se usa un clúster no elástico de Amazon DocumentDB (se requieren change streams). Requiere MongoDB 4.0 o posterior. No se admite la sincronización bidireccional

Cuando Architecture es Sharded Cluster y Migration Method es ChangeStream , los parámetros Shard account y Shard password no son obligatorios.

Paso 3: Probar la conectividad

Haga clic en Test Connectivity and Proceed.

Asegúrese de que los bloques CIDR del servidor de DTS estén agregados al security group o a la lista de permitidos tanto del origen como del destino. Consulte Agregar los bloques CIDR de los servidores de DTS . Si el origen o el destino utiliza un método de acceso autogestionado, haga clic primero en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers .

Paso 4: Seleccionar los objetos a sincronizar

En el paso Configure Objects, configure lo siguiente:

Parámetro

Descripción

Synchronization Types

Fijo en Incremental Data Synchronization. No se puede cambiar

Data Format

Fijo en Canal Json. Para descripciones de los campos, consulte Canal Json section del tema Formatos de datos de un clúster de Kafka

Source Objects

Seleccione las bases de datos o colecciones a sincronizar y luego haga clic en 向右 para moverlas a Selected Objects

Selected Objects

Revise los objetos seleccionados. Haga clic en zuoyi para quitar objetos. Haga clic derecho en un objeto para configurar la granularidad de sincronización (nivel de base de datos o colección)

Paso 5: Configurar opciones avanzadas

Haga clic en Next: Advanced Settings y configure lo siguiente:

Parámetro

Descripción

Dedicated Cluster for Task Scheduling

De forma predeterminada, DTS programa la tarea en el clúster compartido. Adquiera un clúster dedicado para mayor estabilidad. Consulte ¿Qué es un clúster dedicado de DTS?

Retry Time for Failed Connections

Tiempo durante el cual DTS reintenta la conexión cuando el origen o el destino no son accesibles. Rango: 10–1440 minutos. Valor predeterminado: 720. Establezca un mínimo de 30 minutos. Si varias tareas comparten el mismo origen o destino, prevalece el tiempo de reintento más corto

Retry Time for Other Issues

Tiempo durante el cual DTS reintenta operaciones DDL o DML fallidas. Rango: 1–1440 minutos. Valor predeterminado: 10. Establezca un mínimo de 10 minutos. Debe ser menor que Retry Time for Failed Connections

Obtain the entire document after it is updated

Solo para ChangeStream. Yes: envía el documento completo después de una actualización. No: envía solo los campos modificados

Enable Throttling for Incremental Data Synchronization

Limita el throughput de sincronización para reducir la carga en el destino. Configure RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s)

Environment Tag

Etiqueta para identificar el entorno de la instancia de DTS. Opcional

Configure ETL

Habilite la función ETL para transformar datos en tránsito. Consulte ¿Qué es ETL? y Configurar ETL en una tarea de migración o sincronización de datos

Monitoring and Alerting

Envía alertas cuando la tarea falla o la latencia de sincronización supera un umbral. Consulte Configurar monitoreo y alertas al crear una tarea de DTS

Paso 6: Ejecutar la verificación previa

Haga clic en Next: Save Task Settings and Precheck.

Para previsualizar los parámetros de API de esta configuración de tarea, pase el cursor sobre Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters .

DTS ejecuta una verificación previa antes de iniciar la tarea de sincronización. La tarea comienza solo después de superar dicha verificación.

  • Si un elemento falla: haga clic en View Details junto al elemento con errores, corrija el problema reportado y luego haga clic en Precheck Again.

  • Si se activa una alerta:

    • Si la alerta no se puede ignorar: haga clic en View Details, corrija el problema y vuelva a ejecutar la verificación previa.

    • Si la alerta se puede ignorar: haga clic en Confirm Alert Details, haga clic en Ignore en el cuadro de diálogo, confirme con OK y luego haga clic en Precheck Again. Ignorar alertas puede provocar inconsistencia en los datos.

Paso 7: Adquirir una instancia

  1. Espere hasta que Success Rate alcance 100% y luego haga clic en Next: Purchase Instance.

  2. En la página buy, configure lo siguiente:

Sección Parámetro Descripción
New Instance Class Billing Method Subscription o Pay-as-you-go
Resource Group Settings Grupo de recursos para la instancia. Valor predeterminado: default resource group. Consulte ¿Qué es Resource Management?
Instance Class Determina la velocidad de sincronización. Consulte Clases de instancia de sincronización de datos
Subscription Duration Disponible solo para facturación Subscription. Opciones: 1–9 meses, o 1, 2, 3 o 5 años
  1. Lea y seleccione Data Transmission Service (Pay-as-you-go) Service Terms.

  2. Haga clic en Buy and Start y luego en OK en el cuadro de diálogo de confirmación.

Puede seguir el progreso de la tarea en la lista de tareas.

Pasos siguientes

  • Escriba su controlador de eventos de Function Compute para procesar la carga útil Canal JSON. Utilice el campo isDdl para bifurcar entre la lógica DDL y DML, y deserialice la cadena doc en cada elemento data para acceder a los campos del documento.

  • Para reducir la carga de documentos con campos grandes en su función, configure filtros ETL antes de que los datos lleguen a ella. Consulte Configurar ETL en una tarea de migración o sincronización de datos.

  • Para monitorear el estado de la sincronización, configure alertas en Advanced Settings o después de crear la tarea. Consulte Configurar monitoreo y alertas al crear una tarea de DTS.

  • Si una tarea falla, el soporte técnico de DTS intentará restaurarla en un plazo de 8 horas. Durante la restauración, la tarea podría reiniciarse y se podrían ajustar sus parámetros (no los de la base de datos). Para consultar la lista de parámetros que se pueden modificar, vea Modificar parámetros de instancia.