Todos los productos
Search
Centro de documentos

Data Transmission Service:Sincronización unidireccional para clústeres fragmentados

Última actualización: Oct 09, 2026

Data Transmission Service (DTS) le permite sincronizar datos desde un clúster fragmentado de MongoDB hacia un conjunto de réplicas o un clúster fragmentado. Este tema muestra cómo sincronizar datos entre instancias de ApsaraDB for MongoDB.

Requisitos previos

  • Cree una instancia de destino de ApsaraDB for MongoDB (conjunto de réplicas o clúster fragmentado). Para obtener más información, consulte Create a replica set instance o Create a sharded cluster instance.

    Importante
    • El espacio de almacenamiento de la instancia de destino de ApsaraDB for MongoDB debe ser como mínimo un 10 % mayor que el de la instancia de origen de ApsaraDB for MongoDB.

    • Para conocer las versiones compatibles, consulte Data synchronization scenarios.

  • Si la instancia de origen es un clúster fragmentado de ApsaraDB for MongoDB, solicite un endpoint para cada nodo shard y asegúrese de que todos los nodos shard usen la misma cuenta y contraseña. Para obtener más información, consulte Apply for a shard endpoint.

  • Si el destino es una instancia de clúster fragmentado, debe crear las bases de datos y colecciones que se van a fragmentar en la instancia de destino de ApsaraDB for MongoDB (clúster fragmentado), configurar la fragmentación de datos, habilitar el balanceador y ejecutar la prefragmentación según sus necesidades de negocio. Para obtener más información, consulte Configure sharding to maximize shard performance y How do I handle uneven data distribution in a sharded MongoDB cluster?.

    Nota
    • Configurar la fragmentación de datos evita que todos los datos se sincronicen en un solo shard, lo cual previene cuellos de botella de rendimiento. Habilitar el balanceador y ejecutar la prefragmentación ayuda a evitar el sesgo de datos.

    • Este tema presenta un ejemplo de configuración de una tarea de DTS antes de su compra. En este escenario, no necesita especificar el número de shards en la instancia de origen de ApsaraDB for MongoDB (clúster fragmentado).

      Si compra una tarea de DTS antes de configurarla, debe especificar el número correcto de shards al momento de la compra.

Precauciones

Tipo

Descripción

Límites de las bases de datos de origen y de destino

  • Requisito de ancho de banda: el servidor donde reside la base de datos de origen debe contar con suficiente ancho de banda de salida. De lo contrario, la velocidad de sincronización podría verse afectada.

  • Las colecciones que se van a sincronizar deben tener una clave primaria o una restricción UNIQUE, y los valores de los campos deben ser únicos. De lo contrario, podrían aparecer datos duplicados en la base de datos de destino.

  • Los nombres de campo de los datos no deben contener el carácter "." (punto); de lo contrario, podrían producirse inconsistencias en los datos.

  • El campo _id de las colecciones que se van a sincronizar debe tener valores únicos. De lo contrario, podría producirse una inconsistencia de datos.

  • Si sincroniza a nivel de colección y necesita editar objetos (por ejemplo, cambiar el nombre de colecciones), una sola tarea de sincronización admite hasta 1,000 colecciones. Si supera este límite, la tarea fallará con un error después de enviarla. Para resolverlo, divida las colecciones en lotes y configure varias tareas, o bien configure una tarea de sincronización de base de datos completa.

  • Un documento individual en la base de datos de origen no puede superar los 16 MB. De lo contrario, la tarea fallará.

  • La base de datos de origen no puede ser Azure Cosmos DB for MongoDB ni Amazon DocumentDB (clúster elástico).

  • La base de datos de origen debe tener Oplog habilitado y conservarlo durante como mínimo siete días. También puede habilitar Change Streams y asegurarse de que DTS pueda suscribirse a los cambios de datos de los últimos siete días mediante Change Streams. De lo contrario, DTS podría no capturar los cambios de datos y provocar un error en la tarea. En casos extremos, esto puede causar inconsistencia o pérdida de datos. Estos problemas no están cubiertos por el acuerdo de nivel de servicio (SLA) de DTS.

    Importante
    • Se recomienda usar Oplog para capturar los cambios de datos.

    • Solo MongoDB 4.0 y versiones posteriores admiten Change Streams. Change Streams no es compatible con la sincronización bidireccional.

    • Si la base de datos de origen es Amazon DocumentDB (clúster no elástico), habilite Change Streams manualmente. Al configurar la tarea, establezca Migration Method en ChangeStream y Architecture en Sharded Cluster.

  • Si DTS usa Oplog para la sincronización incremental, no se admite escalar el número de shards en un clúster fragmentado de MongoDB de origen. De lo contrario, las tareas de DTS podrían fallar y causar inconsistencia de datos.

  • Si la instancia de origen es un clúster fragmentado de MongoDB autogestionado:

    • Access Method solo admite Express Connect, VPN Gateway, or Smart Access Gateway y Cloud Enterprise Network (CEN).

    • Si la versión de MongoDB es 8.0 o posterior y Migration Method es Oplog, asegúrese de que la cuenta Shard utilizada por la tarea de sincronización tenga el permiso directShardOperations. Agregue este permiso con el comando db.adminCommand({ grantRolesToUser: "username", roles: [{ role: "directShardOperations", db: "admin"}]}).

      Nota

      Reemplace username en el comando por la cuenta Shard que utiliza la tarea de sincronización.

    • Si Migration Method es Oplog y la tarea incluye sincronización completa de datos, asegúrese de que la cuenta Mongos del clúster fragmentado de MongoDB de origen tenga permiso para ejecutar el comando db.runCommand({"balancerStatus":1}). DTS comprueba si el balanceador está deshabilitado mediante este comando durante la verificación previa.

  • El número de nodos Mongos en la instancia de clúster fragmentado de MongoDB de origen no puede superar los 10.

  • Si las colecciones que se van a sincronizar contienen índices TTL, podría producirse inconsistencia o latencia en los datos.

  • Asegúrese de que no existan documentos huérfanos en las instancias de origen y de destino. De lo contrario, podría producirse inconsistencia de datos o un error en la tarea. Para obtener más información, consulte orphaned documents y How to clean orphaned documents in MongoDB (sharded cluster architecture).

  • Límites de operación en la base de datos de origen:

    • Durante la sincronización de esquemas y la sincronización completa de datos, no modifique el esquema de las bases de datos ni de las colecciones (incluidas las actualizaciones de datos de tipo arreglo). De lo contrario, la tarea de sincronización podría fallar o generar inconsistencia de datos entre las bases de datos de origen y de destino.

    • Si solo ejecuta la sincronización completa de datos, no escriba datos nuevos en la instancia de origen. De lo contrario, podría producirse inconsistencia de datos entre las bases de datos de origen y de destino.

    • Mientras la instancia de sincronización esté en ejecución, no ejecute comandos que cambien la distribución de datos en los objetos que se van a sincronizar en la base de datos de origen (por ejemplo, shardCollection, reshardCollection, unshardCollection, moveCollection o movePrimary). De lo contrario, podría producirse inconsistencia de datos.

  • Si el balanceador de la base de datos de origen equilibra datos, podría producirse latencia.

  • DTS no admite la conexión a bases de datos de MongoDB mediante direcciones SRV.

  • Si la base de datos de origen es MongoDB 5.0 o posterior y la versión de la base de datos de destino es anterior a la 5.0, no podrá sincronizar colecciones capped collection. Si intenta sincronizarlas, la tarea fallará o se producirá inconsistencia de datos entre las bases de datos de origen y de destino. Esto se debe a que, a partir de MongoDB 5.0, el comportamiento de las colecciones capped collection cambió para permitir operaciones como la eliminación explícita y el aumento del tamaño de los documentos durante las actualizaciones, y las versiones anteriores del kernel de la base de datos no admiten estas nuevas funciones.

Otros límites

  • Antes de iniciar la tarea, agregue a los datos de origen la clave de fragmentación que utilizará el destino. Después de iniciar la tarea, las instrucciones INSERT de los datos que se van a sincronizar deben incluir la clave de fragmentación. Las instrucciones UPDATE no pueden modificar la clave de fragmentación.

  • Se recomienda usar la misma versión de MongoDB en las bases de datos de origen y de destino. También puede usar una versión superior en el destino para garantizar la compatibilidad. Sincronizar de una versión superior a una inferior podría causar problemas de compatibilidad.

  • DTS no admite la sincronización de datos de las bases de datos admin, config y local.

  • La información de transacciones no se conserva. Las transacciones de la base de datos de origen se convierten en registros individuales en la base de datos de destino.

  • Cuando DTS escribe datos en la colección de destino y se produce un conflicto de clave primaria o clave única, DTS omite la instrucción de escritura y conserva los datos existentes en la colección de destino.

  • Si la versión de MongoDB de origen es anterior a la 3.6 y la versión de destino es 3.6 o posterior, las diferencias en los planes de ejecución podrían causar un orden de campos inconsistente en los datos sincronizados. La relación entre campos y valores permanece sin cambios. Si su aplicación utiliza consultas de coincidencia de texto sobre estructuras anidadas, evalúe el impacto de esta inconsistencia en el orden de los campos.

  • Evalúe el rendimiento de las bases de datos de origen y de destino antes de la sincronización. Ejecute la sincronización fuera de las horas pico. De lo contrario, la inicialización completa de datos consumirá recursos de lectura y escritura, lo que aumentará la carga de la base de datos.

  • La inicialización completa ejecuta operaciones INSERT de forma concurrente. Esto genera fragmentación en la colección de la base de datos de destino. Después de la inicialización completa, el espacio de la colección en la instancia de destino será mayor que en la instancia de origen.

  • Si la colección de destino tiene un índice único o su propiedad capped está establecida en true, no se admite la reproducción concurrente durante la sincronización incremental. Solo se permiten escrituras de un solo hilo, lo cual podría aumentar la latencia de la tarea.

  • Dado que DTS escribe datos de forma concurrente, el espacio de almacenamiento utilizado por el destino es entre un 5 % y un 10 % mayor que el del origen.

  • Para obtener el recuento de documentos en la instancia de MongoDB de destino, use la sintaxis db.$table_name.aggregate([{ $count:"myCount"}]).

  • Asegúrese de que la instancia de MongoDB de destino no tenga la misma clave primaria (de forma predeterminada, _id) que la de origen. De lo contrario, podría producirse pérdida de datos. Si el destino tiene la misma clave primaria, elimine los datos relacionados en el destino sin afectar su aplicación (elimine los documentos con el mismo valor de _id en el destino).

  • Deshabilite el balanceador en la base de datos de MongoDB de origen durante la sincronización completa. Manténgalo deshabilitado hasta que todas las subtareas alcancen la fase incremental. De lo contrario, podría producirse inconsistencia de datos. Para obtener más información sobre cómo gestionar el balanceador, consulte Manage the MongoDB Balancer.

  • Si no necesita la función de sincronización de esquemas que proporciona DTS (por ejemplo, si la partición de datos ya está configurada en el destino), no seleccione Configure Objects y luego seleccione Synchronization Types y Schema Synchronization. De lo contrario, los conflictos de fragmentación pueden provocar inconsistencia de datos o errores en la tarea.

  • Si cambia el tráfico a la base de datos de MongoDB de destino, asegúrese de que el comportamiento de su aplicación cumpla con los requisitos de MongoDB para las colecciones fragmentadas.

  • DTS no admite la sincronización de colecciones de series temporales introducidas en MongoDB 5.0 y versiones posteriores.

  • Si una tarea falla, el personal de soporte de DTS intentará restaurarla en un plazo de ocho horas. Durante la restauración, podrían reiniciar la tarea o ajustar sus parámetros.

    Nota

    Solo se modifican los parámetros de la tarea de DTS, no los parámetros de la base de datos. Los parámetros que se pueden ajustar incluyen los que se enumeran en Modify instance parameters.

  • No se admite la sincronización de datos que contengan codificación distinta de UTF-8, lo cual podría provocar inconsistencia de datos.

Facturación

Tipo de sincronización

Precio

Sincronización de esquemas y sincronización completa de datos

Sin costo.

Sincronización incremental de datos

Con costo. Para obtener más información, consulte Billing overview.

Topologías de sincronización unidireccional

DTS solo admite la sincronización unidireccional de datos entre dos instancias de clúster fragmentado de ApsaraDB for MongoDB. No se admite la sincronización entre varias instancias de ApsaraDB for MongoDB.

Tipos de sincronización

Tipo

Descripción

Sincronización de esquemas

Sincroniza el esquema de los objetos de sincronización desde la instancia de origen de ApsaraDB for MongoDB hacia la instancia de destino de ApsaraDB for MongoDB.

Sincronización completa de datos

Sincroniza todos los datos existentes de los objetos de sincronización desde la instancia de origen de ApsaraDB for MongoDB hacia la instancia de destino de ApsaraDB for MongoDB.

Nota

La sincronización completa de datos es compatible con bases de datos y colecciones.

Sincronización incremental de datos

Con base en la sincronización completa de datos, las actualizaciones incrementales de la instancia de origen de ApsaraDB for MongoDB se sincronizan hacia la instancia de destino de ApsaraDB for MongoDB.

Oplog

La sincronización incremental de datos no replica las bases de datos creadas después de que se inicia la tarea. Se replican los siguientes cambios:

  • CREATE COLLECTION y CREATE INDEX

  • DROP DATABASE, DROP COLLECTION y DROP INDEX

  • RENAME COLLECTION

    Nota

    La operación RENAME COLLECTION no se replica si la opción dropTarget está establecida en true.

  • Inserción, actualización y eliminación de documentos dentro de una colección.

    Nota

    Para las actualizaciones de documentos, solo se replican las operaciones que usan el comando $set.

Change stream

Se replican los siguientes cambios:

  • DROP DATABASE y DROP COLLECTION

  • RENAME COLLECTION

    Nota

    La operación RENAME COLLECTION no se replica si la opción dropTarget está establecida en true.

  • Inserción, actualización y eliminación de documentos dentro de una colección.

    Nota

    Para las actualizaciones de documentos, solo se replican las operaciones que usan el comando $set.

Limpieza de documentos huérfanos

Elimine los documentos huérfanos de la base de datos de MongoDB de origen antes de migrar los datos.

Importante

Si no elimina los documentos huérfanos, el rendimiento de la migración se verá afectado y podrían producirse errores de migración debido a conflictos de _id.

ApsaraDB for MongoDB

Nota

Ejecutar el script de limpieza en una instancia con una versión principal anterior a MongoDB 4.2 o una versión secundaria anterior a 4.0.6 genera un error. Para consultar la versión actual de su instancia, vea MongoDB minor versions. Para actualizar la versión principal o secundaria, consulte Upgrade the major version of a database y Upgrade the minor version of a database.

Use el comando cleanupOrphaned para eliminar los documentos huérfanos. El procedimiento varía ligeramente entre MongoDB 4.4 y versiones posteriores, y MongoDB 4.2 y versiones anteriores.

MongoDB 4.4 y versiones posteriores

  1. En un servidor que pueda conectarse a su instancia de clúster fragmentado, cree un script de JavaScript (JS) llamado cleanupOrphaned.js.

    Nota

    Este script elimina los documentos huérfanos de todas las colecciones en varias bases de datos y en varios shards. Si necesita eliminar los documentos huérfanos de una colección específica, puede modificar el script de JS.

    // List of shard names
    var shardNames = ["shardName1", "shardName2"];
    // List of databases
    var databasesToProcess = ["database1", "database2", "database3"];
    shardNames.forEach(function(shardName) {
        // Iterate over the specified list of databases
        databasesToProcess.forEach(function(dbName) {
            var dbInstance = db.getSiblingDB(dbName);
            // Get the names of all collections in the database instance
            var collectionNames = dbInstance.getCollectionNames();
            // Iterate over each collection
            collectionNames.forEach(function(collectionName) {
                // The full collection name
                var fullCollectionName = dbName + "." + collectionName;
                // Build the cleanupOrphaned command
                var command = {
                    runCommandOnShard: shardName,
                    command: { cleanupOrphaned: fullCollectionName }
                };
                // Execute the command
                var result = db.adminCommand(command); 
                if (result.ok) {
                    print("Cleaned up orphaned documents for collection " + fullCollectionName + " on shard " + shardName);
                    printjson(result);
                } else {
                    print("Failed to clean up orphaned documents for collection " + fullCollectionName + " on shard " + shardName);
                }
            });
        });
    });

    En el script, modifique los valores de los parámetros shardNames y databasesToProcess:

    • shardNames: un arreglo con los ID de los shards de los cuales se van a eliminar los documentos huérfanos. Puede obtener los ID de los shards en la lista de shards de la página de información básica de la instancia. Por ejemplo, d-bp15a3796d3a****.

    • databasesToProcess: un arreglo con los nombres de las bases de datos de las cuales se van a eliminar los documentos huérfanos.

  2. En el directorio donde se encuentra el script cleanupOrphaned.js, ejecute el siguiente comando para eliminar los documentos huérfanos.

    mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

    Parámetro

    Descripción

    <Mongoshost>

    La dirección de conexión del nodo mongos de la instancia de clúster fragmentado. Por ejemplo, s-bp14423a2a51****.mongodb.rds.aliyuncs.com.

    <Primaryport>

    El número de puerto del nodo mongos de la instancia de clúster fragmentado. El valor predeterminado es 3717.

    <database>

    El nombre de la base de datos de autenticación. Es la base de datos a la que pertenece la cuenta de la base de datos.

    <username>

    La cuenta de la base de datos.

    <password>

    La contraseña de la cuenta de la base de datos.

    output.txt

    El archivo de salida para los resultados de la ejecución.

MongoDB 4.2 y versiones anteriores

  1. En un servidor que pueda conectarse a su instancia de clúster fragmentado, cree un script de JS llamado cleanupOrphaned.js.

    Nota

    Este script elimina los documentos huérfanos de una colección específica en una base de datos específica en varios shards. Para eliminar los documentos huérfanos de varias colecciones, puede modificar el parámetro fullCollectionName y ejecutar el script varias veces, o bien modificar el script para iterar por las colecciones.

    function cleanupOrphanedOnShard(shardName, fullCollectionName) {
        var nextKey = { };
        var result;
        while ( nextKey != null ) {
            var command = {
                runCommandOnShard: shardName,
                command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey }
            };
            result = db.adminCommand(command);
            printjson(result);
            if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) {
                print("Unable to complete at this time: failure or timeout.")
                break
            }
            nextKey = result.results[shardName].stoppedAtKey;
        }
        print("cleanupOrphaned done for coll: " + fullCollectionName + " on shard: " + shardName)
    }
    var shardNames = ["shardName1", "shardName2", "shardName3"]
    var fullCollectionName = "database.collection"
    shardNames.forEach(function(shardName) {
        cleanupOrphanedOnShard(shardName, fullCollectionName);
    });

    En el script, modifique los valores de los parámetros shardNames y fullCollectionName:

    • shardNames: un arreglo con los ID de los shards de los cuales se van a eliminar los documentos huérfanos. Puede obtener los ID de los shards en la lista de shards de la página de información básica de la instancia. Por ejemplo, d-bp15a3796d3a****.

    • fullCollectionName: el nombre de la colección de la cual se van a eliminar los documentos huérfanos, con el formato database.collection.

  2. En el directorio donde se encuentra el script cleanupOrphaned.js, ejecute el siguiente comando para eliminar los documentos huérfanos.

    mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

    Parámetro

    Descripción

    <Mongoshost>

    La dirección de conexión del nodo mongos de la instancia de clúster fragmentado. Por ejemplo, s-bp14423a2a51****.mongodb.rds.aliyuncs.com.

    <Primaryport>

    El número de puerto del nodo mongos de la instancia de clúster fragmentado. El valor predeterminado es 3717.

    <database>

    El nombre de la base de datos de autenticación. Es la base de datos a la que pertenece la cuenta de la base de datos.

    <username>

    La cuenta de la base de datos.

    <password>

    La contraseña de la cuenta de la base de datos.

    output.txt

    El archivo de salida para los resultados de la ejecución.

MongoDB autogestionado

  1. En un servidor que pueda conectarse a su base de datos de MongoDB autogestionada, descargue el archivo de script cleanupOrphaned.js.

    wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js"
  2. Modifique el archivo de script cleanupOrphaned.js. Reemplace test por el nombre de la base de datos de la cual desea eliminar los documentos huérfanos.

    Importante

    Si tiene varias bases de datos, debe repetir el paso 2 y el paso 3 para cada una de ellas.

    function cleanupOrphaned(coll) {
      var nextKey = { };
      var result;
      while ( nextKey != null ) {
        result = db.adminCommand( { cleanupOrphaned: coll, startingFromKey: nextKey } );
        if (result.ok != 1)
           print("Unable to complete at this time: failure or timeout.")
        printjson(result);
        nextKey = result.stoppedAtKey;
      }
    }
    var dbName = "test"
    db = db.getSiblingDB(dbName)
    db.getCollectionNames().forEach(function(collName) {
            cleanupOrphaned(dbName + "." + collName);
    });
  3. Ejecute el siguiente comando para eliminar los documentos huérfanos de todas las colecciones de la base de datos especificada en un shard.

    Nota

    Debe repetir este paso para cada shard.

    mongo --host <Shardhost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js
    Nota
    • <Shardhost>: la dirección IP del shard.

    • <Primaryport>: el puerto de servicio del nodo primario en el shard.

    • <database>: el nombre de la base de datos de autenticación. Es la base de datos a la que pertenece la cuenta de la base de datos.

    • <username>: la cuenta de la base de datos.

    • <password>: la contraseña de la cuenta.

    Por ejemplo:

    En este ejemplo, la base de datos de MongoDB autogestionada tiene tres shards. Debe ejecutar el comando para cada shard con el fin de eliminar los documentos huérfanos.

    mongo --host 172.16.1.10 --port 27018  --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
    mongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
    mongo --host 172.16.1.12 --port 27024  --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js

Procedimiento

Importante

En este tema se muestra un ejemplo de cómo configurar una tarea de DTS antes de comprarla. En este caso, no es necesario especificar el número de shards del clúster fragmentado de origen de ApsaraDB for MongoDB.

Si compra una tarea de DTS antes de configurarla, debe especificar el número correcto de shards durante la compra.

  1. Vaya a la página de lista de tareas de migración de la región de destino mediante uno de los métodos siguientes.

    Desde la consola de DTS

    1. Inicie sesión en la consola de Data Transmission Service (DTS).

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

    3. En la esquina superior izquierda de la página, seleccione la región donde se encuentra la instancia de migración.

    Desde la consola de DMS

    Nota

    Las operaciones reales pueden variar según el modo y el diseño de la consola de DMS. Para obtener más información, consulte Simple mode console y Customize the layout and style of the DMS console.

    1. Inicie sesión en la consola de Data Management (DMS).

    2. En la barra de menú superior, elija Data + AI > Data Transmission (DTS) > Data Migration.

    3. A la derecha de Data Migration Tasks, seleccione la región donde se encuentra la instancia de migración.

  2. Haga clic en Create Task y configure las bases de datos de origen y de destino.

    Sección

    Parámetro

    Descripción

    N/D

    Task Name

    DTS genera automáticamente un nombre para la tarea. Se recomienda especificar un nombre descriptivo que facilite su identificación. El nombre no tiene que ser único.

    Source Database

    Select an existing DMS database instance. (Optional. If you have not registered a DMS database instance, ignore this option and configure database settings in the section below.) (Opcional. Si no ha creado una conexión, omita esta opción y configure directamente la información de la base de datos en la sección siguiente).

    Seleccione una instancia existente según sea necesario.

    • Si utiliza una instancia existente, la información de la base de datos se completa automáticamente. No es necesario introducirla de nuevo.

    • Si no utiliza una instancia existente, introduzca la siguiente información de la base de datos.

    Database Type

    Seleccione MongoDB.

    Access Method

    Seleccione Alibaba Cloud Instance.

    Instance Region

    Seleccione la región donde se encuentra la instancia de origen de ApsaraDB for MongoDB.

    Replicate Data Across Alibaba Cloud Accounts

    Este ejemplo muestra cómo sincronizar datos dentro de la misma cuenta de Alibaba Cloud. Seleccione No.

    Architecture

    Seleccione Sharded Cluster.

    Migration Method

    Seleccione un método para la sincronización incremental de datos según sus necesidades.

    • Oplog (Recomendado):

      Esta opción está disponible si Oplog está habilitado en la base de datos de origen.

      Nota

      Oplog está habilitado de forma predeterminada en las bases de datos de MongoDB autogestionadas y en las instancias de ApsaraDB for MongoDB. Este método ofrece menor latencia en las tareas de sincronización incremental porque los registros se recuperan más rápido. Se recomienda seleccionar Oplog.

    • ChangeStream:

      Esta opción está disponible si Change Streams están habilitados en la base de datos de origen.

      Nota
      • Si la base de datos de origen es una instancia de Amazon DocumentDB (clúster no elástico), solo puede seleccionar ChangeStream.

      • Si establece Architecture de la base de datos de origen en Sharded Cluster, no es necesario especificar Shard account ni Shard password.

    Instance ID

    Seleccione el identificador de la instancia de origen de ApsaraDB for MongoDB.

    Database Name

    Introduzca el nombre de la base de datos a la que pertenece la cuenta de la instancia de origen de ApsaraDB for MongoDB. El valor predeterminado es admin.

    Database Account

    Introduzca la cuenta de la base de datos de la instancia de origen de ApsaraDB for MongoDB. Esta cuenta debe tener permisos de lectura sobre la base de datos que se va a sincronizar, así como sobre las bases de datos config, admin y local.

    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 en toda la instancia (como readAnyDatabase). Si el origen es una instancia de ApsaraDB for MongoDB con una cuenta personalizada, también debe otorgarle permiso de lectura sobre la base de datos admin. Para obtener más detalles, consulte Permissions of the root account specified during instance creation.

    Database Password

    Introduzca la contraseña correspondiente a la cuenta de la base de datos.

    Shard account

    Introduzca la cuenta del shard de la instancia de origen de ApsaraDB for MongoDB.

    Nota

    Si el origen es una base de datos de MongoDB autogestionada, también debe introducir la shard connection information para los nodos del shard.

    Shard password

    Introduzca la contraseña del shard de la instancia de origen de ApsaraDB for MongoDB.

    Destination Database

    Select an existing DMS database instance. (Optional. If you have not registered a DMS database instance, ignore this option and configure database settings in the section below.) (Opcional. Si no ha creado una conexión, omita esta opción y configure directamente la información de la base de datos en la sección siguiente).

    Seleccione una instancia existente según sea necesario.

    • Si utiliza una instancia existente, la información de la base de datos se completa automáticamente. No es necesario introducirla de nuevo.

    • Si no utiliza una instancia existente, introduzca la siguiente información de la base de datos.

    Database Type

    Seleccione MongoDB.

    Access Method

    Seleccione Alibaba Cloud Instance.

    Instance Region

    Seleccione la región donde se encuentra la instancia de destino de ApsaraDB for MongoDB.

    Architecture

    Seleccione el tipo de arquitectura de la instancia de destino de ApsaraDB for MongoDB.

    Instance ID

    Seleccione el identificador de la instancia de destino de ApsaraDB for MongoDB.

    Database Name

    Introduzca el nombre de la base de datos a la que pertenece la cuenta de la instancia de destino de ApsaraDB for MongoDB. El valor predeterminado es admin.

    Database Account

    Introduzca la cuenta de la base de datos de la instancia de destino de ApsaraDB for MongoDB. Esta cuenta requiere el permiso dbAdminAnyDatabase, permisos de lectura y escritura sobre la base de datos de destino, y permisos de lectura sobre la base de datos local.

    Database Password

    Introduzca la contraseña correspondiente a la cuenta de la base de datos.

    Encryption

    DTS admite tres métodos de conexión: Non-encrypted, SSL-encrypted y Mongo Atlas SSL. Las opciones de Encryption varían según el Access Method y la Architecture seleccionados. Prevalecen las opciones que se muestran en la consola.

    Nota
    • Las bases de datos de MongoDB con Architecture de Sharded Cluster no admiten SSL-encrypted.

    • Si el destino es una base de datos de MongoDB autogestionada (Access Method distinto de Alibaba Cloud Instance) con Replica Set y selecciona SSL-encrypted, DTS también le permite cargar un certificado de CA para verificar la conexión.

  3. En la parte inferior de la página, haga clic en Test Connectivity and Proceed.

    Si la base de datos de origen o de destino es una instancia de base de datos de Alibaba Cloud, como una instancia de ApsaraDB RDS for MySQL o de ApsaraDB for MongoDB, DTS agrega automáticamente los bloques CIDR de los servidores de DTS a la lista de permitidos de la instancia. Si la base de datos de origen o de destino es una base de datos autogestionada alojada en una instancia de Elastic Compute Service (ECS), DTS agrega automáticamente los bloques CIDR de los servidores de DTS a las reglas del security group de la instancia de ECS, por lo que debe asegurarse de que la instancia de ECS pueda acceder a la base de datos. Si la base de datos de origen o de destino es una base de datos autogestionada desplegada en un centro de datos o proporcionada por un proveedor de servicios en la nube externo, debe agregar manualmente los bloques CIDR de los servidores de DTS a la lista de permitidos de la base de datos para permitir que DTS acceda a ella. Para obtener más información, consulte Whitelist DTS server IP addresses.

    Aviso

    Si los bloques CIDR de los servidores de DTS se agregan automática o manualmente a la lista de permitidos de la base de datos o de la instancia, o a las reglas del security group de ECS, pueden surgir riesgos de seguridad. Por lo tanto, antes de usar DTS para sincronizar datos, debe comprender y aceptar los riesgos potenciales, además de tomar medidas preventivas. Estas incluyen, entre otras: reforzar la seguridad de su nombre de usuario y contraseña, limitar los puertos expuestos, autenticar las llamadas a la API, revisar periódicamente la lista de permitidos o las reglas del security group de ECS para bloquear los bloques CIDR no autorizados, o conectar la base de datos a DTS mediante Express Connect, VPN Gateway o Smart Access Gateway.

  4. Configure los objetos de sincronización y los ajustes avanzados.

    Parámetro

    Descripción

    Synchronization Types

    Incremental Data Synchronization está seleccionado. De forma predeterminada, también debe seleccionar Schema Synchronization y Full Data Synchronization. Una vez completada la comprobación previa, DTS ejecuta una sincronización completa de datos de los objetos seleccionados desde la instancia de origen hacia el clúster de destino. Estos datos sirven como línea base para la posterior sincronización incremental.

    Synchronization Topology

    Seleccione One-way Synchronization.

    Processing Mode of Conflicting Tables

    • Precheck and Report Errors: comprueba si existe una colección con el mismo nombre en la base de datos de destino. Si se encuentra una colección con el mismo nombre, se reporta un error y la tarea de sincronización de datos no se inicia. De lo contrario, la comprobación previa es exitosa.

      Nota

      Si no puede eliminar ni renombrar la colección con el mismo nombre en la base de datos de destino, puede cambiar el nombre de la colección en la base de datos de destino. Para obtener más información, consulte Set the name of a synchronization object in the destination instance.

    • Ignore Errors and Proceed: omite la comprobación de colecciones con el mismo nombre en la base de datos de destino.

      Aviso

      Seleccionar Ignore Errors and Proceed puede provocar inconsistencias en los datos y poner en riesgo su negocio. Por ejemplo:

      • Si un registro de la base de datos de destino tiene el mismo valor de clave primaria o clave única que un registro de la base de datos de origen, se conserva el registro de la base de datos de destino. El registro de la base de datos de origen no se sincroniza con la base de datos de destino.

      • Esto puede hacer que falle la inicialización de datos, que solo se sincronicen datos parciales o que falle toda la sincronización.

    Capitalization of Object Names in Destination Instance

    Puede configurar la directiva de distinción entre mayúsculas y minúsculas para los nombres de objetos de base de datos, tablas y columnas que se sincronizan con la instancia de destino. De forma predeterminada, se selecciona la DTS default policy. También puede elegir usar las directivas predeterminadas de las bases de datos de origen y de destino. Para obtener más información, consulte Case sensitivity policy for destination object names.

    Source Objects

    En el cuadro Source Objects, haga clic en un objeto para sincronizarlo y luego haga clic en 向右 para moverlo al cuadro Selected Objects.

    Nota

    La sincronización se puede ejecutar en los niveles DATABASE y COLLECTION.

    Selected Objects

    • Para renombrar un único objeto de sincronización en la instancia de destino, haga clic con el botón derecho en el objeto dentro del cuadro Selected Objects. Para obtener más información sobre cómo renombrar objetos, consulte Map a single database, table, or column.

    • Para cambiar por lotes los nombres de varios objetos de sincronización en la instancia de destino, haga clic en Batch Edit en la esquina superior derecha del cuadro Selected Objects. Para obtener más información, consulte Map databases, tables, and columns in a batch.

  5. Haga clic en Next: Advanced Settings para configurar los ajustes avanzados.

    • Data Verification Settings

      Para configurar la validación de datos, consulte Configure data validation.

    • Advanced Settings

      Parámetro

      Descripción

      Dedicated Cluster for Task Scheduling

      De forma predeterminada, DTS programa las tareas en un clúster compartido, por lo que no es necesario seleccionar un clúster. Para obtener un rendimiento más estable, puede comprar un clúster dedicado para ejecutar las tareas de sincronización de DTS. Para obtener más información, consulte What is a DTS dedicated cluster?.

      Retry Time for Failed Connections

      Una vez iniciada la tarea de sincronización, si falla la conexión con la base de datos de origen o de destino, DTS reporta un error y comienza inmediatamente a reintentar la conexión. La duración predeterminada de reintento es de 720 minutos. También puede especificar una duración de reintento personalizada de 10 a 1440 minutos. Se recomienda establecer la duración en 30 minutos o más. Si DTS se vuelve a conectar correctamente a la base de datos dentro de la duración especificada, la tarea de sincronización se reanuda automáticamente. De lo contrario, la tarea falla.

      Nota
      • Si tiene varias instancias de DTS (por ejemplo, la Instancia A y la Instancia B) que comparten el mismo origen o destino, y establece el tiempo de reintento de red en 30 minutos para la Instancia A y en 60 minutos para la Instancia B, se utilizará la duración más corta de 30 minutos para ambas.

      • Dado que DTS cobra por el tiempo de ejecución de la tarea durante el periodo de reintento de conexión, se recomienda personalizar la duración de reintento según las necesidades de su negocio o liberar la instancia de DTS lo antes posible después de liberar las instancias de base de datos de origen y de destino.

      Retry Time for Other Issues

      Después de que se inicia la tarea de sincronización, si ocurren otros problemas no relacionados con la conectividad en la base de datos de origen o de destino (como excepciones en la ejecución de DDL o DML), DTS reporta un error e inicia inmediatamente operaciones de reintento continuas. La duración predeterminada de reintento es de 10 minutos. También puede personalizar la duración de reintento dentro del rango de 1 a 1440 minutos. Se recomienda establecerla en 10 minutos o más. Si las operaciones correspondientes se ejecutan correctamente dentro de la duración de reintento establecida, la tarea de sincronización se reanuda automáticamente. De lo contrario, la tarea falla.

      Importante

      El valor de Retry Time for Other Issues debe ser menor que el de Retry Time for Failed Connections.

      Enable Throttling for Full Data Synchronization

      Durante la fase de sincronización completa, DTS consume recursos de lectura y escritura de las bases de datos de origen y de destino, lo que puede aumentar la carga de la base de datos. Para reducir la carga en las bases de datos de origen y de destino, puede establecer un límite de velocidad para la tarea de sincronización completa mediante la configuración de los parámetros Queries per second (QPS) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s).

      Nota
      • Este elemento de configuración solo está disponible cuando Synchronization Types se establece en Full Data Synchronization.

      • También puede adjust the full synchronization rate después de que la instancia de sincronización esté en ejecución.

      Enable Throttling for Incremental Data Synchronization

      También puede establecer un límite de velocidad para la tarea de sincronización incremental. Para aliviar la presión sobre la base de datos de destino, configure RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s).

      Environment Tag

      Puede seleccionar una etiqueta de entorno para identificar la instancia según las necesidades de su negocio. En este ejemplo, no es necesario seleccionar ninguna etiqueta.

      Configure ETL

      Elija si desea habilitar la función de extracción, transformación y carga (ETL). Para obtener más información, consulte What is ETL? Valores válidos:

      Monitoring and Alerting

      Especifique si desea configurar alertas. Si la sincronización falla o la latencia supera el umbral especificado, se envía una notificación a un contacto de alerta.

  6. Guarde la tarea y ejecute una comprobación previa.

    • Para consultar los parámetros de la API necesarios para configurar esta instancia, pase el cursor sobre el botón Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters en la burbuja emergente.

    • Cuando termine de revisar los parámetros de la API, haga clic en Next: Save Task Settings and Precheck en la parte inferior de la página.

    Nota
    • Antes de que comience el trabajo de sincronización, DTS ejecuta una comprobación previa. El trabajo solo puede iniciarse después de que todos los elementos de la comprobación previa sean exitosos.

    • Si la comprobación previa falla, haga clic en View Details junto al elemento que falló. Corrija el problema siguiendo las indicaciones y vuelva a ejecutar la comprobación previa.

    • Si la comprobación previa devuelve una advertencia:

      • Si un elemento de comprobación falla y no se puede ignorar, haga clic en View Details junto al elemento. Siga las instrucciones para corregir el problema y vuelva a ejecutar la comprobación previa.

      • Para los elementos de comprobación que se pueden ignorar, haga clic sucesivamente en Confirm Alert Details, Ignore, OK y Precheck Again para omitir la advertencia y volver a ejecutar la comprobación previa. Si decide ocultar el elemento de advertencia, podrían producirse problemas como inconsistencias en los datos que pongan en riesgo su negocio.

  7. Cuando Success Rate alcance el 100 %, haga clic en Next: Purchase Instance.

  8. En la página Purchase, seleccione el método de facturación y la especificación de enlace para la instancia de sincronización de datos. A continuación se describen estos parámetros en detalle.

    Categoría

    Parámetro

    Descripción

    New Instance Class

    Billing Method

    • Subscription: paga al crear la instancia. Es adecuado para necesidades a largo plazo y resulta más rentable que pay-as-you-go. Cuanto mayor sea la duración de la suscripción, mayor será el descuento.

    • Pay-as-you-go: se le cobra por hora. Es adecuado para necesidades a corto plazo. Puede liberar la instancia inmediatamente después de usarla para ahorrar costos.

    Resource Group Configuration

    El resource group al que pertenece la instancia. El valor predeterminado es default resource group. Para obtener más información, consulte What is Resource Management?.

    Link Specification

    DTS proporciona especificaciones de sincronización con distintos niveles de rendimiento. La especificación del enlace de sincronización afecta la velocidad de sincronización. Puede elegir una especificación según su escenario de negocio. Para obtener más información, consulte Data synchronization link specifications.

    Subscription Duration

    En el modo subscription, seleccione la duración y la cantidad para la instancia de suscripción. Puede elegir una suscripción mensual de 1 a 9 meses, o una suscripción anual de 1, 2, 3 o 5 años.

    Nota

    Esta opción solo está disponible cuando el método de facturación es Subscription.

  9. Una vez completada la configuración, lea y seleccione Data Transmission Service (Pay-as-you-go) Service Terms.

  10. Haga clic en Buy and Start. En el cuadro de diálogo OK, haga clic en OK.

    Puede consultar el progreso de la tarea en la página Data Synchronization.