Blog de Amazon Web Services (AWS)

Migración de Microsoft SQL Server a Amazon Aurora compatible con MySQL usando Schema Conversion Tool y Database Migration Service

Por Miguel Soto, Solutions Architect AWS México.

 

 

La migración de una base de datos enfrenta retos que pueden complicar el proceso. Resulta de gran valor apoyarse en herramientas que permitan minimizar el esfuerzo y los riesgos para hacerlo con mayor rapidez y posibilidad de éxito.

Esta  publicación describe los pasos necesarios para realizar la migración utilizando las herramientas AWS Schema Conversion Tool (SCT) y AWS Database Migration Service (DMS) tomando como origen una base de datos en Microsoft SQL Server para migrar a Amazon Aurora compatible con MySQL. Revisaremos también algunos temas específicos de SQL server que se pueden presentar y como resolverlos.

El proceso consta esencialmente de dos etapas:

  1. La conversión del esquema de la base de datos de origen para poder construirlo en la base de datos de destino en Aurora con AWS SCT.
  2. La migración de los datos utilizando en nuestro caso AWS DMS.

 

 

Schema Conversion Tool

En el ejemplo mostrado el origen es una base de datos en SQL Server en una instancia EC2, es posible que el origen se encuentre en el sitio del cliente y en este caso se utilizaría la información correspondiente para la conexión. En ambos casos debe asegurarse de que la instancia se encuentra accesible para conexión por parte del SCT y DMS.

Se asume la existencia de la instancia de Aurora como destino para la migración. Para obtener instrucciones, consulte Creación de una instancia de Amazon Aurora. Será necesario proveer el Endpoint correspondiente a la instancia que puede encontrarse en la consola de AWS dentro del servicio Amazon RDS, opción Databases, en la pestaña Connectivity & Security como se muestra en la siguiente imagen:

 

 

Para asegurarnos de tener el acceso a la base de datos de destino hay que verificar el grupo de seguridad de la instancia de Aurora y adicionar las reglas Inbound necesarias para permitir la comunicación con los servicios como se muestra en el siguiente ejemplo:

 

 

 

Etapa 1. Conversión del esquema usando SCT

La Herramienta de Conversión de Esquemas de AWS (AWS SCT) es una aplicación independiente descargable que proporciona una interfaz de usuario basada en proyectos. AWS SCT está disponible para Fedora Linux, macOS, Microsoft Windows y Ubuntu Linux versión 15.04. AWS SCT solo es compatible con los sistemas operativos de 64 bits. AWS SCT también instala Amazon Corretto JDK 11.

 

 

Utilice el instalador correspondiente a su sistema operativo, para obtener mas informacion consulte Schema Conversion Tool de AWS . Para este ejemplo descargaremos la herramienta para Microsoft Windows.  Todos los archivos comprimidos tienen la extensión .zip. Cuando extraiga el archivo del instalador de AWS SCT, tendrá el formato adecuado para su sistema operativo.
Se descomprime el archivo y ejecuta la instalación:

 

 

Al terminar la instalación, abrir el SCT y crea un proyecto de migración:

 

 

Especifica los valores de configuración de la base de datos de origen. Prueba la conexión y da clic en el botón Next.

 

 

Selecciona el esquema de la base de datos a migrar y da clic en el botón Next

 

 

Una vez terminada la revisión, acceda al reporte de la evaluación para la migración de base de datos. SCT convertirá automáticamente tanto como sea posible y reportará lo que no puede convertir. Dar clic en el botón Next.

 

 

Despues de validar el reporte y para continuar con la migración se debe de especificar la configuración de la base de datos destino, probar conexión y dar clic en el botón Finish.

 

 

Seleccione la opción View en la barra del menú y luego Assesment Report view, posteriormente selecciona la pestaña de “Action items” para revisar los objetos que no pueden convertirse y ver que tantos cambios manuales se necesitan.

 

 

Los cambios manuales se pueden realizar de la siguiente forma:

  1. Modificar en el esquema fuente de la base de datos de SQL server para que SCT pueda convertirlos a la base de datos Aurora MySQL.
  2. Modificar los scripts de SCT antes de aplicarlos a la base de datos destino de Aurora MySQL.

En la siguiente imagen, como ejemplo el SCT nos informa que MySQL no soporta el procedimiento PRINT y la documentación indica la sustitución por el enunciado SELECT.

 

 

Una vez realizada la modificación generamos nuevamente el reporte de conversión el cual muestra ahora 100% de compatibilidad.

 

 

Elegir en el panel de la base de datos de origen el esquema a convertir, en este ejemplo dms_sample, clic derecho y “Convert schema”. Responder “Yes” en la notificación sobre el reemplazo de objetos que podrían existir en la base de datos.

 

 

En el panel de la base de datos de destino dar clic derecho en el esquema en donde se desea aplicar la creación de objetos de SCT. Responder “Yes” a la notificación referente a la aplicación del esquema sobre la base de datos.

 

 

Para validar que los objetos se han creado en la base de datos de destino se puede expandir el esquema en el panel correspondiente para ver la lista de tablas que corresponden a las tablas de la base de datos de origen.

 

 

Etapa 2. Migración de datos usando DMS

La migración de datos puede llevarse a cabo con el servicio DMS. Existe la opción de migrar los datos disponibles en el momento de la migración y adicionalmente replicar de manera continua los cambios en la base de datos de origen hacia la base de datos de destino.

 

 

Para facilitar el paso de datos es recomendable deshabilitar las restricciones de llaves foráneas de esta manera las dependencias de datos entre tablas no obstaculizan la carga de datos. Para esto usaremos el SQL Server Management Studio.

 

 

Configurar la base de datos de destino, probar la conexión y clic en OK

 

 

En este ejemplo las validaciones de llaves foráneas son eliminadas desde el editor de SQL de MySQL Workbench con las sentencias DROP FOREIGN KEY. Posterior a la carga de datos las llaves foráneas podrían crearse nuevamente. También existe la posibilidad de deshabilitar la validación de llaves foráneas y habilitarlas al termino de la migración de datos. La información sobre este proceso puede consultarse aquí.

 

 

En la consola de AWS utilizar el servicio Data Management Service, la opción Replication instances y dar clic en Create replication instance

 

 

Esperar a que se haya creado la instancia de replicación.

En la consola de AWS DMS en el panel izquierdo dar Clic en la opción Endpoints e introducir la información correspondiente, primero para el origen:

 

 

Dar clic en Create endpoint, posteriormente crear el Endpoint para el destino:

 

 

A continuación, crear una tarea de migración. Seleccionar “Database migration tasks” en el panel del servicio DMS en la consola y dar clic en “Create task”. En el ejemplo se selecciona “Migrate existing data” como tipo de migración. Otras alternativas son: “Migrate existing data and replicate ongoing changes” y “Replicate data changes only”. Las cuales podrían utilizarse dependiendo del caso.

 

 

Indicar la opciones deseadas para la configuración de la tarea.

 

 

Continuar con las opciones del mapeo de tablas.

 

 

Es posible agregar reglas de transformación como en el ejemplo se utiliza para cambiar el nombre del esquema de destino. Y finalmente indicar si se desea que la tarea se ejecute de inmediato al ser creada o posteriormente en forma manual.

 

 

La tarea puede revisarse para ver el grado de avance y una vez concluida nos permite ver detalles como las estadísticas correspondientes a la migración de las tablas como se muestra a continuación.

 

Hallazgos

Diversas pruebas de migración mostraron fallas para convertir procedimientos almacenados que incluían sentencias GO TO las cuales no son soportadas en Aurora MySQL. Aunque existe una nota técnica que ofrece una alternativa de código que puede consultarse aquí. Una revisión más profunda permite identificar que los procedimientos almacenados involucrados no eran parte del esquema original sino que SQL server los agrega para funcionamiento de sus herramientas (ver más información aquí) y no son necesarios en MySQL así que puede simplemente ignorarse su creación en la base de datos de destino

 

 

Conclusión

Amazon aurora es una base de datos completamente administrada por Amazon Relational Database Service (RDS), simplificando en gran medida las tareas administrativas. Amazon Aurora es hasta cinco veces más rápida que las bases de datos MySQL estándar y tres veces más rápida que las bases de datos PostreSQL estándar a una décima parte del costo de las bases de datos comerciales. Las herramientas AWS Schema Conversion Tool (SCT) y AWS Database Migration Service (DMS) te ayudarán a comenzar a aprovechar más rápido los beneficios de migrar a Amazon Aurora.

 

 

 


Sobre el autor

Miguel Soto es Telco Senior SA  de WWPS Solution Architecture en AWS.

 

 

 

 

 

Conozca los distintos tipos de bases de datos disponibles, las diferencias entre los servicios estándar administrados de base de datos y las bases de datos nativas en la nube con el volante de inercia de datos.