Tutorial: Migración de PostgreSQL a Azure Database for PostgreSQL en línea con DMS (clásico) a través de Azure Portal

Puede usar Azure Database Migration Service para migrar las bases de datos de una instancia de PostgreSQL local a Azure Database for PostgreSQL con un tiempo de inactividad mínimo para la aplicación. En este tutorial, va a migrar la base de datos de ejemplo listdb de una instancia local de PostgreSQL 13.10 a Azure Database for PostgreSQL mediante la actividad de migración en línea de Azure Database Migration Service.

En este tutorial, aprenderá a:

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

Nota

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. 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.

Prerrequisitos

Para completar este tutorial, necesita:

  • Descargue e instale PostgreSQL Community Edition. La versión de PostgreSQL Server de origen debe ser >= 9.4. Para más información, vea la información sobre versiones de base de datos admitidas de PostgreSQL.

    Tenga en cuenta también que la versión de Azure Database for PostgreSQL de destino debe ser igual o posterior a la versión local de PostgreSQL. Por ejemplo, PostgreSQL 12 puede migrarse a la versión Azure Database for PostgreSQL >= 12, pero no a Azure Database for PostgreSQL 11.

  • Cree un servidor de Azure Database for PostgreSQL.

  • 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.

    Nota

    Durante la configuración de la red virtual, si usa ExpressRoute con emparejamiento de red a Microsoft, agregue los siguientes puntos de conexión de servicio a la subred en la que se aprovisionará el servicio:

    • Punto de conexión de base de datos de destino (por ejemplo, punto de conexión de SQL, punto de conexión de Azure Cosmos DB, etc.)
    • Punto de conexión de Storage
    • Punto de conexión de Service Bus

    Esta configuración es necesaria porque Azure Database Migration Service no tiene conexión a Internet.

  • Asegúrese de que las reglas del grupo de seguridad de red (NSG) para 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.

  • Habilite la replicación lógica en el archivo postgresql.config y establezca los parámetros siguientes:

    • wal_level = logical
    • max_replication_slots = [número de ranuras], se recomienda establecer en cinco ranuras
    • max_wal_senders = [número de tareas simultáneas]; el parámetro max_wal_senders establece el número de tareas simultáneas que puede ejecutar; se recomienda establecerlo en 10 tareas
  • El usuario debe tener el rol REPLICACIÓN en el servidor que hospeda la base de datos de origen.

Importante

Todas las tablas de la base de datos existente necesitan una clave principal para asegurarse de que todos los cambios se puedan sincronizar en la base de datos de destino.

Migración del esquema de ejemplo

Para completar todos los objetos de base de datos como esquemas de tabla, índices y procedimientos almacenados, se debe extraer el esquema de la base de datos de origen y aplicarlo a la base de datos.

  1. Use el comando pg_dump -s para crear un archivo de volcado de esquema para una base de datos.

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

    Por ejemplo, para crear un archivo de copia de seguridad del esquema para la base de datos listdb:

    pg_dump -O -h localhost -U postgres -d listdb -s -x > listdbSchema.sql
    

    Para más información sobre el uso de la utilidad pg_dump, vea los ejemplos del tutorial pg volcado.

  2. Cree una base de datos vacía en el entorno de destino, que es Azure Database for PostgreSQL.

    Consulte el artículo Creación de un servidor de Azure Database for PostgreSQL en Azure Portal para obtener más información sobre cómo crear una base de datos y conectarse a ella.

  3. Importe el esquema en la base de datos de destino que creó restaurando el archivo de volcado de esquema.

    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 migratedb < listdbSchema.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.

    Mostrar suscripciones en el 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.

    Mostrar los proveedores de recursos

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

    Registro del proveedor de recursos

Creación de una instancia de Azure Database Migration Service

  1. En el menú de Azure Portal o en la página principal, seleccione Crear un recurso. Busque y seleccione Azure Database Migration Service.

    Azure Marketplace

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

    Creación de una instancia de Azure Database Migration Service

    Seleccione el tipo de servidor de origen y el tipo de servidor de destino adecuados y elija la opción Database Migration Service (clásico).

    Seleccionar el escenario Database Migration Service (clásico)

  3. En la pantalla de aspectos básicos Crear el servicio de migración:

    • Seleccione la suscripción.
    • Cree un grupo de recursos o seleccione uno existente.
    • Especifique un nombre para la instancia de Azure Database Migration Service.
    • Seleccione la ubicación en la que quiere crear la instancia de Azure Database Migration Service.
    • Elija Azure como modo de servicio.
    • Seleccione un plan de tarifa. Para más información sobre los costos y planes de tarifa, vea la página de precios.

    Configuración de los valores básicos de la instancia de Azure Database Migration Service

    • Seleccione Siguiente: Redes.
  4. En la pantalla de red Crear el servicio de migración:

    • Seleccione una red virtual existente o cree una nueva. La red virtual proporciona a Azure Database Migration Service acceso al servidor de origen y a la instancia 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.

    Configuración de la red de la instancia de Azure Database Migration Service

    • Seleccione Revisar y crear para revisar los detalles y luego Crear para crear el servicio.

    • Transcurridos unos momentos, se crea la instancia de Azure Database Migration Service y estará lista para usarse:

    Servicio de migración creado

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 de una búsqueda en 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.

    Captura de pantalla en la que se muestra la búsqueda de una instancia de Azure Database Migration Service.

  3. En la pantalla New migration project (Nuevo proyecto de migración), especifique un nombre para el proyecto. En el cuadro de texto Source server type (Tipo de servidor de origen), seleccione PostgreSQL y, en el cuadro de texto Target server type (Tipo de servidor de destino), seleccione Azure Database for PostgreSQL.

  4. En la sección Tipo de actividad de migración, seleccione Migración de datos en línea.

    Captura de pantalla que muestra la creación de un nuevo proyecto de migración.

    Nota

    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 Crear y ejecutar actividad para usar correctamente Azure Database Migration Service cuando se migran datos.

Especificación de los detalles de origen

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

    Captura de pantalla que muestra el cuadro de diálogo para agregar los detalles del origen.

Especificación de los detalles de destino

  1. En la pantalla Detalles de destino, especifique los detalles de la conexión para el servidor flexible de destino de Azure Database for PostgreSQL, que es la instancia aprovisionada anteriormente en la que se implementó el esquema mediante pg_dump.

    Captura de pantalla de Agregar detalles de destino.

  2. Haga clic en Siguiente: Seleccionar bases datos y, a continuación, en la pantalla Seleccionar bases de datos, asigne la base de datos de origen y de destino para su 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 en la que se muestra la asignación de bases de datos al destino.

  3. Haga clic en Siguiente: Seleccionar tablas y, a continuación, en la pantalla Seleccionar tablas, seleccione las tablas necesarias que se deben migrar.

    Captura de pantalla en la que se muestra la selección de las tablas para su migración.

  4. Haga clic en Siguiente: Configurar las opciones de migración y, a continuación, en la pantalla Configurar opciones de migración, acepte los valores predeterminados.

    Captura de pantalla en la que se muestra la configuración de las opciones de migración.

  5. En la pantalla Resumen de migración del 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 Iniciar migración.

    Aparecerá la ventana de actividad de migración y el estado de la actividad debería actualizarse para mostrar Copia de seguridad en curso.

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 Completado.

    Captura de pantalla de la supervisión de la migración.

  2. Cuando se complete la migración, 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.

    Nota

    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 en la que se muestran los detalles de la carga completa de la migración.

    Captura de pantalla en la que se muestran los detalles de la carga incremental de la migración.

Realización de migración total

Una vez completada la carga completa inicial, las bases de datos se marcan como A punto para la migración total.

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

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

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

  3. Cuando aparezca el estado Completado de la migración de base de datos, recree las secuencias (si procede) y conecte las aplicaciones a la nueva instancia de destino de Azure Database for PostgreSQL.

Pasos siguientes