sql >> Base de Datos >  >> NoSQL >> MongoDB

Migración de MongoDB a DynamoDB, Parte 2

AWS Database Migration Service (DMS) agregó soporte para dos bases de datos NoSQL en 2017:MongoDB como base de datos de origen y AWS DynamoDB como base de datos de destino. En un tutorial de dos artículos, estamos migrando una base de datos MongoDB a DynamoDB en DMS. En el primer artículo, "Migración de MongoDB a DynamoDB, parte 1", creamos un conjunto de réplicas de MongoDB y una tabla de DynamoDB. En este artículo de continuación, analizaremos la creación y ejecución de una migración de DMS para migrar datos.

Este artículo tiene las siguientes secciones:

  • Crear una migración de DMS
  • Ejecutar la migración
  • Reanudación de una migración
  • Eliminar una migración
  • Conclusión

Crear una migración de DMS

A continuación, crearemos una migración de DMS para migrar la base de datos de MongoDB a DynamoDB. Inicie sesión como usuario de IAM (dvohra u otro) creado para DMS y seleccione DMS en la Consola de administración de AWS. Haz clic en Crear migración. en el Panel de DMS, como se muestra en la Figura 1.


Figura 1: Crear migración

Haga clic en Siguiente en la página de bienvenida de DMS, como se muestra en la Figura 2.


Figura 2: Bienvenido>Siguiente

Crear instancia de replicación Se muestra un cuadro de diálogo, como se muestra en la Figura 3, en el que configuramos una instancia de replicación para iniciar las conexiones entre las bases de datos de origen y de destino, transferir los datos y almacenar en caché cualquier cambio en la base de datos de origen durante la carga inicial.


Figura 3: Crear instancia de replicación

Especifique el nombre de la instancia de replicación en Nombre campo, seleccione la clase de instancia , seleccione una VPC y seleccione la opción para si un Multi-AZ se va a crear una instancia de replicación. Descripción , que suele ser opcional en los ajustes configurables, es un campo obligatorio. La configuración predeterminada se proporciona para todos estos campos excepto la VPC. La configuración de la instancia de replicación utilizada se muestra en la Figura 4.


Figura 4: Configuración de la instancia de replicación

Seleccione la opción para hacer que la instancia de replicación sea accesible públicamente y haga clic en Avanzado para configurar los parámetros avanzados, como se muestra en la Figura 5.


Figura 5: Configuración de la instancia de replicación como de acceso público

En el Avanzado sección, se proporcionan configuraciones predeterminadas para todos los campos (consulte la Figura 6).


Figura 6: Configuración avanzada

La configuración predeterminada, excepto la clave maestra de KMS, que debe establecerse en la clave de cifrado (dms) creada antes de iniciar sesión como usuario de IAM (dvohra), es adecuada para cualquier instancia de replicación, como se muestra en la Figura 7. Haga clic en Siguiente.


Figura 7: Configuración avanzada>Siguiente

La instancia de replicación comienza a crearse, como lo indica el mensaje que se muestra en la Figura 8. Especifique los puntos finales de la base de datos a continuación mientras se crea la instancia de replicación. Sin embargo, los extremos de la base de datos no se pueden probar hasta que se haya creado la instancia de replicación.


Figura 8: Se está creando la instancia de replicación

Para el motor de origen , seleccione mongodb base de datos, como se muestra en la Figura 9.


Figura 9: Selección del motor de origen como mongodb

Para el motor de destino , seleccione dynamodb base de datos, como se muestra en la Figura 10.


Figura 10: Selección del motor de destino como dynamodb

El identificador de punto final se puede mantener como predeterminado para las bases de datos de origen y de destino, pero es necesario especificar los demás parámetros de conexión. Para los detalles de conexión de la base de datos de origen , especifique el Nombre del servidor como IP privada (Figura 21 en el primer artículo, "Migración de MongoDB a DynamoDB, Parte 1") de la instancia CoreOS EC2 en la que se inicia el conjunto de réplicas de MongoDB mediante Docker y especifique Puerto como 27017 (ver Figura 11). Seleccione "ninguno" para modo SSL y modo de autenticación . Especifique Nombre de la base de datos como prueba y seleccione Mecanismo de autenticación como predeterminado .


Figura 11: Detalles de la conexión de la base de datos de origen

Para el motor de la base de datos de origen, mongodb , seleccione Modo de metadatos como documento y seleccione la opción _id como una columna separada , como se muestra en la Figura 12. La prueba de ejecución Los botones se utilizan para probar las conexiones de la base de datos de origen y de destino y no se habilitan hasta que se crea la instancia de replicación.


Figura 12: Otras configuraciones para el motor de origen

Copie el ARN del rol para el dms-vpc-role desde la consola de IAM, como se muestra en la Figura 13. El ARN del rol se utilizará para definir la conexión de la base de datos de destino para la migración de DMS.


Figura 13: Copiando el ARN del rol

Copie y pegue el ARN de la función en el ARN de la función de acceso al servicio campo, como se muestra en la Figura 14.


Figura 14: ARN del rol de acceso al servicio

Cuando se ha creado la instancia de replicación, se muestra un mensaje que indica lo mismo, como se muestra en la Figura 15.


Figura 15: Instancia de replicación creada

Para la base de datos de destino, haga clic en Ejecutar prueba para probar la conexión. Si se establece una conexión, debería mostrarse el mensaje "Conexión probada con éxito" (consulte la Figura 16).


Figura 16: La conexión de la base de datos de destino se probó con éxito

Del mismo modo, haga clic en Ejecutar prueba para la base de datos de origen, y debería mostrarse el mensaje "Conexión probada correctamente" si se establece una conexión, como se muestra en la Figura 17.


Figura 17: La conexión de la base de datos de origen se probó con éxito

Haga clic en Siguiente en Puntos de conexión de la base de datos , como se muestra en la Figura 18.


Figura 18: Puntos finales de la base de datos>Siguiente

A continuación, configure una tarea de migración en Crear tarea página. Una tarea consta de varias configuraciones, incluido el nombre de la tarea, la descripción de la tarea, el punto final de origen, el punto final de destino, la instancia de replicación, el tipo de migración, la configuración de la tarea, las asignaciones de tablas y la configuración avanzada. La configuración predeterminada para Nombre de la tarea y la configuración no modificable para el punto final de origen , Punto final de destino , Instancia de replicación y Tipo de migración se muestran en la Figura 19.


Figura 19: Crear configuración de tareas

Agregue una descripción adecuada y seleccione un Tipo de migración de la lista desplegable que se muestra en la Figura 20. Las diferentes opciones para el tipo de migración son Migrar datos existentes , Migrar datos existentes y replicar cambios continuos y Replicar solo los cambios de datos . Para migrar datos existentes de MongoDB a DynamoDB con la posibilidad de replicar cambios continuos, seleccione Migrar datos existentes y replicar cambios continuos. . Una tarea de migración una vez creada tiene la disposición de ser modificada posteriormente excepto por el Tipo de migración configuración, que no se puede modificar después de que se haya creado una tarea de migración. Por lo tanto, elija el tipo de migración asumiendo que es una configuración permanente.


Figura 20: Elección del tipo de migración

Seleccione Configuración de tareas para Modo de preparación de tabla de objetivos , Detener la tarea después de completar la carga completa , Incluir columnas LOB en la replicación y Habilitar registro (ver Figura 21).


Figura 21: Configuración de tareas

Haz clic en Configuración avanzada , como se muestra en la Figura 22, para configurar ajustes avanzados, que incluyen Tabla de control configuración y ajuste ajustes. La configuración avanzada predeterminada puede mantenerse.


Figura 22: Configuración avanzada

En Asignaciones de tablas , configure las reglas de selección, como se muestra en la Figura 23. Al menos una regla de selección con Incluir se requiere acción. Seleccione un nombre de esquema (prueba) en la fuente DMS MongoDB. El nombre del esquema es el mismo que el nombre de la base de datos MongoDB, que es test . Especifique El nombre de la tabla es como ‘%’, que selecciona todas las tablas. Una mesa también se llama una colección en MongoDB. Seleccione Acción como Incluir , que incluye los objetos seleccionados por una regla de selección. Las acciones de exclusión se procesan después de las acciones de inclusión.


Figura 23: Asignaciones de tablas

También se pueden configurar filtros de origen para limitar la cantidad y el tipo de registros transferidos del origen al destino. Haz clic en Añadir regla de selección , como se muestra en la Figura 24.


Figura 24: Añadir regla de selección

Se pueden agregar reglas de transformación para hacer mayúsculas/minúsculas y agregar/eliminar transformaciones de prefijos/sufijos. Si se ha habilitado el registro, DMS crea un rol para iniciar sesión en CloudWatch. La creación de una tarea otorga implícitamente los permisos necesarios para acceder e iniciar sesión en CloudWatch. Haz clic en Crear tarea , como se muestra en la Figura 25.


Figura 25: Crear tarea

Comienza a crearse una tarea de migración (consulte la Figura 26). Inicialmente, el Estado es “Crear”. El estado debe actualizarse automáticamente y también se proporciona la opción de hacer clic en el botón Actualizar para actualizar el estado periódicamente.


Figura 26: La tarea de migración comienza a crearse

Cuando se crea una tarea, el Estado se convierte en Listo , como se muestra en la Figura 27.


Figura 27: Estado de la tarea Listo

Se crea automáticamente un rol de IAM para el acceso y el registro de CloudWatch, como se muestra en la Figura 28.


Figura 28: Rol de IAM para registros de CloudWatch

Ejecutar la migración

Para ejecutar la tarea de migración, haga clic en Iniciar/Reanudar , como se muestra en la Figura 29.


Figura 29: Iniciar/Reanudar tarea

El estado de la tarea pasa a ser Iniciando , como se muestra en la Figura 30.


Figura 30: Inicio de tareas

Cuando la tarea haya terminado de ejecutarse, las tablas cargadas columna enumera el número de tablas cargadas como 1, el Estado se vuelve Detenido , el % completo debe indicar 100 , como se muestra en la Figura 31. Como el Tipo columna indica que el tipo de migración es Carga completa y replicación continua .


Figura 31: Carga completa completada

Además de las Tablas cargadas columna, la Tablas cargando , Mesas en cola y Tablas con errores también aparecen en la lista, como se muestra en la Figura 32.


Figura 32: Las tablas cargando, las tablas en cola y las tablas con errores son todas 0

En DynamoDB, el wlslog La tabla enumera siete elementos, como se muestra en la Figura 33. Otras dos tablas, awsdms_apply_exceptions y awsdms_full_load_exceptions , también se crean automáticamente. La tabla awsdms_apply_exceptions proporciona detalles de la excepción, incluidos el nombre y la descripción del error, la instrucción que se estaba ejecutando cuando se produjo el error, el nombre de la tarea, el propietario de la tabla, el nombre de la tabla y la hora de la excepción. La tabla awsdms_full_load_exceptions proporciona información sobre las excepciones generadas después de una carga completa.


Figura 33: La tabla wlslog enumera siete elementos

Haga clic en un _id para mostrar el documento (_doc valor de atributo), como se muestra en la Figura 34.


Figura 34: Documento para un elemento almacenado en DynamoDB

El filtro de DynamoDB se puede utilizar para filtrar la búsqueda. Como ejemplo, busque un _id específico especificando _id como campo, seleccionando String como tipo de campo, seleccionando '=' como operador de filtro y especificando el _id la búsqueda, como se muestra en la Figura 35. Haga clic en Iniciar búsqueda .


Figura 35: Aplicar un filtro

Los datos de la fila de la tabla de DynamoDB para _id especificado aparece en la lista (consulte la Figura 36).


Figura 36: Datos filtrados para _id específicos

Después de que una tarea de migración haya completado la migración de una base de datos, el estado de la tarea pasa a ser Detenido. , pero los puntos finales de migración aún están activos , como se muestra en la Figura 37.


Figura 37: Endpoints activos incluso después de que se completó la migración y se detuvo la tarea

Reanudación de una migración

Una tarea de migración que se ha detenido puede reiniciarse o reanudarse. Las siguientes son algunas de las razones para reanudar o reiniciar una tarea:

  • Se ha agregado un nuevo documento a una colección existente (también llamado tabla ) en la base de datos MongoDB fuente de DMS
  • Se ha agregado una nueva colección (tabla) en la base de datos MongoDB
  • La migración debe volver a ejecutarse con diferentes reglas de selección, lo que podría ser necesario, por ejemplo, si es necesario agregar un prefijo de tabla mediante una regla de transformación.

Como ejemplo, agregue tres documentos más al wlslog colección en Mongo CLI.

doc8 = {"timestamp":"Apr 8, 2014 7:06:23 PM PDT",
   "category":"Notice","type":"WebLogicServer",
   "servername":"AdminServer","code":"BEA-000360",
   "msg":"Server in RUNNING mode"}
doc9 = {"timestamp":"Apr 8, 2014 7:06:24 PM PDT",
   "category":"Notice","type":"WebLogicServer",
   "servername":"AdminServer","code":"BEA-000365",
   "msg":"Server Stopping"}
doc10 = {"timestamp":"Apr 8, 2014 7:06:25 PM PDT",
   "category":"Notice","type":"WebLogicServer",
   "servername":"AdminServer","code":"BEA-000361",
   "msg":"Server Resumed"}
db.wlslog.insert([doc8,doc9,doc10])

Como indica el resultado de la Figura 38, se agregan los tres documentos.


Figura 38: Agregar tres documentos más

Haz clic en Iniciar/Reanudar para reanudar una tarea detenida, como se muestra en la Figura 39.


Figura 39: Iniciar/Reanudar para tarea detenida

En Iniciar tarea cuadro de diálogo, se proporcionan dos opciones:Iniciar o Reiniciar . El Inicio La opción inicia la tarea y carga nuevas tablas o colecciones agregadas a la fuente DMS. El Inicio La opción también carga cualquier tabla que solo se haya cargado parcialmente en una ejecución anterior. El Inicio La opción no carga datos (nuevos o antiguos) en una tabla que ya se ha cargado completamente en la base de datos de destino. El Reinicio La opción reinicia una tarea y elimina los datos existentes en la base de datos de destino y reinicia la carga completa. En efecto, el Reiniciar La opción carga nuevos datos agregados a las tablas existentes además de cargar cualquier tabla nueva que se agregue en la fuente DMS. Debido a que agregamos nuevos datos a una tabla existente, debemos seleccionar Reiniciar opción y haga clic en Iniciar tarea , como se muestra en la Figura 40.


Figura 40: Reiniciando tarea

La tarea se reinicia, elimina las tablas existentes en la base de datos de destino y carga todos los datos de la base de datos de origen a la base de datos de destino. Cuando se completa la carga de datos, el estado de la tarea pasa a ser Carga completa. (ver Figura 41).


Figura 41: Carga completa

Haga clic en el botón Actualizar en DynamoDB, como se muestra en la Figura 42.


Figura 42: Actualización de datos en la tabla wlslog

El número de elementos enumerados es 10, como se muestra en la Figura 43, en lugar de los siete antes de reiniciar la tarea. Los tres elementos nuevos que agregamos hacen que los elementos sumen 10.


Figura 43: Listado de 10 elementos después de agregar nuevos elementos y actualizar datos

Los nuevos datos migrados se distinguen de los datos cargados en la primera ejecución por un prefijo diferente; los datos cargados en la 1 corrida tienen el prefijo 59401 en el _id y los datos cargados en la 2ª ejecución tienen el prefijo 59402 . El Filtro La opción se puede usar para enumerar solo los datos nuevos, como se muestra en la Figura 44.


Figura 44: Filtrado de datos para enumerar solo tres elementos nuevos

El estado de la tarea vuelve a ser Detenido después de que se hayan migrado los nuevos datos, como se muestra en la Figura 45.


Figura 45: El estado pasa a ser Detenido después de completar la Carga completa

Eliminar una migración

Para eliminar una migración, seleccione la migración y haga clic en Eliminar (ver Figura 46).


Figura 46: Eliminar

En Eliminar tarea cuadro de diálogo, haga clic en Eliminar , como se muestra en la Figura 47.


Figura 47: Eliminar verificación de tareas

El estado de la tarea pasa a ser Eliminando , como se muestra en la Figura 48, antes de que se elimine la tarea.


Figura 48: Eliminación de tareas

Eliminar una tarea no elimina los puntos finales de DMS que se están utilizando; esto significa que se puede crear una nueva tarea.

Conclusión

En dos artículos, analizamos la migración de una base de datos de MongoDB a tablas de DynamoDB mediante el servicio de migración de bases de datos de AWS.