En un conjunto de cuatro tutoriales, exploramos la migración de una instancia de base de datos MySQL a una base de datos PostgreSQL mediante AWS Database Migration Service (DMS). En el primer tutorial, "Migración de MySQL a PostgreSQL en AWS RDS, parte 1", presentamos DMS y creamos un usuario de IAM para DMS. En el segundo tutorial, Migración de MySQL a PostgreSQL en AWS RDS, parte 2, creamos instancias de MySQL y PostgreSQL en RDS y nos conectamos a las dos instancias. En este tutorial de continuación, crearemos una migración de DMS para realizar la migración. Este tutorial tiene las siguientes secciones:
- Crear una migración de DMS
- Creación de una instancia de replicación
- Creación de extremos de tareas de migración
- Crear una tarea de migración
- Conclusión
Crear una migración de DMS
En esta sección, crearemos un Servicio de migración de base de datos (DMS) para migrar la base de datos MySQL a la base de datos PostgreSQL. Una migración de DMS consta de los siguientes componentes:
- Instancia de replicación
- Puntos finales de la base de datos
- Tarea
Discutiremos la creación de cada uno de estos en las subsecciones, pero primero debe crear una migración de DMS. Navegue hasta el panel de DMS y haga clic en Crear migración. , como se muestra en la Figura 1.
Figura 1: Crear migración
Se inicia el asistente de DMS. Haga clic en Siguiente, como se muestra en la Figura 2.
Figura 2: Asistente de DMS
Creación de una instancia de replicación
A continuación, configure una instancia de replicación, que establece la conexión entre las bases de datos de origen y de destino, transfiere los datos y almacena en caché los cambios de datos que se producen durante la carga de datos inicial. Especifique una instancia de replicación Nombre y Descripción y seleccione una clase de instancia (el valor predeterminado es dms.t2.medium), como se muestra en la Figura 3. Seleccione una VPC y seleccione la opción para configurar alta disponibilidad con Mult-Az; la configuración predeterminada se establece en "No". Seleccione la opción Accesible públicamente .
Figura 3: Configuración de una instancia de replicación
En Avanzado , mantenga la configuración predeterminada para almacenamiento asignado (50 GB), grupo de subred de replicación, zona de disponibilidad (sin preferencia) y grupo de seguridad de VPC (usar predeterminado), como se muestra en la figura 4. Seleccione la clave maestra de KMS (dbms) creada anteriormente en Configuración del entorno sección.
Figura 4: Configuración de ajustes avanzados para la instancia de replicación
Haga clic en Siguiente, como se muestra en la Figura 5.
Figura 5: Siguiente
La instancia de replicación comienza a crearse, como se muestra en el mensaje de la Figura 6. A continuación, se deben configurar las conexiones de la base de datos de origen y de destino, lo que lograremos en la siguiente subsección.
Figura 6: La instancia de replicación comienza a crearse
Creación de extremos de tareas de migración
La instancia de replicación puede tardar unos minutos en crearse. Los puntos finales de migración se pueden agregar mientras se crea la instancia de replicación. Seleccione el motor de origen como "mysql", como se muestra en la Figura 7.
Figura 7: Selección del motor de origen
Seleccione Motor de destino como "postgres", como se muestra en la Figura 8.
Figura 8: Selección del motor de destino
En Nombre del servidor , especifique el Punto final para la instancia de base de datos de RDS para la base de datos eliminando :port sufijo. Para una base de datos MySQL, el punto final de RDS es mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com:3306 . Por lo tanto, especifique el Servername como mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com , como se muestra en la Figura 9. Para una base de datos PostgreSQL en RDS, el Endpoint es postgresdb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com:5432; por lo tanto, especifique el Servername como postgresdb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com . Especifique el puerto por separado para las bases de datos de origen y de destino:3306 para la base de datos MySQL y 5432 para Postgres.
Figura 9: Especificación de nombre de servidor y puerto para bases de datos de origen y de destino
Desplácese hacia abajo para ver más opciones de configuración de terminales, como se muestra en la Figura 10. Seleccione modo SSL. como ninguno para las bases de datos de origen y de destino. Especifique el Nombre de usuario y la Contraseña tal como se configuraron al crear las instancias de base de datos de RDS. Especifique el nombre de la base de datos de PostgreSQL (postgresdb), también como se configuró al crear la instancia de base de datos de RDS.
Figura 10: Especificación del modo SSL, nombre de usuario, contraseña y SID o nombre de la base de datos
En la configuración avanzada, se pueden especificar atributos de conexión adicionales disponibles para la base de datos MySQL y la base de datos PostgreSQL, pero no se requiere ninguno para este tutorial. Seleccione la clave maestra de KMS (dbms) para las bases de datos de origen y de destino (consulte la Figura 11). Para probar los extremos de DMS, la Ejecutar prueba se proporcionan botones, como se muestra en la Figura 11. El botón Ejecutar prueba los botones están atenuados o deshabilitados hasta que se crea la instancia de replicación.
Figura 11: Configuración de ajustes avanzados para extremos de DMS
Cuando se ha creado la instancia de replicación, aparece el mensaje "Instancia de replicación creada correctamente", como se muestra en la Figura 12.
Figura 12: Instancia de replicación creada con éxito
Una vez que se ha creado la instancia de replicación, el Ejecutar prueba los botones se habilitan. Haz clic en Ejecutar prueba , como se muestra en la Figura 13, para cada base de datos.
Figura 13: Ejecutar prueba
Las conexiones comienzan a probarse, como lo indica el mensaje "Probando la conexión del punto final" en la Figura 14.
Figura 14: Prueba de conexiones de punto final
Si las conexiones de puntos finales se configuraron según lo requerido, debería aparecer el mensaje "Conexión probada correctamente", como se muestra en la Figura 15. Haga clic en Siguiente.
Figura 15: Conexión probada con éxito
Crear una tarea de migración
Habiendo creado una instancia de replicación y puntos finales de base de datos, a continuación crearemos una tarea de migración para conectarnos a los puntos finales y transferir los datos. En Crear tarea asistente, especifique un Nombre de tarea (también se especifica un valor predeterminado) y agregue una descripción de la tarea (consulte la Figura 16). Seleccione la opción para Iniciar tarea al crear .
Figura 16: Asistente para crear tareas
Los puntos finales de origen y destino y la instancia de replicación se configuraron previamente y no se pueden modificar al crear una tarea. Seleccione un tipo de migración , que enumera tres opciones, como se muestra en la Figura 17.
- Migrar datos existentes :migra los esquemas, tablas y datos de tablas existentes que ya existen en la base de datos de origen, pero no migra los cambios posteriores de forma continua.
- Migrar datos existentes y replicar cambios continuos :migra los esquemas, tablas y datos de tablas existentes que ya existen en la base de datos de origen y también migra los cambios posteriores de forma continua.
- Replicar solo cambios de datos :no migra esquemas, tablas ni datos existentes y migra solo los cambios de datos.
Seleccione Migrar datos existentes como se muestra en la Figura 17. Para migrar los cambios, que es lo que proporcionan las otras dos opciones, el tiempo de retención del registro binario en la instancia de base de datos MySQL debe aumentarse a 24 horas o más.
Figura 17: Seleccionando Tipo de migración como Migrar datos existentes
A continuación, configure la Configuración de tareas . El modo de preparación de la tabla de destino La configuración se aplica a las tablas en la base de datos de destino y ofrece tres opciones:
- No hacer nada :Los datos y metadatos de las tablas de destino no se modifican
- Soltar mesas en el objetivo :Las tablas existentes, si las hay, se descartan y se crean nuevas tablas
- Truncar :las tablas se truncan, lo que implica que los datos de la tabla se eliminan pero los metadatos de la tabla no se modifican. Incluir columnas LOB en la replicación La configuración se aplica a las columnas de tipo de datos LOB en la base de datos de origen y proporciona tres opciones:
- No incluir columnas LOB :las columnas LOB están excluidas de la migración
- Modo LOB completo :Migra LOB completos independientemente del tamaño; Los LOB se migran en fragmentos, lo que podría ralentizar el proceso de migración
- Modo LOB limitado :Trunca los LOB al tamaño especificado en el tamaño máximo de LOB (kb)
Seleccione Modo de preparación de mesa de destino como No hacer nada, como se muestra en la Figura 18. Seleccione Incluir columnas LOB en la replicación como modo LOB limitado y especifique Tamaño máximo de LOB como 32 kb (predeterminado). Seleccione Habilitar registro opción.
Figura 18: Configuración de tareas
A continuación, agregue reglas de selección y reglas de transformación en Asignaciones de tablas , como se muestra en la Figura 19. Las asignaciones de tablas se pueden agregar mediante el Guiado interfaz de usuario o como JSON . Se recomienda la interfaz de usuario guiada. Se debe agregar al menos una regla de selección y las reglas de transformación son opcionales. Se aplican reglas de selección, mientras que la selección de esquemas, tablas y columnas de la base de datos de origen y las reglas de transformación se aplican antes de que los esquemas, tablas y columnas se migren a la base de datos de destino.
Figura 19: Asignaciones de tablas
El esquema se puede seleccionar de El nombre del esquema es desplegable o, si no aparece ninguno, seleccione Introducir un esquema y especifique un esquema en El nombre del esquema es como campo. La Acción el menú desplegable muestra dos opciones:Incluir y Excluir . La opción Incluir incluye las selecciones realizadas para esquemas y tablas y la opción Excluir excluye los esquemas y tablas. Las exclusiones se procesan después de las incluidas. No es necesario seleccionar todos los esquemas ni todas las tablas de un esquema.
Añadiremos la siguiente regla de selección:
- Incluye todos los esquemas y todas las tablas de la base de datos de origen
Para la regla de selección, seleccione Introducir un esquema y especifique El nombre del esquema es como % , que selecciona todos los esquemas en la base de datos de origen, como se muestra en la Figura 20. Especifique El nombre de la tabla es como como % , que selecciona todas las tablas en los esquemas seleccionados. Seleccione Acción como Incluir .
Figura 20: Configuración de una regla de selección
Haz clic en Añadir regla de selección (ver Figura 21).
Figura 21: Agregar una regla de selección
Se agrega una regla de selección, como se muestra en la Figura 22. Cuando se crea la tarea, un rol de IAM dms-cloudwatch-logs-role se crea para permitir que DMS acceda a CloudWatch.
Figura 22: Regla de selección agregada
A continuación, agregue una regla de transformación. Para ello, haga clic en añadir regla de transformación enlace, como se muestra en la Figura 23.
Figura 23: Añadir regla de transformación
Una regla de transformación tiene configuraciones para el Objetivo . La regla tiene tres opciones, como se muestra en la Figura 24.
- Esquema
- Mesa
- Columna
Dónde especifica un subconjunto de los objetos seleccionados por las reglas de selección. La Acción es la transformación que se va a aplicar y las siguientes opciones están disponibles:
- Renombrar a (disponible para objetos de Esquema y Tabla)
- Eliminar columna (disponible para Columnas)
- Hacer minúsculas (disponible para esquemas, tablas y columnas)
- Hacer mayúsculas (disponible para esquemas, tablas y columnas)
- Añadir prefijo (disponible para Esquemas, Tablas y Columnas)
- Eliminar prefijo (disponible para esquemas, tablas y columnas)
Figura 24: Configuración de reglas de transformación
PostgreSQL utiliza minúsculas en esquemas, tablas y columnas. Añadiremos tres reglas de transformación:
- Haga todos los esquemas en minúsculas
- Pon todas las tablas en minúsculas
- Hacer todas las columnas en minúsculas
Para agregar la primera de estas reglas de transformación, seleccione Objetivo como Esquema como se muestra en la Figura 25. Especifique El nombre del esquema es como % . Seleccione Acción como Hacer minúsculas y haga clic en Agregar regla de transformación .
Figura 25: Agregar una regla de transformación
Se agrega una regla de transformación (consulte la Figura 26). Para agregar otra regla de transformación, haga clic en agregar regla de transformación enlace de nuevo.
Figura 26: Regla de transformación agregada
Seleccione Objetivo como Mesa , como se muestra en la Figura 27. Especifique El nombre del esquema es como % . Seleccione El nombre de la tabla es como % . Seleccione Acción como Hacer minúsculas y haga clic en Agregar regla de transformación .
Figura 27: Agregar una regla de transformación para cambiar el nombre de una tabla
Seleccione Objetivo como Columna , como se muestra en la Figura 28. Especifique El nombre del esquema es como % . Seleccione El nombre de la tabla es como % . Seleccione El nombre de la columna es como % . Seleccione Acción como Hacer minúsculas y haga clic en Agregar regla de transformación .
Figura 28: Agregar una regla de transformación para poner el nombre de la columna en minúsculas
Las tres reglas de selección y una regla de transformación agregadas se muestran en la Figura 29. Cuando se ejecuta la tarea, las reglas de selección se aplican antes que las reglas de transformación. Para la configuración avanzada, haga clic en Configuración avanzada , como se muestra en la Figura 29.
Figura 29: Reglas de selección y reglas de transformación
En Configuración avanzada , seleccione Configuración de la tabla de control y especifique Crear tabla de control en el destino usando el esquema como público , como se muestra en la Figura 30, y haga clic en Listo.
Figura 30: Configuración del esquema de la tabla de control en Target
Se agrega la configuración Avanzada (consulte la Figura 31).
Figura 31: Configuración avanzada
Después de configurar la tarea, haga clic en Crear tarea , como se muestra en la Figura 32, para crear la tarea.
Figura 32: Crear tarea
Se crea una tarea de migración, como se muestra en la Figura 33. Inicialmente, el estado de la tarea es "Creando".
Figura 33: Tarea de migración
Una tarea puede tener uno de los estados discutidos en la Tabla 1.
Estado | Descripción |
Creando | La tarea se está creando. |
Listo | La tarea está lista para iniciarse y ejecutarse. Por lo general, sigue el estado "Creando". |
Inicio | La tarea se está iniciando, tiempo durante el cual la tarea se conecta con la instancia de replicación y los extremos de la base de datos. Se aplican reglas de selección y transformación. |
Corriendo | La tarea se está ejecutando, lo que implica que la tarea está migrando la base de datos. |
Carga completa | La tarea completó la carga (migración) de la base de datos. |
Error | La tarea ha fallado. |
Error | Ha ocurrido un error durante la migración. Es posible que algunos de los esquemas y tablas se hayan migrado correctamente, pero al menos un esquema o tabla no se pudo migrar. |
Modificando | La tarea se está modificando, generalmente después de que un usuario haya modificado la tarea. |
Detener | La tarea se está deteniendo, lo que generalmente ocurre después de que el usuario haya seleccionado detener una tarea. |
Detenido | La tarea se detuvo, lo que podría deberse a que un usuario detuvo una tarea o porque se usó un tipo de migración de Migrar datos existentes y replicar cambios continuos y la tarea completó la carga inicial . |
Eliminar | La tarea se está eliminando, lo que se debe a que el usuario ha eliminado la tarea. |
Tabla 1: Estados de tareas
Se crean dos roles de IAM, uno para CloudWatch y otro para VPC, como se muestra en la Figura 34.
Figura 34: Funciones de IAM para DMS
Conclusión
En este tercer tutorial sobre la migración de una instancia de base de datos MySQL en RDS a una instancia de base de datos Postgres en RDS, creamos una migración DMS que incluye instancia de replicación, puntos finales de migración y tarea de migración. En el cuarto tutorial, analizaremos la ejecución de la migración de DMS para realizar la migración y evaluar los resultados.