Data Transmission Service (DTS) admite la sincronización de datos incrementales desde una instancia de conjunto de réplicas de ApsaraDB for MongoDB hacia una función específica en Function Compute (FC). Escriba el código de la función para aplicar un procesamiento adicional a los datos sincronizados.
Requisitos previos
Ya creó la instancia de conjunto de réplicas de origen de ApsaraDB for MongoDB. Para obtener más información, consulte Create a replica set instance.
-
Ya creó el servicio y la función de destino, y estableció su Handler Type en Event Handler. Para crear una función, consulte Quickly create a function.
NotaSolo se admite Function Compute (FC) 2.0.
Notas de uso
Tipo | Descripción |
Límites de la base de datos de origen |
|
Otros límites |
|
Casos especiales | Si la base de datos de origen es una instancia de MongoDB autogestionada:
Nota Si selecciona la sincronización de toda la base de datos, cree una tabla de latidos. Actualice o escriba en esta tabla cada segundo. |
Facturación
|
Tipo de sincronización |
Tarifa de configuración de la tarea |
|
Sincronización incremental de datos |
Con costo. Para obtener más información, consulte Billing overview. |
Operaciones de sincronización compatibles
Tipo de sincronización | Descripción |
Sincronización incremental | OplogLa sincronización incremental de datos no replica las bases de datos creadas después de que inicia la tarea. Se replican a continuación los siguientes cambios:
Change streamSe replican los siguientes cambios:
|
Permisos obligatorios para las cuentas de base de datos
|
Base de datos |
Permisos obligatorios |
Métodos de creación y autorización |
|
Instancia de origen de ApsaraDB for MongoDB |
Permisos de lectura sobre las bases de datos de origen, admin y local. |
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 (por ejemplo, readAnyDatabase). Si el origen es una instancia de ApsaraDB for MongoDB con una cuenta personalizada, también debe otorgarle a la cuenta permiso de lectura sobre la base de datos admin. Para obtener más detalles, consulte Permissions of the root account specified during instance creation.
Procedimiento
-
Vaya a la página de lista de tareas de sincronización de la región de destino. Para ello, utilice uno de los dos métodos siguientes:
Desde la consola de DTS
Inicie sesión en la consola de Data Transmission Service (DTS).
En el panel de navegación izquierdo, haga clic en Data Synchronization.
En la esquina superior izquierda de la página, seleccione la región donde se encuentra la instancia de sincronización.
Desde la consola de DMS
NotaLas 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 y Customize the layout and style of the DMS interface.
Inicie sesión en Data Management (DMS).
En la barra de menú superior, elija .
A la derecha de Data Synchronization Tasks, seleccione la región donde se encuentra la instancia de sincronización.
Haga clic en Create Task para abrir la página de configuración de la tarea.
-
Configure las bases de datos de origen y de destino.
Categoría
Configuración
Descripción
N/A
Task Name
DTS genera automáticamente un nombre de tarea. Se recomienda especificar un nombre descriptivo para identificarla con facilidad. El nombre no tiene que ser único.
Source Database
Select Existing Connection
-
Para usar una instancia de base de datos que sea added to the system (recién creada o guardada), selecciónela en la lista desplegable. La información de la base de datos se configura automáticamente.
NotaEn la consola de DMS, este elemento de configuración se denomina Select a DMS database instance..
-
Si no ha agregado la instancia de base de datos al sistema, o si no necesita usar una instancia ya agregada, configure manualmente la siguiente información de la base de datos.
Database Type
El tipo de la base de datos de origen. Seleccione MongoDB.
Access Method
Seleccione Alibaba Cloud Instance.
Instance Region
Seleccione la región de la instancia de origen de ApsaraDB for MongoDB.
Replicate Data Across Alibaba Cloud Accounts
Indica si los datos se sincronizan entre cuentas de Alibaba Cloud. En este ejemplo, seleccione No.
Architecture
Seleccione Replica Set.
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.
NotaOplog 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 ID de la instancia de origen de ApsaraDB for MongoDB.
Authentication Database
Introduzca el nombre de la base de datos de autenticación correspondiente a la cuenta de la instancia de origen de ApsaraDB for MongoDB. El nombre predeterminado es admin.
Database Account
Introduzca la cuenta de la base de datos de la instancia de origen de ApsaraDB for MongoDB. Para conocer los requisitos de permisos, consulte Permission requirements for database accounts.
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-
Una base de datos de MongoDB cuya Architecture es Sharded Cluster y cuyo Migration Method es Oplog no es compatible con SSL-encrypted.
-
Si el origen es una base de datos de MongoDB autogestionada (Access Method distinto de Alibaba Cloud Instance) con arquitectura de Replica Set, y usted selecciona SSL-encrypted, DTS también le permite cargar un certificado de CA para verificar la conexión.
Destination Database
Select Existing Connection
-
Para usar una instancia de base de datos que sea added to the system (recién creada o guardada), selecciónela en la lista desplegable. La información de la base de datos se configura automáticamente.
NotaEn la consola de DMS, este elemento de configuración se denomina Select a DMS database instance..
-
Si no ha agregado la instancia de base de datos al sistema, o si no necesita usar una instancia ya agregada, configure manualmente la siguiente información de la base de datos.
Database Type
Seleccione Function Compute.
Access Method
Seleccione Alibaba Cloud Instance.
Instance Region
De forma predeterminada, el valor coincide con Instance Region de la base de datos de origen y no se puede modificar.
Service
El nombre del servicio de Function Compute de destino.
Function
La función de destino en Function Compute (FC) que recibe los datos.
Service Version and Alias
Seleccione una opción según sus necesidades.
Default Version: Service Version queda fijada en LATEST.
Specified Version: seleccione la Service Version.
Specified Alias: seleccione el Service Alias.
NotaPara obtener más información sobre los términos de Function Compute, consulte Terms.
-
-
Una vez completada la configuración, haga clic en Test Connectivity and Proceed en la parte inferior de la página.
NotaAsegúrese de que los bloques CIDR de direcciones IP de los servidores de DTS estén agregados a la configuración de seguridad de las bases de datos de origen y de destino para permitir el acceso desde dichos servidores. Esto se puede hacer de forma automática o manual. Para obtener más información, consulte Add the IP address CIDR blocks of DTS servers to a whitelist.
Si la base de datos de origen o de destino es autogestionada (donde Access Method es distinto de Alibaba Cloud Instance), también debe hacer clic en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers.
-
Configure los objetos de la tarea.
-
En la página Configure Objects, configure los objetos que desea sincronizar.
Configuración
Descripción
Synchronization Types
Solo se admite Incremental Data Synchronization, que se selecciona de forma predeterminada.
Data Format
El formato de almacenamiento de los datos sincronizados con la función de FC. Solo se admite Canal Json.
NotaPara consultar descripciones de parámetros y ejemplos del formato Canal Json, consulte Canal Json description.
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.NotaPuede seleccionar objetos a nivel de base de datos o de colección.
Selected Objects
En el cuadro Selected Objects, confirme los datos que desea sincronizar.
NotaPara quitar objetos, selecciónelos en el cuadro Selected Objects y haga clic en
.Para filtrar las operaciones de actualización incremental por base de datos o colección, haga clic con el botón derecho en un objeto dentro del cuadro Selected Objects y seleccione las operaciones en el cuadro de diálogo que aparece.
-
Haga clic en Next: Advanced Settings para configurar los parámetros avanzados.
Configuración
Nota
Dedicated Cluster for Task Scheduling
De forma predeterminada, DTS programa las tareas en un clúster compartido, por lo que no es necesario seleccionar uno. Si busca un rendimiento más estable, puede adquirir 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
Después de que se inicia una 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 personalizada de entre 10 y 1440 minutos. Se recomienda establecerla en 30 minutos o más. Si DTS se reconecta correctamente a la base de datos dentro del tiempo indicado, la tarea de sincronización se reanuda automáticamente. De lo contrario, la tarea finaliza con errores.
Nota-
Si tiene varias instancias de DTS (por ejemplo, la Instancia A y la Instancia B) que comparten el mismo origen o destino, y configura 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 sus necesidades comerciales o liberar la instancia de DTS tan pronto como se liberen las instancias de las bases 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 distintos a la conectividad con 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 de inmediato operaciones de reintento continuas. La duración predeterminada de reintento es de 10 minutos. También puede personalizarla en un rango de 1 a 1440 minutos. Se recomienda establecerla en 10 minutos o más. Si las operaciones correspondientes se ejecutan correctamente dentro del tiempo configurado, la tarea de sincronización se reanuda automáticamente. De lo contrario, la tarea finaliza con errores.
ImportanteEl valor de Retry Time for Other Issues debe ser menor que el de Retry Time for Failed Connections.
Obtain the entire document after it is updated.
Durante la sincronización incremental de datos, indica si se deben sincronizar hacia el destino los datos completos del documento correspondiente a una operación de actualización.
NotaEste elemento de configuración solo está disponible cuando Migration Method se establece en ChangeStream.
Yes: sincroniza los datos completos del documento que contiene el campo actualizado.
ImportanteEsta función se basa en las capacidades nativas de MongoDB y puede aumentar la carga en la base de datos de origen. Esto reduce la velocidad de recopilación de datos incrementales y provoca latencia en la instancia de sincronización.
Si DTS no logra obtener los datos completos, solo se sincronizan los datos del campo actualizado.
No: sincroniza únicamente los datos de los campos actualizados.
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
Si lo necesita, seleccione una etiqueta de entorno para identificar la instancia. En este ejemplo no se requiere ninguna selección.
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:
-
Yes: habilita la función ETL. Introduzca las instrucciones de procesamiento de datos en el editor de código. Para obtener más información, consulte Configure ETL in a data migration or data synchronization task.
-
No: deshabilita la función ETL.
Monitoring and Alerting
Especifique si desea configurar alertas. Si la sincronización falla o la latencia supera el umbral indicado, se envía una notificación a un contacto de alerta.
-
No: no se configuran alertas.
-
Yes: configure las alertas estableciendo un umbral y especificando un destinatario de notificaciones de alerta. Para obtener más información, consulte Configure monitoring and alerting during task configuration.
-
-
-
Guarde la tarea y ejecute una comprobación previa.
Para ver los parámetros de 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.
NotaAntes de iniciar el trabajo de sincronización, DTS ejecuta una comprobación previa. El trabajo solo puede comenzar cuando todos los elementos de dicha comprobación se aprueban.
Si la comprobación previa falla, haga clic en View Details junto al elemento con errores. 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 a dicho 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 omitir, haga clic secuencialmente en Confirm Alert Details, Ignore, OK y Precheck Again para saltarse la advertencia y volver a ejecutar la comprobación previa. Si decide ocultar el elemento de advertencia, podrían surgir problemas como inconsistencias de datos que representen riesgos para su negocio.
-
Adquiera una instancia.
Cuando Success Rate alcance el 100 %, haga clic en Next: Purchase Instance.
-
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. En la siguiente tabla se describen estos parámetros en detalle.
Categoría
Parámetro
Descripción
New Instance Class
Billing Method
-
Subscription: el pago se efectúa 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. Resulta ideal 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 ofrece especificaciones de sincronización con distintos niveles de rendimiento. La especificación del enlace de sincronización afecta la velocidad de sincronización. Elija 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 de suscripción, seleccione la duración y la cantidad para la instancia. Puede elegir una suscripción mensual de 1 a 9 meses, o una anual de 1, 2, 3 o 5 años.
NotaEsta opción solo está disponible cuando el método de facturación es Subscription.
-
Una vez completada la configuración, lea y seleccione Data Transmission Service (Pay-as-you-go) Service Terms.
-
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.
Pasos siguientes
Si una tarea de DTS falla porque un registro de datos individual por sincronizar supera los 16 MB, modifique los objetos de sincronización o utilice la función ETL para filtrar los datos de objetos grandes. Para obtener más información, consulte Modify the ETL configuration of an existing sync task y Modify sync objects.
Escriba el código de la función según sus necesidades. Para obtener más información, consulte Code Development Overview.
Formatos de los datos que recibe el servicio de destino
Los datos que recibe FC son de tipo Object. Los datos incrementales de la base de datos de origen se almacenan en el campo Records como un arreglo. Cada elemento del arreglo es un registro de datos de tipo Object. A continuación se describen los campos de este objeto.
FC recibe dos tipos de datos: DML y DDL.
DDL: registra los cambios en la estructura de la base de datos, como CreateIndex, CreateCollection, DropIndex y DropCollection.
DML: registra las operaciones sobre los datos de la base de datos, como INSERT, UPDATE y DELETE.
Campo | Categoría | Nota |
| Boolean | Indica si la operación es de lenguaje de definición de datos (DDL). Valores válidos:
|
| String | Tipo de la operación SQL.
|
| String | Nombre de la base de datos de MongoDB. |
| String | Nombre de la colección de MongoDB. |
| String | El nombre de la clave principal de MongoDB siempre es _id. |
| Long | Hora de ejecución de la operación en la base de datos de origen. El valor es una marca de tiempo UNIX de 13 dígitos. Unidad: milisegundos. Nota Utilice un buscador web para encontrar un conversor de marcas de tiempo UNIX. |
| Long | Hora de inicio de la escritura en la base de datos de destino. Se trata de una marca de tiempo UNIX de 13 dígitos en milisegundos. Nota Utilice un buscador web para encontrar un conversor de marcas de tiempo UNIX. |
| Object Array | El arreglo contiene un único elemento de tipo Object. La clave es doc y el valor es una cadena JSON. Nota Deserialice el valor para obtener el registro de datos. |
old | Object Array | Datos previos a la actualización. El formato es el mismo que el del campo Importante Este campo solo está presente cuando |
| Int | Número de serie de la operación. |
Ejemplo de formato de datos de una operación DDL
Crear una colección
Instrucción SQL
db.createCollection("testCollection")
Datos que recibe FC
{
'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
Instrucción SQL
db.testCollection.drop()
Datos que recibe FC
{
'Records': [{
'data': [{
'doc': '{"drop": "testCollection"}'
}],
'pkNames': ['_id'],
'type': 'DDL',
'es': 1694056577000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': True,
'table': 'testCollection',
'ts': 1694056577789
}]
}
Crear un índice
Instrucción SQL
db.testCollection.createIndex({name:1})
Datos que recibe FC
{
'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
Instrucción SQL
db.testCollection.dropIndex({name:1})
Datos que recibe FC
{
'Records': [{
'data': [{
'doc': '{"dropIndexes": "testCollection", "index": "name_1"}'
}],
'pkNames': ['_id'],
'type': 'DDL',
'es': 1694056817000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': True,
'table': '$cmd',
'ts': 1694056818035
}]
}
Ejemplo de formato de datos de una operación DML
Insertar datos
Instrucción SQL
// Bulk insert
db.runCommand({insert: "user", documents: [{"name":"jack","age":20},{"name":"lili","age":20}]})
// Insert one by one
db.user.insert({"name":"jack","age":20})
db.user.insert({"name":"lili","age":20})
Datos que recibe FC
{
'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 datos
Instrucción SQL
db.user.update({"name":"jack"},{$set:{"age":30}})
Datos que recibe FC
{
'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
}]
}
Eliminar datos
Instrucción SQL
db.user.remove({"name":"jack"})
Datos que recibe FC
{
'Records': [{
'data': [{
'doc': '{"_id": {"$oid": "64f9397f6e255f74d65a****"}}'
}],
'pkNames': ['_id'],
'type': 'DELETE',
'es': 1694055452000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': False,
'table': 'user',
'ts': 1694055452852
}]
}