Tutorial: Migración de RDS PostgreSQL a Azure Database for PostgreSQL en línea mediante DMS

Importante

Se recomienda usar el nuevo servicio de migración en Azure Database for PostgreSQL para una experiencia de migración más simplificada y eficaz. Este servicio simplifica el proceso al admitir una variedad de entornos de origen, lo que garantiza una transición sin complicaciones a Azure Database for PostgreSQL.

Puede utilizar Azure Database Migration Service para migrar bases de datos de una instancia de PostgreSQL de RDS a Azure Database for PostgreSQL mientras la base de datos de origen permanece en línea durante la migración. En otras palabras, la migración se puede completar con un tiempo de inactividad mínimo para la aplicación. En este tutorial, va a migrar la base de datos de ejemplo DVD Rental de una instancia de PostgreSQL 9.6 de RDS a Azure Database for PostgreSQL mediante la actividad de migración en línea de Azure Database Migration Service.

En este tutorial, aprenderá a:

  • Migre el esquema de ejemplo mediante la utilidad pg_dump.
  • Crear una instancia de Azure Database Migration Service.
  • Crear un proyecto de migración mediante Azure Database Migration Service.
  • Ejecutar la migración.
  • Supervisar la migración
  • Realizar la migración total.

El uso de Azure Database Migration Service para realizar una migración en línea requiere la creación de una instancia basada en el plan de tarifa Premium. Para más información, consulte la página de precios de Azure Database Migration Service. El disco se cifra para impedir el robo de datos durante el proceso de migración.

Importante

Para disfrutar de una experiencia de migración óptima, Microsoft recomienda crear una instancia de Azure Database Migration Service en la misma región de Azure que la base de datos de destino. Si los datos se transfieren entre diferentes regiones o ubicaciones geográficas, el proceso de migración puede verse afectado y pueden producirse errores.

Sugerencia

En Azure Database Migration Service, puede migrar las bases de datos sin conexión o mientras están en línea. Con una migración sin conexión, el tiempo de inactividad de la aplicación se inicia cuando comienza la migración. Para limitar el tiempo de inactividad al tiempo necesario para la transición al nuevo entorno cuando finalice la migración, use una migración en línea. Se recomienda probar una migración sin conexión para determinar si el tiempo de inactividad es aceptable. Si el tiempo de inactividad esperado no es aceptable, realice una migración en línea.

En este artículo se describe cómo realizar una migración en línea de una instancia local de PostgreSQL a Azure Database for PostgreSQL.

Prerrequisitos

Para completar este tutorial, necesita:

  • Descargue e instale PostgreSQL community edition 9.5, 9.6 o 10. La versión del servidor PostgreSQL Server de origen debe ser la 9.5.11, 9.6.7, 10 o una posterior. Para más información, consulte el artículo acerca de las versiones de base de datos admitidas de PostgreSQL.

    La versión de Azure Database for PostgreSQL de destino debe ser igual o posterior a la versión de RDS PostgreSQL. Por ejemplo, RDS PostgreSQL 9.6 solo puede migrarse a Azure Database for PostgreSQL 9.6, 10 u 11, pero no a Azure Database for PostgreSQL 9.5.

  • Creación de una instancia de Azure Database for PostgreSQL: servidor flexible.

  • Cree una instancia de Azure Virtual Network para Azure Database Migration Service mediante el modelo de implementación de Azure Resource Manager, que proporciona conectividad de sitio a sitio a los servidores de origen local mediante ExpressRoute o VPN. Para más información sobre la creación de una red virtual, consulte la documentación de Virtual Networky, especialmente, los artículos de inicio rápido con detalles paso a paso.

  • Asegúrese de que las reglas del grupo de seguridad de red de la red virtual no bloquean el puerto de salida 443 de ServiceTag para ServiceBus, Storage y AzureMonitor. Para más información sobre el filtrado del tráfico con grupos de seguridad de red para redes virtuales, vea el artículo Filtrado del tráfico de red con grupos de seguridad de red.

  • Configurar su Firewall de Windows para acceder al motor de base de datos.

  • Abra el Firewall de Windows para permitir que Azure Database Migration Service tenga acceso al servidor PostgreSQL de origen que, de manera predeterminada, es el puerto TCP 5432.

  • Cuando se usa un dispositivo de firewall frente a las bases de datos de origen, puede que sea necesario agregar reglas de firewall para permitir que Azure Database Migration Service acceda a las bases de datos de origen para realizar la migración.

  • Cree una regla de firewall en el nivel de servidor para que Azure Database for PostgreSQL permita a Azure Database Migration Service tener acceso a las bases de datos de destino. Proporcione el rango de subred de la red virtual que se usa para Azure Database Migration Service.

Configuración de AWS RDS PostgreSQL para la replicación

  1. Para crear un nuevo grupo de parámetros, siga las instrucciones proporcionadas por AWS en el artículo Trabajo con los grupos de parámetros de base de datos.

  2. Use el nombre de usuario maestro para conectarse al origen de Azure Database Migration Service. Si usa una cuenta distinta de la cuenta de usuario maestro, la cuenta debe contar con los roles rds_superuser y rds_replication. El rol rds_replication concede permisos para administrar ranuras lógicas y transmitir datos mediante ranuras lógicas.

  3. Cree un nuevo grupo de parámetros con la siguiente configuración:

    • Establezca el parámetro rds.logical_replication en el grupo de parámetros de base de datos en 1.

    • max_wal_senders = [número de tareas simultáneas]. El parámetro max_wal_senders establece el número de tareas simultáneas que se pueden ejecutar. Configuración recomendada: 10.

    • max_replication_slots = [número de ranuras]. Configuración recomendada: 5.

  4. Asocie el grupo de parámetros que creó a la instancia de PostgreSQL de RDS.

Migración del esquema

  1. Extraiga el esquema de la base de datos de origen y aplíquelo a la base de datos de destino para completar la migración de todos los objetos de base de datos como esquemas de tabla, índices y procedimientos almacenados.

    La forma más fácil de migrar solo el esquema es usar pg_dump con la opción -s. Para obtener más información, consulte los ejemplos en el tutorial de Postgres pg_dump.

    pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql
    

    Por ejemplo, para volcar un archivo de esquema para la base de datos dvdrental, use el siguiente comando:

    pg_dump -O -h localhost -U postgres -d dvdrental -s  > dvdrentalSchema.sql
    
  2. Cree una base de datos vacía en el servicio de destino, que es Azure Database for PostgreSQL: servidor flexible.

  3. Importe el esquema al servicio de destino, que es Azure Database for PostgreSQL. Para restaurar el archivo de volcado del esquema, ejecute el siguiente comando:

    psql -h hostname -U db_username -d db_name < your_schema.sql
    

    Por ejemplo:

    psql -h mypgserver-20170401.postgres.database.azure.com  -U postgres -d dvdrental < dvdrentalSchema.sql
    

    Nota

    El servicio de migración controla internamente la habilitación o deshabilitación de claves externas y desencadenadores para garantizar una migración de datos confiable y sólida. Como resultado, no tiene que preocuparse por realizar modificaciones en el esquema de la base de datos de destino.

Registrar el proveedor de recursos

Registre el proveedor de recursos Microsoft.DataMigration antes de crear su primera instancia de Database Migration Service.

  1. Inicie sesión en Azure Portal. Busque y seleccione Suscripciones.

    Captura de pantalla de Mostrar suscripciones del portal.

  2. Seleccione la suscripción en la que quiere crear la instancia de Azure Database Migration Service y después seleccione Proveedores de recursos.

    Captura de pantalla de Mostrar proveedores de recursos.

  3. Busque la migración y, después, seleccione Registrar para Microsoft.DataMigration.

    Captura de pantalla del registro del proveedor de recursos.

Creación de una instancia de Azure Database Migration Service

  1. En Azure Portal, seleccione + Crear un recurso, busque Azure Database Migration Service y, después, seleccione Azure Database Migration Service en la lista desplegable.

    Captura de pantalla de Azure Marketplace.

  2. En la pantalla Azure Database Migration Service, seleccione Crear.

    Captura de pantalla que muestra cómo crear una instancia de Azure Database Migration Service.

  3. En la pantalla Crear el servicio de migración, especifique un nombre para el servicio, la suscripción y un grupo de recursos nuevo o existente.

  4. Seleccione la ubicación en la que quiere crear la instancia de Azure Database Migration Service.

  5. Seleccione una red virtual existente o cree una nueva.

    La red virtual proporciona a Azure Database Migration Service acceso a la instancia de PostgreSQL de origen y a la instancia de Azure Database for PostgreSQL de destino.

    Para más información sobre cómo crear una red virtual en Azure Portal, consulte el artículo Creación de una red virtual con Azure Portal.

  6. Seleccione un plan de tarifa. Para esta migración en línea, seleccione el plan de tarifa Premium: 4vCores.

    Captura de pantalla de la configuración de la instancia de Azure Database Migration Service.

  7. Seleccione Crear para crear el servicio.

Creación de un proyecto de migración

Después de crear el servicio, búsquelo en Azure Portal, ábralo y cree un proyecto de migración.

  1. En Azure Portal, seleccione Todos los servicios, busque Azure Database Migration Service y, luego, elija Azure Database Migration Services.

    Captura de pantalla que muestra cómo localizar todas las instancias de Azure Database Migration Service.

  2. En la pantalla Azure Database Migration Services, busque el nombre de la instancia de Azure Database Migration Service que ha creado, selecciónela y, luego, elija + Nuevo proyecto de migración.

  3. En la pantalla Nuevo proyecto de migración, especifique un nombre para el proyecto. En el cuadro de texto Tipo de servidor de origen, seleccione AWS RDS for PostgreSQL y, en el cuadro de texto Tipo de servidor de destino, elija Azure Database for PostgreSQL.

  4. En la sección Elegir el tipo de actividad, seleccione Migración de datos en línea.

    Importante

    Seleccione Migración de datos en línea. Las migraciones sin conexión no se admiten para este escenario.

    Captura de pantalla de la creación de un proyecto de Database Migration Service.

    Como alternativa, puede elegir Crear solo un proyecto para crear el proyecto de migración ahora y ejecutar la migración más adelante.

  5. Seleccione Guardar.

  6. Seleccione Crear y ejecutar una actividad para crear el proyecto y ejecutar la actividad de migración.

    Tome nota de los requisitos previos necesarios para configurar la migración en línea en el panel de creación de proyecto.

Especificación de los detalles de origen

En la pantalla Agregar detalles de origen, especifique los detalles de conexión de la instancia de PostgreSQL de origen.

Captura de pantalla de los detalles de origen.

Especificación de los detalles de destino

  1. Seleccione Guardar y, a continuación, en la pantalla Detalles de destino, especifique los detalles de conexión para el servidor de Azure Database for PostgreSQL de destino, que se ha aprovisionado previamente y tiene el esquema DVD Rentals implementado mediante pg_dump.

    Captura de pantalla de los detalles de destino.

  2. Seleccione Guardar y, en la pantalla Asignar a las bases de datos de destino, asigne la base de datos de origen y de destino para la migración.

    Si la base de datos de destino contiene el mismo nombre de base de datos que la de origen, Azure Database Migration Service selecciona la base de datos de destino de forma predeterminada.

    Captura de pantalla que muestra la asignación a las bases de datos de destino.

  3. Seleccione Guardar, en la pantalla Resumen de migración, en el cuadro de texto Nombre de la actividad, especifique un nombre para la actividad de migración y, a continuación, revise el resumen para asegurarse de que los detalles de origen y destino coinciden con lo que especificó anteriormente.

    Captura de pantalla del resumen de la migración.

Ejecución de la migración

Seleccione Ejecutar migración.

Aparecerá la ventana de actividad de migración. El estado de la actividad es Inicializando.

Supervisión de la migración

  1. En la pantalla de la actividad de migración, seleccione Actualizar para actualizar la vista hasta que el valor de Estado de la migración sea En ejecución.

    Captura de pantalla del estado de la actividad: en ejecución.

  2. En NOMBRE DE LA BASE DE DATOS, seleccione una base de datos específica para obtener el estado de migración para las operaciones Carga completa de los datos y Sincronización de datos incrementales.

    Carga completa de los datos muestra el estado de migración de la carga inicial mientras que Sincronización de datos incrementales muestra el estado de la captura de datos modificados (CDC).

    Captura de pantalla de inventario: carga completa de los datos.

    Captura de pantalla de inventario: sincronización de datos incrementales.

Realización de migración total

Una vez finalizada la carga completa inicial, las bases de datos se marcan como Lista para la transición.

  1. Cuando esté listo para completar la migración de la base de datos, seleccione Iniciar transición.

  2. Espere a que el contador de Cambios pendientes muestre 0 para garantizar que todas las transacciones entrantes a la base de datos de origen están detenidas, seleccione la casilla Confirmar y, luego, seleccione Aplicar.

    Captura de pantalla de la pantalla de transición completa.

  3. Cuando aparezca el estado Completado de la migración de base de datos, conecte las aplicaciones a la nueva base de datos de Azure Database for PostgreSQL de destino.

Su migración en línea de una instancia local de RDS PostgreSQL a Azure Database for PostgreSQL ya está completa.