Migración de bases de datos de PostgreSQL a AzureMigrate PostgreSQL databases to Azure

En este artículo se muestra cómo la empresa ficticia Contoso evaluó, planeó y migró a Azure su plataforma de bases de datos de código abierto locales de PostgreSQL.This article demonstrates how the fictional company Contoso planned and migrated its on-premises PostgreSQL open-source database platform to Azure.

Impulsores del negocioBusiness drivers

El equipo directivo de TI ha trabajado estrechamente con sus socios comerciales para comprender lo quieren lograr con esta migración.The IT leadership team has worked closely with business partners to understand what they want to achieve with this migration. Quieren:They want to:

  • Automatizar los macrodatos.Automate big data. Contoso usa PostgreSQL en varias de sus iniciativas con macrodatos e inteligencia artificial.Contoso uses PostgreSQL for several of its big data and AI initiatives. La empresa desea crear canalizaciones repetibles escalables para automatizar muchas de estas cargas de trabajo analíticas.The company wants to build scalable repeatable pipelines to automate many of these analytical workloads.
  • Aumentar la eficacia.Increase efficiency. Contoso debe quitar procedimientos innecesarios y optimizar los procesos para sus desarrolladores y usuarios.Contoso needs to remove unnecessary procedures and streamline processes for developers and users. La empresa necesita que el departamento de TI sea rápido y no gaste tiempo ni dinero para satisfacer más rápidamente los requisitos del cliente.The business needs IT to be fast and not waste time or money to deliver quicker on customer requirements.
  • Aumentar la agilidad.Increase agility. el equipo de TI de Contoso necesita más capacidad de respuesta a las necesidades de la empresa.Contoso IT needs to be more responsive to the needs of the business. Debe reaccionar con más rapidez que los cambios del mercado para facilitar el éxito en una economía global y no debe convertirse en un obstáculo para la empresa.It must react faster than the changes in the marketplace to enable success in a global economy and to not become a business blocker.
  • Escala.Scale. A medida que el negocio crece satisfactoriamente, el equipo de TI de Contoso debe proporcionar sistemas que puedan crecer al mismo ritmo.As the business grows successfully, Contoso IT must provide systems that can grow at the same pace.
  • Aumentar la seguridad.Increase security. Contoso entiende que los problemas normativos harán que la empresa adapte su estrategia local en función de los requisitos de auditoría, registro y cumplimiento.Contoso realizes that regulatory issues will cause the company to adjust its on-premises strategy based on auditing, logging, and compliance requirements.

Objetivos de la migraciónMigration goals

El equipo de la nube de Contoso ha definido los objetivos de esta migración con el fin de identificar la mejor forma de llevarla a cabo.The Contoso cloud team has pinned down goals for this migration and will use them to determine the best migration method.

RequisitosRequirements DetallesDetails
ActualizacionesUpgrades Contoso quiere asegurarse de que dispone de las revisiones más recientes instaladas cuando estén disponibles, pero no quiere administrarlas.Contoso wants to ensure that it has the latest patches installed when they're available, but the company doesn't want to manage these updates.
IntegracionesIntegrations Contoso quiere integrar los datos en la base de datos con las canalizaciones de datos e inteligencia artificial para Machine Learning.Contoso wants to integrate the data in the database with data and AI pipelines for machine learning.
Copia de seguridad y restauraciónBackup and restore Contoso busca la capacidad de realizar restauraciones a un momento dado cuando, por algún motivo, se produzcan errores o daños en las actualizaciones de datos.Contoso is looking for the ability to do point-in-time restores when and if data updates fail or are corrupted for any reason.
AzureAzure Contoso quiere supervisar el sistema y activar alertas basadas en el rendimiento y la seguridad.Contoso wants to monitor system and fire alerts based on performance and security.
RendimientoPerformance En algunos casos, Contoso tendrá canalizaciones de procesamiento de datos en paralelo en distintas regiones geográficas y deberá leer los datos de esas regiones.In some cases, Contoso will have parallel data processing pipelines in different geographic regions and must read data from those regions.

Diseño de la soluciónSolution design

Después de precisar los objetivos y requisitos, Contoso diseña y revisa una solución de implementación e identifica el proceso de migración.After pinning down goals and requirements, Contoso designs and reviews a deployment solution and identifies the migration process. También se identifican las herramientas y los servicios que se usarán para la migración.The tools and services it will use for migration are also identified.

Entorno actualCurrent environment

PostgreSQL 9.6.7 se ejecuta en una máquina física de Linux (sql-pg-01.contoso.com) en el centro de recursos de Contoso.PostgreSQL 9.6.7 is running on a physical Linux machine (sql-pg-01.contoso.com) in the Contoso datacenter. Contoso ya tiene una suscripción a Azure con una puerta de enlace de VPN de sitio a sitio conectada a una red de centro de datos local.Contoso already has an Azure subscription with a Site-to-Site VPN gateway to an on-premises datacenter network.

Solución propuestaProposed solution

  • Use Azure Database Migration Service o migre la base de datos a una instancia de Azure Database for PostgreSQL.Use Azure Database Migration Service to migrate the database to an Azure Database for PostgreSQL instance.
  • Modificar todas las aplicaciones y procesos para que utilicen la nueva instancia de Azure Database for PostgreSQL.Modify all applications and processes to use the new Azure Database for PostgreSQL instance.
  • Cree una nueva canalización de procesamiento de datos mediante Azure Data Factory que se conecte a la instancia de Azure Database for PostgreSQL.Build a new data processing pipeline using Azure Data Factory that connects to the Azure Database for PostgreSQL instance.

Consideraciones sobre la base de datosDatabase considerations

Como parte del proceso de diseño de la solución, Contoso revisó las características de Azure para hospedar los datos de PostgreSQL.As part of the solution design process, Contoso reviewed the features in Azure for hosting its PostgreSQL data. Las siguientes consideraciones sirvieron a la empresa para decidir utilizar Azure:The following considerations helped the company decide to use Azure:

  • Al igual que Azure SQL Database, Azure Database for PostgreSQL permite usar reglas de firewall.Similar to Azure SQL Database, Azure Database for PostgreSQL supports firewall rules.
  • Azure Database for PostgreSQL puede usarse junto con las redes virtuales para evitar que la instancia sea accesible públicamente.Azure Database for PostgreSQL can be used with virtual networks to prevent the instance from being publicly accessible.
  • Azure Database for PostgreSQL cuenta con las certificaciones de cumplimiento que Contoso necesita presentar.Azure Database for PostgreSQL has the required compliance certifications that Contoso must meet.
  • La integración con DevOps y Azure Data Factory permitirá crear canalizaciones de procesamiento de datos automatizadas.Integration with DevOps and Azure Data Factory will allow for automated data processing pipelines to be built.
  • El rendimiento del procesamiento puede mejorar mediante el uso de réplicas de lectura.Processing performance can be enhanced by using read replicas.
  • Compatibilidad con "bring your own key " (BYOK) para el cifrado de datos.Support for bring your own key (BYOK) for data encryption.
  • Posibilidad de exponer el servicio solo al tráfico de red interno (acceso no público) mediante Azure Private Link.Ability to expose the service to internal network traffic only (no-public access) by using Azure Private Link.
  • El ancho de banda y la latencia de la aplicación con respecto a la base de datos serán suficientes de acuerdo con la puerta de enlace elegida (Azure ExpressRoute o VPN de sitio a sitio).The bandwidth and latency from the application to the database will be sufficient enough based on the chosen gateway (either Azure ExpressRoute or Site-to-Site VPN).

Revisión de la soluciónSolution review

Contoso evalúa el diseño propuesto y crea una lista de ventajas y desventajas.Contoso evaluates its proposed design by putting together a list of pros and cons.

ConsideraciónConsideration DetallesDetails
VentajasPros Todas las características necesarias y en uso actualmente están disponibles en Azure Database for PostgreSQL.All currently required and in-use features are available in Azure Database for PostgreSQL.

DesventajasCons Contoso aún deberá realizar la migración manual desde la versión principal de PostgreSQL.Contoso will still need to do manual migration from a major version of PostgreSQL.

Arquitectura propuestaProposed architecture

Diagrama de la arquitectura del escenario. Ilustración 1: Arquitectura del escenario.Diagram of the scenario architecture. Figure 1: Scenario architecture.

Proceso de migraciónMigration process

PreparaciónPreparation

Antes de que Contoso pueda migrar las bases de datos de PostgreSQL, asegúrese de que esas instancias de Contoso cumplan todos los requisitos previos de Azure para que la migración se realice correctamente.Before Contoso can migrate its PostgreSQL databases, it ensures that Contoso's instances meet all the Azure prerequisites for a successful migration.

Versiones compatiblesSupported versions

Solo se admiten las migraciones a la misma versión o a otra superior.Only migrations to the same or a higher version are supported. Se admite la migración de PostgreSQL 9.5 a Azure Database for PostgreSQL 9.6 o 10, pero no de PostgreSQL 11 a PostgreSQL 9.6.Migrating PostgreSQL 9.5 to Azure Database for PostgreSQL 9.6 or 10 is supported, but migrating from PostgreSQL 11 to PostgreSQL 9.6 isn't supported.

Microsoft tiene la intención de admitir versiones n-2 del motor de PostgreSQL en el servicio Azure Database for PostgreSQL: servidor único.Microsoft aims to support n-2 versions of the PostgreSQL engine in Azure Database for PostgreSQL - Single Server. Estas versiones serían la versión principal actual en Azure (n) y las dos versiones principales anteriores ( -2).The versions would be the current major version on Azure (n) and the two prior major versions (-2).

Para obtener las actualizaciones más recientes de las versiones compatibles, consulte Versiones principales de PostgreSQL admitidas.For the latest updates on supported versions, see Supported PostgreSQL major versions.

Nota

No se admite la actualización automática de la versión principal.Automatic major version upgrade isn't supported. Por ejemplo, no hay una actualización automática de PostgreSQL 95 a PostgreSQL 9.6.For example, there isn't an automatic upgrade from PostgreSQL 9.5 to PostgreSQL 9.6. Para actualizar a la siguiente versión principal, realice un volcado de base de datos y restáurelo en un servidor creado con la nueva versión del motor.To upgrade to the next major version, dump the database and restore it to a server created with the target engine version.

RedNetwork

Contoso tendrá que configurar una conexión de puerta de enlace de red virtual desde el entorno local a la red virtual en la que está ubicada la base de datos de Azure Database for PostgreSQL.Contoso will need to set up a virtual network gateway connection from its on-premises environment to the virtual network where its Azure Database for PostgreSQL database is located. Esta conexión permite que la aplicación local tenga acceso a la base de datos sin migrarse a la nube.This connection allows the on-premises application to access the database but not be migrated to the cloud.

EvaluaciónAssessment

Contoso tendrá que evaluar la base de datos actual para detectar los problemas de replicación.Contoso will need to assess the current database for replication issues. Entre los problemas se incluyen:These issues include:

  • La versión de la base de datos de origen es compatible con la migración a la versión de base de datos de destino.The source database version is compatible for migration to the target database version.

  • Las claves principales deben existir en todas las tablas que se van a replicar.Primary keys must exist on all tables to be replicated.

  • Los nombres de base de datos no pueden incluir ningún punto y coma (;).Database names can't include a semicolon (;).

  • La migración de varias tablas con el mismo nombre, pero con distintas mayúsculas y minúsculas, puede provocar un comportamiento impredecible.Migration of multiple tables with the same name, but a different case might cause unpredictable behavior.

    Diagrama del proceso de migración. Figura 2: El proceso de migración.Diagram of the migration process. Figure 2: The migration process.

MigraciónMigration

Contoso puede realizar la migración de varias maneras:Contoso can perform the migration in several ways:

Contoso seleccionó Azure Database Migration Service para permitir a la empresa volver a usar el proyecto de migración siempre que necesite realizar actualizaciones importantes.Contoso has selected Azure Database Migration Service to allow the company to reuse the migration project whenever it needs to perform major-to-major upgrades. Ya que una sola actividad de Database Migration Service solo es compatible con un máximo de cuatro bases de datos, Contoso configura varios trabajos mediante los siguientes pasos.Because a single Database Migration Service activity only accommodates up to four databases, Contoso sets up several jobs by using the following steps.

Para prepararse, configure una red virtual para acceder a la base de datos.To prepare, set up a virtual network to access the database. Cree una conexión de red virtual mediante las puertas de enlace de VPN de varias maneras.Create a virtual network connection by using VPN gateways in various ways.

Creación de una instancia de Azure Database Migration ServiceCreate an Azure Database Migration Service instance

  1. En Azure Portal, seleccione Agregar un recurso.In the Azure portal, select Add a resource.

  2. Busque Azure Database Migration Service y selecciónelo.Search for Azure Database Migration Service, and select it.

  3. Seleccione +Agregar.Select + Add.

  4. Seleccione la suscripción y el grupo de recursos para el servicio.Select the subscription and resource group for the service.

  5. Escriba un nombre para la instancia.Enter a name for the instance.

  6. Seleccione la ubicación más cercana a su centro de datos o puerta de enlace de VPN de Contoso.Select the closest location to the Contoso datacenter or VPN gateway.

  7. Seleccione Azure para el modo de servicio.Select Azure for the service mode.

  8. Seleccione un plan de tarifa.Select a pricing tier.

  9. Seleccione Revisar + crear.Select Review + create.

    Captura de pantalla de la página Crear el servicio de migración.Screenshot of the Create Migration Service page. Figura 3: Revisión y creación.Figure 3: Review and create.

  10. Seleccione Crear.Select Create.

Creación de una instancia de Azure Database for PostgreSQLCreate an Azure Database for PostgreSQL instance

  1. En el servidor local, configure el archivo postgresql.conf.On the on-premises server, configure the postgresql.conf file.

  2. Configure el servidor para que escuche a la dirección IP adecuada que Azure Database Migration Service usará para tener acceso al servidor y a las bases de datos.Set the server to listen on the proper IP address that Azure Database Migration Service will use to access the server and databases.

    • Establezca la variable listen_addresses.Set the listen_addresses variable.
  3. Habilite SSL.Enable SSL.

    1. Establezca la variable ssl=on.Set the ssl=on variable.
    2. Compruebe que Contoso está usando un certificado SSL firmado públicamente para el servidor que es compatible con TLS 1.2.Verify that Contoso is using a publicly signed SSL certificate for the server that supports TLS 1.2. De lo contrario, la herramienta de Database Migration Service producirá un error.Otherwise, the Database Migration Service tool will raise an error.
  4. Actualice el archivo pg_hba.conf.Update the pg_hba.conf file.

    • Agregue entradas específicas de la instancia de Database Migration Service.Add entries that are specific to the Database Migration Service instance.
  5. La replicación lógica debe habilitarse en el servidor de origen; para ello, modifique los valores del archivo postgresql.conf para cada servidor.Logical replication must be enabled on the source server by modifying the values in the postgresql.conf file for each server.

    1. wal_level = logical
    2. max_replication_slots = [como mínimo, el número máximo de bases de datos para la migración]max_replication_slots = [at least the maximum number of databases for migration]
      • Por ejemplo, si Contoso quiere migrar cuatro bases de datos, establezca el valor en 4.For example, if Contoso wants to migrate four databases, it sets the value to 4.
    3. max_wal_senders = [número de bases de datos que se ejecutarán simultáneamente]max_wal_senders = [number of databases running concurrently]
      • El valor recomendado es 10.The recommended value is 10.
  6. El User de la migración debe tener el rol REPLICATION en la base de datos de origen.Migration User must have the REPLICATION role on the source database.

  7. Agregue la dirección IP de la instancia de Database Migration Service al archivo PostgreSQLpg_hba.conf.Add the Database Migration Service instance IP address to the PostgreSQLpg_hba.conf file.

  8. Para exportar los esquemas de la base de datos, ejecute los comandos siguientes:To export the database schemas, run the following commands:

    pg_dump -U postgres -s dvdrental > dvdrental_schema.sql
    
  9. Copie el archivo, asigne el nombre de la copia como dvdrental_schema_foreign.sql y quite todos los elementos relacionados con la clave no externa y los desencadenadores.Copy the file, name the copy dvdrental_schema_foreign.sql, and remove all non-foreign key and trigger-related items.

  10. Quite todos los elementos relacionados con la clave externa y el desencadenador del archivo dvdrental_schema.sql.Remove all foreign key and trigger-related items from the dvdrental_schema.sql file.

  11. Importe el esquema de la base de datos (paso 1):Import the database schema (step 1):

      psql -h {host}.postgres.database.azure.com -d dvdrental -U username -f dvdrental_schema.sql
    

MigraciónMigration

  1. En Azure Portal, Contoso va a su recurso de Database Migration Service.In the Azure portal, Contoso goes to its Database Migration Service resource.

  2. Si el servicio no se inicia, seleccione Iniciar servicio.If the service isn't started, select Start Service.

  3. Seleccione Nuevo proyecto de migración.Select New Migration Project.

    Captura de pantalla que muestra la opción Nuevo proyecto de migración resaltada.Screenshot that shows the New Migration Project option highlighted. Ilustración 4: Inicio de una nueva migración.Figure 4: Starting a new migration.

  4. Seleccione Nueva actividad > Migración de datos en línea.Select New Activity > Online data migration.

  5. Escriba un nombre.Enter a name.

  6. Seleccione PostgreSQL como origen.Select PostgreSQL as the source.

  7. Seleccione Azure Database for PostgreSQL como destino y, a continuación, seleccione Guardar.For the target, select Azure Database for PostgreSQL and then select Save.

    Captura de pantalla que muestra el panel Nuevo proyecto de migración.Screenshot that shows the New migration project pane. Ilustración 5: Un nuevo proyecto de migración está resaltado.Figure 5: A new migration project is highlighted.

  8. Especifique la información de origen y seleccione Guardar.Enter the source information, and select Save.

    Captura de pantalla que muestra la información de origen.Screenshot that shows entering source information. Ilustración 6: Especificación de la información de origen.Figure 6: Entering source information.

  9. Especifique la información de destino y seleccione Guardar.Enter the target information, and select Save.

    Captura de pantalla que muestra la selección de la información de destino.Screenshot that shows selecting target information. Ilustración 7: Selección de la información de destino.Figure 7: Selecting target information.

  10. Seleccione las bases de datos que se van a migrar.Select the databases to migrate. El esquema de cada base de datos se debe haber migrado anteriormente.The schema for each database should have been migrated previously. Después, seleccione Guardar.Then select Save.

    Captura de pantalla que muestra la selección de bases de datos.Screenshot that shows selecting databases. Ilustración 8: Selección de las bases de datos.Figure 8: Selecting databases.

  11. Configure las opciones avanzadas y seleccione Guardar.Configure the advanced settings, and select Save.

    Captura de pantalla que muestra la configuración avanzada.Screenshot that shows configuring advanced settings. Ilustración 9: Configuración de opciones avanzadas.Figure 9: Configuring advanced settings.

  12. Asigne un nombre a la actividad y seleccione Ejecutar.Give the activity a name, and select Run.

    Captura de pantalla que muestra el nombre y la ejecución de la actividad.Screenshot that shows naming and running the activity. Ilustración 10: Asignación de nombre y ejecución de la actividad.Figure 10: Naming and running the activity.

  13. Supervisar la migraciónMonitor the migration. Vuelva a intentarlo si se produce algún error.Retry it if anything fails. Un ejemplo se produce si faltan referencias de clave externa.An example is if foreign key references were missing.

  14. Una vez que Full load completed coincida con el número de tablas, seleccione Iniciar transición.After Full load completed matches the table count, select Start Cutover.

    Captura de pantalla que muestra la supervisión de la migración para iniciar la transición.Screenshot that shows monitoring the migration to start the cutover. Ilustración 11: Supervisión de la migración para iniciar la transición.Figure 11: Monitoring the migration to start the cutover.

  15. Detenga todas las transacciones del servidor de origen.Stop all transactions from the source server.

  16. Marque la casilla Confirmar y, a continuación, seleccione Aplicar.Select the Confirm check box, and then select Apply.

    Captura de pantalla que muestra la ejecución de la transición.Screenshot that shows running the cutover. Ilustración 12: Ejecución de la transición.Figure 12: Running the cutover.

  17. Espere a que se complete la transición.Wait for the cutover to complete.

    Captura de pantalla que muestra la finalización de la transición.Screenshot that shows completing the cutover. Figure 13: Finalización de la transición.Figure 13: Completing the cutover.

    Nota

    Los pasos de Database Migration Service anteriores también se pueden realizar a través de la CLI de Azure.The previous Database Migration Service steps can also be performed via the Azure CLI.

  18. Importe el esquema de la base de datos (paso 2):Import the database schema (step 2):

      psql -h {host}.postgres.database.azure.com -d dvdrental -U username -f dvdrental_schema_foreign.sql
    
  19. Vuelva a configurar todas las aplicaciones o procesos que usen la base de datos local para que apunten a la nueva instancia de base de datos de Azure Database for PostgreSQL.Reconfigure any applications or processes that use the on-premises database to point to the new Azure Database for PostgreSQL database instance.

  20. Para después de la migración, Contoso se asegurará de que también configura las réplicas de lectura entre regiones, si es necesario, una vez finalizada la migración.For post-migration, Contoso will ensure that it also set up cross-region read replicas, if necessary, after the migration is finished.

Limpiar después de la migraciónClean up after migration

Después de la migración, Contoso debe realizar una copia de seguridad de la base de datos local para fines de retención y retirar el servidor de PostgreSQL anterior como parte del proceso de limpieza.After migration, Contoso needs to back up the on-premises database for retention purposes and retire the old PostgreSQL server as part of the cleanup process.

Revisión de la implementaciónReview the deployment

Con los recursos migrados de Azure, Contoso debe proteger la infraestructura nueva y ponerla totalmente en marcha.With the migrated resources in Azure, Contoso needs to fully operationalize and secure its new infrastructure.

SeguridadSecurity

Contoso debe:Contoso needs to:

Copias de seguridadBackups

Asegúrese de que las copias de seguridad de las bases de datos de Azure Database for PostgreSQL se realicen mediante la restauración geográfica.Ensure that the Azure Database for PostgreSQL databases is backed up by using geo-restore. De esta manera, las copias de seguridad se pueden usar en una región emparejada si se produce una interrupción regional.In this way, backups can be used in a paired region if a regional outage occurs.

Importante

Asegúrese de que el recurso de Azure Database for PostgreSQL tenga un bloqueo de recursos para impedir su eliminación.Make sure that the Azure Database for PostgreSQL resource has a resource lock to prevent it from being deleted. No se pueden restaurar los servidores eliminados.Deleted servers can't be restored.

Optimización de los costos y licenciasLicensing and cost optimization

  • Azure Database for PostgreSQL se puede escalar o reducir verticalmente.Azure Database for PostgreSQL can be scaled up or down. La supervisión de rendimiento del servidor y las bases de datos es importante para garantizar que se satisfacen las necesidades y los costos se mantienen al mínimo.Performance monitoring of the server and databases is important to ensure that needs are met while keeping costs at a minimum.
  • Tanto la CPU como el almacenamiento tienen costos asociados.Both CPU and storage have costs associated. Hay varios planes de tarifa entre los que elegir.There are several pricing tiers to select from. Asegúrese de seleccionar el plan de precios adecuado para las cargas de trabajo de datos.Be sure the appropriate pricing plan is selected for the data workloads.
  • Cada réplica de lectura se factura en función del proceso y el almacenamiento que se hayan seleccionado.Each read replica is billed based on the compute and storage selected.

ConclusiónConclusion

En este artículo, Contoso migró sus bases de datos de PostgreSQL a una instancia de Azure Database for PostgreSQL.In this article, Contoso migrated its PostgreSQL databases to an Azure Database for PostgreSQL instance.