Data Transmission Service (DTS) permite migrar datos de MongoDB a MySQL. En este tema se utiliza ApsaraDB for MongoDB (arquitectura ReplicaSet) como origen y una instancia de RDS for MySQL como destino.
Requisitos previos
Si la base de datos de origen es ApsaraDB for MongoDB con arquitectura de clúster fragmentado, solicite una dirección de conexión para todos los nodos de fragmentación. Además, asegúrese de que la cuenta y la contraseña sean idénticas en todos los fragmentos. Para obtener más información, consulte Apply for a shard connection address.
-
Cree una instancia de RDS for MySQL cuyo espacio de almacenamiento sea mayor que el espacio utilizado por la instancia de origen de ApsaraDB for MongoDB. Para obtener más información, consulte Create an RDS for MySQL instance.
NotaAsigne a la instancia de destino como mínimo un 10 % más de espacio de almacenamiento del que usa la base de datos de origen.
-
En la instancia de destino de RDS for MySQL, cree una base de datos y tablas con claves primarias para recibir los datos migrados. Para obtener más información, consulte Manage databases.
ImportanteAsegúrese de que los tipos de datos de las tablas de destino sean compatibles con los datos de la instancia de origen de MongoDB. Por ejemplo, si el campo
_idde MongoDB es de tipo ObjectId, la columna correspondiente en la instancia de RDS for MySQL debe ser de tipo varchar.Los nombres de columna de la tabla de destino en la instancia de RDS for MySQL no pueden ser _id ni _value.
Consideraciones
Tipo | Descripción |
Limitaciones de la base de datos de origen |
|
Otras limitaciones |
|
Facturación
Tipo de migración | Cargo por configuración de la tarea | Cargo por transferencia de datos |
Migración completa de datos | Gratis. | Este tutorial es gratuito. Sin embargo, se aplica un cargo de data transfer fee si el parámetro Access Method de la base de datos de destino es Public IP Address. |
Migración incremental de datos | Se aplican cargos. Para obtener más información, consulte billing overview. |
Tipos de migración
|
Tipo de migración |
Descripción |
|
Migración completa |
Migra todos los datos históricos de los objetos seleccionados desde la instancia de origen de ApsaraDB for MongoDB hacia la instancia de destino de RDS for MySQL. |
|
Migración incremental |
Después de la migración completa, migra las actualizaciones incrementales desde la instancia de origen de ApsaraDB for MongoDB hacia la instancia de destino de RDS for MySQL. Nota
|
Permisos de cuentas de base de datos
|
Base de datos |
Migración completa |
Migración incremental |
Método de creación de cuentas y autorización |
|
ApsaraDB for MongoDB de origen |
Permiso de lectura en la base de datos que se va a migrar. |
Permiso de lectura en la base de datos que se va a migrar, en la base de datos admin y en la base de datos local. |
|
|
Instancia de destino de RDS for MySQL |
Permiso de lectura y escritura en la base de datos de destino. |
||
Si utiliza ChangeStream como método de migració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 dicha cuenta permisos de lectura en la base de datos admin. Para obtener más información, consulte Permissions of the root account specified during instance creation.
Procedimiento
-
Vaya a la página de la lista de tareas de migración de la región de destino mediante uno de los métodos a continuación.
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 Migration.
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
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 console y Customize the layout and style of the DMS console.
Inicie sesión en la consola de Data Management (DMS).
En la barra de menú superior, elija .
A la derecha de Data Migration Tasks, seleccione la región donde se encuentra la instancia de migración.
Haga clic en Create Task para ir a 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
Ninguna
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 ya se haya added to the system (creado o guardado), seleccione la instancia deseada en la lista desplegable. La información de la base de datos se configura automáticamente a continuación.
NotaEn la consola de DMS, este parámetro se llama Select a DMS database instance..
Si no registró la instancia de base de datos en el sistema o no necesita usar una instancia registrada, configure manualmente la información de la base de datos a continuación.
Database Type
Seleccione MongoDB.
Access Method
Seleccione Alibaba Cloud Instance.
Instance Region
Seleccione la región donde reside la instancia de origen de ApsaraDB for MongoDB.
Replicate Data Across Alibaba Cloud Accounts
En este ejemplo se usa una instancia de base de datos de la cuenta actual de Alibaba Cloud. Seleccione No.
Architecture
En este ejemplo se selecciona Replica Set.
NotaSi la instancia de origen de ApsaraDB for MongoDB utiliza Sharded Cluster, también debe introducir la Shard account y la Shard password.
Migration Method
Seleccione un método para la migración incremental de datos según sus necesidades.
-
Oplog (recomendado):
Esta opción está disponible si hay un oplog habilitado para la base de datos de origen.
NotaEl oplog se habilita de forma predeterminada tanto en las bases de datos MongoDB autogestionadas como en las instancias de ApsaraDB for MongoDB. Este método ofrece menor latencia en la migración incremental de datos porque extrae los registros más rápido. Por lo tanto, se recomienda seleccionar Oplog.
-
ChangeStream: esta opción está disponible si Change Streams están habilitados para 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 en Sharded Cluster para la base de datos de origen, no necesita introducir una Shard account ni una Shard password.
-
Instance ID
Seleccione el identificador de la instancia de origen de ApsaraDB for MongoDB.
Authentication Database
Introduzca el nombre de la base de datos a la que pertenece la cuenta de la base de datos de origen de ApsaraDB for MongoDB. Si no la modificó, el valor predeterminado es admin.
Database Account
Introduzca la cuenta de la base de datos para la instancia de origen de ApsaraDB for MongoDB. Para conocer los requisitos de permisos, consulte Database account permissions.
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 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 MongoDB autogestionada (Access Method no es 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 ya se haya added to the system (creado o guardado), seleccione la instancia deseada en la lista desplegable. La información de la base de datos se configura automáticamente a continuación.
NotaEn la consola de DMS, este parámetro se llama Select a DMS database instance..
Si no registró la instancia de base de datos en el sistema o no necesita usar una instancia registrada, configure manualmente la información de la base de datos a continuación.
Database Type
Seleccione MySQL.
Access Method
Seleccione Alibaba Cloud Instance.
Instance Region
Seleccione la región donde reside la instancia de destino de RDS for MySQL.
Replicate Data Across Alibaba Cloud Accounts
En este ejemplo se usa una instancia de base de datos de la cuenta actual de Alibaba Cloud. Seleccione No.
RDS Instance ID
Seleccione el identificador de la instancia de destino de RDS for MySQL.
Database Account
Introduzca la cuenta de la base de datos para la instancia de destino de RDS for MySQL. Para conocer los requisitos de permisos, consulte Database account permissions.
Database Password
Introduzca la contraseña de la cuenta de la base de datos.
Encryption
Seleccione Non-encrypted o SSL-encrypted según los requisitos de su base de datos. Si establece este parámetro en SSL-encrypted, primero debe habilitar el cifrado SSL para la instancia de RDS for MySQL. Para obtener más información, consulte Quickly enable SSL encryption using a cloud certificate.
-
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 el segmento de direcciones IP del servicio DTS se agregue de forma automática o manual a la configuración de seguridad de las bases de datos de origen y de destino. Esto permite el acceso desde los servidores de DTS. Para obtener más información, consulte Add DTS server IP addresses to a whitelist.
Si la base de datos de origen o de destino es autogestionada (es decir, Access Method no es Alibaba Cloud Instance), también debe hacer clic en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers que aparece.
-
Configure los objetos de la tarea.
-
En la página Configure Objects, configure los objetos que desea migrar.
Configuración
Descripción
Migration Types
Si solo necesita ejecutar una migración completa, seleccione Full Data Migration.
Para ejecutar una migración sin tiempo de inactividad, seleccione tanto Full Data Migration como Incremental Data Migration.
NotaSi no selecciona Incremental Data Migration, no escriba datos nuevos en la instancia de origen durante la migración de datos para garantizar la coherencia de los datos.
Processing Mode of Conflicting Tables
Precheck and Report Errors: comprueba si existen colecciones con los mismos nombres en la base de datos de destino. Si no existen colecciones con los mismos nombres, la comprobación previa se supera. Si existen colecciones con los mismos nombres, se reporta un error durante la comprobación previa y la tarea de migración de datos no inicia.
NotaSi una colección de la base de datos de destino tiene el mismo nombre pero no se puede eliminar ni renombrar fácilmente, cambie el nombre de la colección en la base de datos de destino. Para obtener más información, consulte Object name mapping.
Ignore Errors and Proceed: omite la comprobación de colecciones con los mismos nombres.
AvisoSeleccionar Ignore Errors and Proceed puede provocar inconsistencias en los datos y riesgos para el negocio. Por ejemplo:
Si un registro de la base de datos de destino tiene el mismo valor de clave principal 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 migra a la base de datos de destino.
La inicialización de datos puede fallar, es posible que solo se migren algunos datos o que la migración falle.
Capitalization of Object Names in Destination Instance
Puede configurar la política de distinción entre mayúsculas y minúsculas para los nombres de los objetos migrados, como bases de datos y colecciones, en la instancia de destino. De forma predeterminada, se selecciona DTS default policy. También puede mantener la distinción entre mayúsculas y minúsculas coherente con la política predeterminada de la base de datos de origen o de destino. Para obtener más información, consulte Case sensitivity of object names in the destination database.
Source Objects
En el cuadro Source Objects, haga clic en los objetos que desea migrar y luego haga clic en
para moverlos al cuadro Selected Objects.NotaLa granularidad para seleccionar los objetos de migración es la colección.
Selected Objects
-
Edite la asignación de nombres de bases de datos.
-
Haga clic con el botón derecho en la base de datos que contiene las colecciones por migrar dentro del cuadro Selected Objects.
-
Cambie Schema Name por el nombre de la base de datos en la instancia de destino de RDS for MySQL que recibirá los datos. En el cuadro de diálogo Edit Schema que aparece, cambie Schema Name (por ejemplo, a
dtsdb). Después de la edición, el nombre del esquema en la base de datos de destino será el nuevo nombre. -
Haga clic en OK.
-
-
Edite la asignación de nombres de tablas.
-
Haga clic con el botón derecho en la colección por migrar dentro del cuadro Selected Objects.
El panel muestra los objetos seleccionados en una estructura de árbol: base de datos (por ejemplo, dtsdb) > tipo de objeto (por ejemplo, Table) > nombre del objeto (por ejemplo, class).
-
Cambie Table Name por el nombre de la tabla en la instancia de destino de RDS for MySQL que recibirá los datos. En el panel Edit Table que aparece, cambie Table Name (por ejemplo, a
class). Después de editar el nombre de la tabla o de la columna, los nombres en la base de datos de destino serán los nuevos nombres. -
Opcional: establezca condiciones de filtro para la migración completa. Para ver las instrucciones, consulte Filter task data with an SQL condition. En la sección Filter Conditions, para ApsaraDB for MongoDB, la sintaxis admitida difiere de las cláusulas WHERE estándar de SQL. Por ejemplo, para filtrar por identificador de usuario:
{"_id": {$gt:"user100844658590795**",$lte:"user101674868045948**"}}, donde$gtsignifica mayor que y$ltesignifica menor o igual que. -
Opcional: en la sección Select DDL and DML Operations to Be Synchronized, seleccione las operaciones de migración incremental que desea sincronizar. Marque las operaciones DML por sincronizar: insert, update, delete.
-
-
Configure los campos (Field) que desea migrar desde MongoDB.
DTS asigna los datos de las colecciones por migrar de forma predeterminada y configura expresiones en la columna Parameter Value. Compruebe que las expresiones cumplan con sus requisitos y configure Column Name, Type, Length y Precision.
Importante-
A la columna de clave principal de la tabla de destino se le debe asignar el valor
bson_value("_id"). -
Al configurar la expresión
bson_value(), especifique la ruta al subcampo más pequeño. De lo contrario, podría producirse pérdida de datos o un fallo en la tarea.
-
En la expresión
bson_value()de la columna Parameter Value, consulte el nombre del campo en MongoDB para esa fila.El nombre del campo en MongoDB se encuentra dentro de
"". Por ejemplo, si la expresión esbson_value("age"), el campo correspondiente en MongoDB esage. -
Opcional: elimine los campos que no necesite migrar.
NotaPara los campos que no requieren migración, puede hacer clic en el icono
después de la fila de datos. -
Configure los campos por migrar.
Dependiendo de si la expresión
bson_value()cumple con sus requisitos, proceda de la siguiente manera.Campos con expresiones adecuadas
-
Introduzca Column Name.
NotaIntroduzca el nombre de la columna en la tabla de la instancia de destino de RDS for MySQL que recibirá los datos.
-
Seleccione el Type para los datos de la columna.
ImportanteAsegúrese de que el tipo de datos de la tabla de destino sea compatible con los datos de la instancia de MongoDB de origen. Para conocer las asignaciones de tipos de datos, consulte Data type mapping.
-
Opcional: configure Length y Precision para los datos de la columna.
-
Repita los pasos anteriores para asignar todos los campos relevantes.
Campos con expresiones inadecuadas
NotaPor ejemplo, campos con estructuras jerárquicas (padre-hijo).
-
En la columna Operation, haga clic en
junto a la fila. -
Haga clic en + Add Column.
-
Configure Column Name, Type, Length y Precision.
-
En el cuadro de texto debajo de Parameter Value, introduzca la expresión
bson_value(). Para más detalles, consulte Value configuration examples. -
Repita los pasos anteriores para asignar todos los campos relevantes.
-
-
-
Haga clic en OK.
-
Haga clic en Next: Advanced Settings para configurar los parámetros avanzados.
Configuración
Descripción
Dedicated Cluster for Task Scheduling
De forma predeterminada, DTS programa las tareas en un clúster compartido. No necesita seleccionar uno. Si desea tareas más estables, puede adquirir un dedicated cluster para ejecutar las tareas de migración de DTS.
Retry Time for Failed Connections
Después de que inicie la tarea de migració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. Puede personalizar el tiempo de reintento con un valor de 10 a 1440 minutos. Se recomienda establecer una duración superior a 30 minutos. Si DTS se vuelve a conectar a las bases de datos de origen y de destino dentro de la duración especificada, la tarea de migración se reanuda automáticamente. De lo contrario, la tarea falla.
NotaPara varias instancias de DTS que comparten el mismo origen o destino, el tiempo de reintento de red lo determina la configuración de la última tarea creada.
Dado que se le cobra por la tarea durante el período de reintento de conexión, se recomienda personalizar el tiempo 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 las bases de datos de origen y de destino.
Retry Time for Other Issues
Después de que inicie la tarea de migración, si ocurre un problema que no sea de conectividad en la base de datos de origen o de destino, como una excepción en la ejecución de DDL o DML, DTS reporta un error y comienza inmediatamente a reintentar la operación. La duración predeterminada de reintento es de 10 minutos. Puede personalizar el tiempo de reintento con un valor de 1 a 1440 minutos. Se recomienda establecer una duración superior a 10 minutos. Si las operaciones relacionadas se ejecutan correctamente dentro de la duración de reintento especificada, la tarea de migración se reanuda automáticamente. De lo contrario, la tarea falla.
ImportanteEl valor de Retry Time for Other Issues debe ser menor que el valor de Retry Time for Failed Connections.
Enable Throttling for Full Data Migration
Durante la migración completa, DTS consume recursos de lectura y escritura en las bases de datos de origen y de destino, lo que puede aumentar la carga de la base de datos. Si es necesario, puede habilitar la limitación de velocidad para la tarea de migración completa. Puede establecer Queries per second (QPS) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s) para reducir la carga en la base de datos de destino.
NotaEste elemento de configuración solo está disponible si selecciona Full Data Migration en Migration Types.
También puede adjust the full migration speed después de que la instancia de migración esté en ejecución.
Only one data type for primary key _id in a table of the data to be synchronized
Especifica si el tipo de datos de la clave principal
_ides único dentro de la misma colección para los datos por migrar.Importante-
Seleccione una opción según sus necesidades. De lo contrario, podría producirse pérdida de datos.
-
Este parámetro solo está disponible si selecciona Full Data Migration en Migration Types.
-
Yes: el tipo de datos es único. Durante la migración completa de datos, DTS no analiza los tipos de datos de las claves principales en los datos de origen. Para una sola colección, DTS migra únicamente los datos correspondientes a un tipo de datos de clave principal.
-
No: el tipo de datos no es único. Durante la migración completa de datos, DTS analiza los tipos de datos de las claves principales en los datos de origen y migra todos los datos.
Enable Throttling for Incremental Data Migration
Si es necesario, también puede establecer límites de velocidad para la tarea de migración incremental. Puede configurar RPS of Incremental Data Migration y Data migration speed for incremental migration (MB/s) para reducir la carga en la base de datos de destino.
NotaEste elemento de configuración solo está disponible si selecciona Incremental Data Migration en Migration Types.
También puede adjust the incremental migration speed después de que la instancia de migración esté en ejecución.
Environment Tag
Seleccione una etiqueta de entorno para identificar la instancia. En este ejemplo no es necesario seleccionar ninguna.
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
Seleccione si desea configurar alertas y recibir notificaciones de alerta según las necesidades de su negocio.
No: no configura ninguna alerta.
Yes: configura alertas al establecer un alert threshold y alert notifications. Si una migración falla o la latencia supera el umbral, el sistema envía una notificación de alerta.
-
-
Guarde la tarea y ejecute una comprobación previa.
Para consultar los parámetros de configuración de esta instancia cuando llame a la operación de la API, coloque el puntero sobre el botón Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters en la burbuja que aparece.
Si no necesita consultar los parámetros de la API o ya terminó de revisarlos, haga clic en Next: Save Task Settings and Precheck en la parte inferior de la página.
NotaAntes de que inicie la tarea de migración, DTS ejecuta una comprobación previa. La tarea inicia solo después de superar dicha comprobación.
Si la comprobación previa falla, haga clic en View Details junto al elemento de comprobación con errores, resuelva el problema según las indicaciones y vuelva a ejecutar la comprobación previa.
-
Si se reporta una advertencia durante la comprobación previa:
Para los elementos de comprobación que no se pueden ignorar, haga clic en View Details junto al elemento con errores, resuelva el problema según las indicaciones y vuelva a ejecutar la comprobación previa.
Para los elementos de comprobación que se pueden ignorar, haga clic en Confirm Alert Details, Ignore, OK y Precheck Again para omitir el elemento de alerta y volver a ejecutar la comprobación previa. Si decide ignorar una advertencia, podrían surgir problemas como inconsistencias en los datos y representar riesgos para su negocio.
-
Adquiera la instancia.
Cuando Success Rate sea del 100 %, haga clic en Next: Purchase Instance.
-
En la página Purchase, seleccione la especificación de enlace para la instancia de migración de datos. Para obtener más información, consulte la tabla a continuación.
Categoría
Parámetro
Descripción
New Instance Class
Resource Group Settings
Seleccione 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?
Instance Class
DTS proporciona especificaciones de migración con distintos niveles de rendimiento. La especificación de enlace afecta la velocidad de migración. Puede seleccionar una especificación según su escenario de negocio. Para obtener más información, consulte Data migration link specifications.
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 que aparece, haga clic en OK.
Puede consultar el progreso de la tarea de migración en la página de la lista Data Migration Tasks.
NotaSi la tarea de migración no incluye migración incremental, se detiene automáticamente después de completar la migración total. Una vez detenida la tarea, su Status cambia a Completed.
Si la tarea de migración incluye migración incremental, no se detiene automáticamente. La tarea de migración incremental continúa ejecutándose. Mientras la tarea de migración incremental se está ejecutando, el Status de la tarea es Running.
Mapeo de tipos de datos
|
Tipo de dato de MongoDB |
Tipo de dato de MySQL |
|
ObjectId |
VARCHAR |
|
String |
VARCHAR |
|
Document |
VARCHAR |
|
DbPointer |
VARCHAR |
|
Array |
VARCHAR |
|
Date |
DATETIME |
|
TimeStamp |
DATETIME |
|
Double |
DOUBLE |
|
32-bit integer (BsonInt32) |
INTEGER |
|
64-bit integer (BsonInt64) |
BIGINT |
|
Decimal128 |
DECIMAL |
|
Boolean |
BOOLEAN |
|
Null |
VARCHAR |
Ejemplos de configuración de valores
Estructura de datos de MongoDB de origen
{
"_id":"62cd344c85c1ea6a2a9f****",
"person":{
"name":"neo",
"age":26,
"sex":"male"
}
}
Estructura de la tabla de MySQL de destino
|
Column Name |
Type |
|
mongo_id |
varchar Nota
Columna de clave principal. |
|
person_name |
varchar |
|
person_age |
decimal |
Configuración de la nueva columna
Debe especificar la ruta jerárquica completa en la expresión bson_value() para evitar la pérdida de datos o el fallo de la tarea. Por ejemplo, si establece la expresión como bson_value("person"), DTS no puede sincronizar los datos incrementales de los subcampos del objeto person (como name, age y sex) hacia el destino.
|
Nombre de la columna |
Tipo |
Asignación |
|
mongo_id |
STRING |
bson_value("_id") |
|
person_name |
STRING |
bson_value("person","name") |
|
person_age |
DECIMAL |
bson_value("person","age") |