Novedades en AWS DMS: Soporte de CDC nativo y puntos de control para una replicación de datos más eficiente
Con el último lanzamiento de AWS Database Migration Service (AWS DMS), ahora tienes acceso al soporte de CDC (Change Data Capture o Captura de Datos de Cambio) nativo y la capacidad de iniciar y detener la replicación de AWS DMS desde un punto de control específico. Al trabajar con esta nueva función, puedes utilizar puntos de control como un número de secuencia de registro (LSN) en Microsoft SQL Server, un número de cambio del sistema (SCN) en Oracle, y un punto de recuperación específico de AWS DMS. Como parte de este lanzamiento, también se incluye la habilidad de detener la replicación de datos y reiniciarla nuevamente utilizando la función de puntos de control de AWS DMS.
Con este lanzamiento, AWS DMS te permite usar el mismo mecanismo que la base de datos utiliza para la secuenciación de confirmaciones, que es el número de secuencia de registro (LSN). El lanzamiento también abre nuevos casos de uso de integración. Por ejemplo, ahora puedes usar Oracle Data Pump o SQL Server BCP para realizar la carga inicial de datos en una base de datos de destino y luego utilizar los números de secuencia de registro de DMS para iniciar la Captura de Datos de Cambio (CDC). Con la función de puntos de control lanzada junto con el soporte de punto de inicio nativo, puedes hibernar entornos y procesar los cambios desde la última vez que se realizó la replicación. Por ejemplo, puedes replicar los cambios una vez al día desde el último punto de control.
En el lanzamiento, se admiten las bases de datos Oracle, SQL Server y MySQL, y también Amazon Aurora con compatibilidad con MySQL. AWS DMW plantea dar soporte a otras bases de datos en el futuro.
AWS DMS: Tu herramienta para migrar bases de datos
Con AWS Database Migration Service, tienes a tu disposición una solución sencilla y segura para migrar tus bases de datos a AWS. Durante el proceso de migración, tu base de datos de origen permanece completamente operativa, minimizando el tiempo de inactividad de las aplicaciones que dependen de ella. AWS DMS te permite migrar tus datos hacia y desde la gran mayoría de bases de datos comerciales y de código abierto más utilizadas.
El servicio de AWS DMS te da la flexibilidad de realizar migraciones homogéneas, como de Oracle a Oracle, pero también migraciones heterogéneas entre diferentes plataformas, por ejemplo, de Oracle a Amazon Aurora o de Microsoft SQL Server a MySQL. Además, puedes aprovechar AWS DMS para transmitir tus datos a servicios como Amazon Redshift, Amazon DynamoDB y Amazon S3 desde cualquiera de las fuentes admitidas, incluyendo Aurora, PostgreSQL, MySQL, MariaDB, Oracle, SAP ASE, SQL Server y MongoDB. Además, AWS Database Migration Service también te brinda la capacidad de replicar datos de forma continua con alta disponibilidad.
La replicación continua se realiza mediante la captura de datos de cambio (CDC). Al utilizar CDC, puedes identificar y rastrear los datos que han cambiado, recibiéndolos como un flujo de cambios que tus aplicaciones descendentes pueden consumir y procesar. La mayoría de sistemas de bases de datos administran un registro de transacciones que registra todos los cambios en los datos y metadatos. AWS DMS lee este registro utilizando operaciones y funciones específicas del motor, capturando los cambios de forma no intrusiva.
Migraciones heterogéneas
Migraciones homogéneas
Te presentamos: Example Corp.
La empresa ficticia Example Corp. tiene un caso típico de uso para aprovechar las nuevas funciones de AWS DMS. Example Corp. cuenta con una base de datos Oracle de 10 TB y desea crear una copia de solo lectura de esta base de datos en Amazon Aurora con compatibilidad PostgreSQL para generación de reportes. Además, están considerando migrar esta aplicación a AWS, posiblemente utilizando Aurora con PostgreSQL en lugar de una base de datos Oracle. También necesitan probar la aplicación en AWS con sus datos reales de producción.
En este artículo, veremos cómo Example Corp. puede cumplir con estos requerimientos utilizando las nuevas características de AWS DMS.
Los registros de transacciones en bases de datos
Los registros (logs) de transacciones capturan cada cambio realizado en el sistema de la base de datos. Este registro contiene información suficiente sobre cada transacción ejecutada para que el servidor de la base de datos pueda recuperar el clúster de bases de datos. En caso de un fallo del servidor, esto se logra reproduciendo los cambios y acciones registrados en el log de transacciones. Además, el registro de transacciones también registra un número incremental llamado número de secuencia de registro o LSN.
En Oracle, los registros de transacciones se conocen como “redo logs” y el término número de cambio del sistema (SCN) para el número de secuencia de registro (LSN). Los archivos de redo log de Oracle, similares a los registros de transacciones, rastrean los redo records. Un redo record es un conjunto de vectores de cambio que describen los cambios realizados a un solo bloque en la base de datos. Un bloque de datos es la unidad más pequeña de datos utilizada por una base de datos.
Durante una transacción, un proceso de usuario solo es notificado del completamiento exitoso después de que los redo records necesarios se han descargado al disco. Cada vez que ocurre una confirmación, la base de datos asigna un SCN, similar a un LSN, para identificar los redo records para cada transacción confirmada.
Requisitos de reportes de Example Corp.
Example Corp. desea poner en marcha su aplicación de reportes en una base de datos Amazon Aurora con compatibilidad PostgreSQL y migrar su base de datos Oracle en las instalaciones a esa misma plataforma.
Para convertir el esquema utilizando AWS SCT y migrar los datos con AWS DMS, Example Corp. siguió las instrucciones del post “Una introducción rápida a la migración de una base de datos Oracle a Amazon Aurora con compatibilidad PostgreSQL” en el blog de AWS Database.
Example Corp. no migró los datos existentes de su base de datos de producción, sino que creó una copia de la base de datos en un momento dado. Configuraron los endpoints de origen a esa base de datos para migrar los cambios existentes. Este enfoque aseguró que la base de datos de producción no tuviera una carga adicional de AWS DMS durante la migración completa.
Si bien Example Corp. quería iniciar CDC en la base de datos Oracle utilizada por la aplicación, se dieron cuenta de que usar un tiempo específico para iniciar CDC no era lo ideal, debido al alto número de transacciones por segundo (TPS). El alto TPS hizo imposible encontrar un momento que asegurara que las transacciones no se duplicaran o se perdieran.
Ambiente de reportes de Example Corp.
Example Corp. también siguió las instrucciones del blog post mencionado anteriormente para convertir su esquema y migrar los datos a Aurora con compatibilidad PostgreSQL. Después de migrar los datos existentes, Example Corp. tuvo que cambiar el endpoint de origen para reflejar la base de datos de producción desde la cual realizar la CDC y migrar los datos. Tomaron los siguientes pasos para crear un ambiente de reportes en AWS sobre Aurora con compatibilidad PostgreSQL:
Crear una tarea DMS para CDC
En la Consola de Administración de AWS, primero crea una nueva tarea con el nuevo endpoint de origen reflejando la base de datos de producción y puntos de conexión de destino hacia Aurora con compatibilidad PostgreSQL. Selecciona la opción para replicar solo los cambios de datos. Dado que ya has migrado todos los datos usando DMS previamente, selecciona No hacer nada para el modo de preparación de la tabla de destino.
Obtener un SCN en Oracle
La siguiente consulta te proporciona el SCN más reciente desde el cual iniciar la replicación de la base de datos. DMS puede usar este SCN para iniciar el CDC en un momento específico.
SELECT SCN, scn_to_timestamp(scn) SCN_TimeStamp FROM ( SELECT dbms_flashback.get_system_change_number() as SCN FROM dual )
Configuración de tareas para CDC
A continuación, necesitarás configurar CDC para comenzar desde el SCN obtenido en el paso anterior.
En la sección Número de secuencia de registro (Log Sequence Number) , ingresa el SCN obtenido en el paso anterior de la base de datos Oracle. Una vez creada la tarea, puedes iniciarla y monitorearla desde la consola DMS.
Comenzar desde un número de secuencia de registro ayuda a garantizar que no se pierda ninguna transacción y que el punto de partida de CDC esté bien definido.
Entorno de migración de Example Corp.
Como parte del proceso de migración a Aurora con compatibilidad PostgreSQL desde Oracle Database, Example Corp. desea detener y reiniciar el proceso de CDC. Quieren hacer esto para poder probar su aplicación sin la carga del servicio de CDC. La función de punto de control en DMS hace posible detener y reiniciar la replicación sin depender del LSN o SCN de la base de datos de origen.
Para hacer esto, Example Corp. siguió el procedimiento descrito anteriormente en la creación de un entorno de grabación para crear una segunda réplica de la base de datos. Sin embargo, esta vez utilizaron la función de punto de control para detener y reiniciar la replicación.
Usando este enfoque, Example Corp. puede detener la replicación a una determinada hora del día o a una determinada hora de confirmación.
DMS garantiza que CDC se detenga a la hora particular del servidor o a la hora de confirmación descrita en la configuración de la tarea. DMS también escribe continuamente información de metadatos en una tabla en la base de datos de destino. Con los datos de este punto de control almacenados, Example Corp. puede apagar la instancia de replicación y las tareas para ahorrar costos.
Reinicio de CDC
Example Corp. desea replicar datos solo durante la noche y replicar solo los datos que hayan cambiado desde la última replicación.
Para lograr esto, Example Corp. primero ejecutó una consulta en la tabla de metadatos en la instancia de destino—awsdms_txn_state—para obtener los datos de punto de control. Luego, iniciaron una nueva instancia de replicación y crearon una tarea para comenzar la replicación desde el punto de control obtenido en el paso anterior, como se muestra en la siguiente captura de pantalla.
Hacer esto aseguró que solo pagaran por la instancia de replicación cuando se estaba realizando la replicación y que hibernaran el entorno en todos los demás momentos.
También puedes obtener información de punto de control como parte de los resultados de una llamada a la acción de la API describe-replication-tasks. Luego, simplemente filtras por tareas y buscas el punto de control para obtener esta información. Puedes recuperar el último punto de control cuando la tarea de replicación esté en un estado detenido o fallido.
Conclusión
Aunque los requisitos de Example Corp. eran migrar una base de datos de Oracle, AWS DMS puede trabajar tanto con bases de datos comerciales como de código abierto. DMS proporciona la misma funcionalidad para puntos de inicio nativos y puntos de control para ambos tipos de bases de datos.
En esta publicación, recorrimos cómo Example Corp. creó un entorno de informes utilizando el soporte nativo de SCN. También vimos cómo Example Corp., utilizando la nueva función de punto de control, ahorró costos ejecutando las instancias de replicación solo cuando lo deseaban y replicando solo los datos que habían cambiado desde la última vez.