spinner

¿Conoces AWS Database Migration Service (DMS)? Tres claves para aprender a usar la herramienta

¿Quieres saber qué es AWS Database Migration Service? (DMS) Es el servicio de Amazon creado para migrar bases de datos (BBDD), tanto entre BBDD iguales (Oracle a Oracle) como entre dos diferentes (Oracle a Redshift) de manera autogestionada.

Fuente: AWS

 

Este servicio es muy útil, ya que es capaz de hacer la migración completa entre ambas bases de datos (Full load) así como de gestionar la replicación continua (Ongoing replication) en la misma. Por decirlo de otra manera: AWS Database Migration Service realiza tanto la carga inicial como la sincronización en tiempo real de ambas BBDD.

Como hemos trabajado con esta base de datos en algunos proyectos y nos ha parecido una herramienta muy útil, en este artículo nos gustaría repasar la configuración básica de esta herramienta y algunos de sus posibles usos, para que puedas comenzar a empezar a usar DMS y hacerte así la vida más fácil en tus proyectos.

Clave 1: elementos que componen DMS

Lo primero es lo primero y el paso principal para conocer esta herramienta es explicar los elementos básicos que forman un proceso de DMS. Para que nos hagamos una idea, son los siguientes:

1. BBDD: Tanto de origen como de destino.

2. Endpoint: Se necesita un punto de acceso de origen y uno de destino. Son configurados de manera independiente y tienen características distintas que se adecuan al motor de BBDD que tiene cada uno respectivamente.

3.Instancia de replicación: Es la máquina que realiza la réplica propiamente dicha: una EC2 de tipo t2 y c4. A la hora de realizar la carga completa es importante el tipo de máquina, ya que es limitante.

4. Tareas de réplica: Es donde se indica que tablas van a ser migradas y qué transformaciones deben de producirse entre el origen y el destino. Se definen en esta tarea también configuraciones sobre el paralelismo a la hora de cargar las tablas y el tipo de replicación en el cluster.

Fuente: AWS

Vamos a ver con detalle cada uno de estos elementos para conocer cómo funcionan.

1. Endpoints: donde se configuran los puntos de acceso
Los puntos de acceso se configuran desde el apartado “Endpoints” de la consola de DMS, desde ahí podremos crear o editar los endpoints. Existen endpoints de tipo origen o destino, y permiten configurar la conexión con sus correspondientes BBDD. La configuración de un endpoint consta de tres partes: la básica, la avanzada y la prueba del endpoint. Esta última parte está disponible para realizarla en cualquier momento.

  • Endpoint type: Define si es un endpoint de origen (Source) o de destino (Target).
  • Endpoint identifier: Identificador del endpoint.
  • Source engine: Motor de la base de datos (Oracle, en este caso).
  • Server name: IP/DNS del servidor de la base de datos.
  • Port: Puerto de la base de datos.
  • SSL: Si la conexión es SSL o no.
  • Username: Usuario de acceso a la base de datos.
  • Password: Contraseña del usuario.
  • SID/Service Name: SID o nombre de la base de datos. Solo aplica si el motor es Oracle.

2. Instancias de replicación: el apartado en el que configurar estas instancias
En la consola de DMS podemos encontrar el apartado “Replication Instances”, en el cual podremos configurar las instancias de replicación. Los parámetros para realizar esta tarea son los habituales que podemos encontrar cuando definimos una EC2. Os dejo a continuación los parámetros más importantes:

  • Nombre: Nombre de la instancia. Identifica a la instancia en el listado.
  • Tipo de instancia: Tipo de instancia que define las características de la misma. Se pueden ver las especificaciones de cada tipo en el listado completo de la documentación de AWS: https://aws.amazon.com/es/ec2/instance-types/.
  • VPC: Define la red privada en la que se va a localizar la instancia de réplica. Debe tener conectividad con el endpoint de destino y de origen.
  • Multi-AZ: Proporciona alta disponibilidad, se recomienda sobre todo para entornos productivos y cargas completas largas (o réplicas continuas).
  • KMS master key: Permite definir una clave de KMS para cifrar los datos que se migren.

3. Tareas de réplica: dónde se definen las tablas, transformaciones y políticas que se van a utilizar.
Las tareas se configuran desde el apartado tasks de la consola de DMS. Una tarea define las tablas que se van a replicar, las transformaciones a aplicar, así como las políticas de réplica que se van a utilizar. Estas tareas pueden pararse desde el panel de DMS usando el botón stop y eliminar la instancia, si aplicase, para minimizar el coste (en caso de no estar en uso). Es importante comentar que el proceso de creación de una tabla tiene tres apartados: la configuración básica, la configuración avanzada y la definición de tablas.

Clave 2: ¿cómo definir los mapeos de las tablas?

Lo primero…definir las tablas
Tras haber definido la tarea, o durante una modificación de la misma, podemos definir los mapeos de las tablas. Para ello utilizaremos selecciones y transformaciones pudiendo generarlas tanto de manera guiada como mediante la generación de un fichero JSON con las propiedades. Las reglas definidas se utilizarán tanto para la carga completa como para la sincronización en tiempo real.

¿Qué reglas de selección usamos para definir las tablas?Las reglas de selección definen qué tablas se van a seleccionar y qué acción se realizará sobre ella. La forma de una regla de selección es “where schema name is like <schema> and table name is like <table>, include> por lo que a la hora de añadir una regla de selección deben definirse los siguientes valores:

  • Schema name is: Define el nombre del esquema. Acepta el valor % para indicar cualquier valor, pudiendo cargar todos los esquemas poniendo sólo %.
  • Table name is like: Define el nombre de la tabla. Acepta el valor % para indicar cualquier valor, pudiendo cargar todas las tablas poniendo sólo %.
  • Action: Acciones a realizar (inclusión o exclusión de tablas).
  • Filter: Permite definir filtros condicionales a los datos que se replican (una columna con un valor determinado, entre unos valores, etc).

¿Qué reglas de transformación usamos para definir las tablas? Las reglas de transformación permiten definir qué cambios realizaremos sobre el esquema, las tablas o las columnas. Para definir una transformación deben establecerse los siguientes valores:

  • Target: Elemento al que se aplica la transformación (esquema, tabla o columna).
  • Schema name is: Nombre del esquema
  • Table name is like: Nombre de la tabla.
  • Column name is like: Nombre de la columna.
  • Action: Acción a realizar (eliminar columna, convertir a minúscula, eliminar prefijo,cambiar el nombre del esquema…)

Lo segundo: añadir una nueva tabla a una tarea activa

Si se quisiese añadir más tablas a una migración ya creada y en funcionamiento deberíamos seguir los siguientes pasos:

  • Detener la tarea (botón “stop”).
  • Modificar la tarea (botón “modify”). En la sección de “Table mappings”, añadir una regla de selección con la nueva tabla.
  • Iniciar la tarea (botón “start/resume”) asegurando que se inicia en modo “start” si se quiere que continúe donde lo dejó o en el modo “restart”. Existe una opción que inicia automáticamente la tarea cada vez que es modificada.

En caso de seleccionar modo “start” se continuará la tarea por donde se quedó. Por ejemplo, cargando la tabla nueva mientras continúa con el CDC de las demás, si nuestra tarea fuese “Full load and Ongoing replication”. Si arranca en modo “Restart”, reiniciará completamente la tarea, conllevando una carga completa si usamos el ejemplo anterior.

¡AVISO! Al leer el CDC de un log es importante que no se produzca este paro/inicio durante una rotación del mismo, ya que podría fallar la tarea y ser necesaria un reinicio completo (Full load).

La fase de monitorización
A la hora de monitorizar la tarea de DMS, si se ha habilitado logging durante la creación de la tarea, puede encontrarse un log completo de la actividad en el apartado “Logs”.

Se pueden controlar distintas métricas y una básica sería controlar el estado de la tarea, que indica la situación general de la misma. Repasamos algunos de los valores que te puedes encontrar.

Fuente: elaboración propia

Clave 3: para finalizar…algunos consejos

La evolución de las carga de las tablas se puede encontrar en los detalles de la tarea,  en la pestaña Table statistics. Nos muestra en este apartado tanto las filas cargadas en cada tabla durante la carga completa, como las actualizaciones, inserciones y eliminaciones realizadas en el CDC. Podemos observar también el estado de carga de cada una de las tablas:

Fuente:elaboración propia

Otras métricas de la instancia de réplica, así como de la propia tarea de réplica,  interesantes de revisar son aquellas que permiten medir el uso de CPU, memoria, cantidad de cambios o filas generadas en origen o en destino, la latencia, etc. Se puede acceder de forma individual a cada una de ellas desde el apartado “Task monitoring” del detalle de la tarea, o desde la sección de métricas de DMS en el servicio CloudWatch de Amazon.

En este último caso, las métricas a evaluar se encuentran en la sección “ReplicationInstanceIdentifier, ReplicationTaskIdentifier”, para poder filtrar una instancia de replicación o tarea concreta. Se puede encontrar un listado completo de las métricas disponibles (y su significado) de la instancia de réplica y de la tarea de réplica en la documentación oficial de AWS.

¡Y hasta aquí esta primera aproximación!

Terminamos este primer acercamiento a AWS Database Migration System (DMS), una herramienta con la que hemos obtenido muy buenos resultados y que os puede resultar muy útil a la hora de migrar y replicar las bases de datos de origen.

Más adelante volveremos a la carga con otro artículo, en el que nos centraremos en contar nuestra experiencia con la configuración avanzada opcional, pensada para mejorar los rendimientos.

Imagen: Shutterstock

¿Quieres saber que más cosas hacemos en BBVA Next Technologies?

Utilizamos cookies propias y de terceros para mejorar nuestros servicios, brindarle una grata experiencia y mostrar a los usuarios publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continúa navegando por este sitio web, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información accediendo a nuestra política de cookies aquí.