Saltar al contenido
Categoría: PostgreSQL
2024-07-18

Cómo migrar PostgreSQL local a Azure – Parte2

PostgreSQL a Azure

Bienvenidos/as a un nuevo post en el blog de Aleson ITC. En la primera parte de esta serie de blogs, vimos como crear nuestro servicio de Azure Database for PostgreSQL flexible server.

En este blog, vamos a ver los requisitos previos y configuraciones a aplicar antes de poder realizar la migración.

Tipos de migración

Offline migration

En este tipo de migración se detienen todas las aplicaciones que se conectan a la instancia de origen y las bases de datos se copias a un servidor flexible.

Online migration

En este tipo de migración, las aplicaciones no se detienen mientras las BBDD se copia a un servidor flexible, la copia inicial va seguida de una replicación para mantener el servidor flexible sincronizado con la instancia de origen.

A continuación, dejo una tabla de pros y contras de la migración online y offline:

Tabla comparativa migración Online y Offline en PostgreSQL a Azure

Primero vamos a empezar con la migración online, repasamos los pasos a revisar.

Verificar la versión de PostgreSQL origen

La versión del servidor de PostgreSQL de origen tiene que ser 9.5 o superior, en caso de tener una versión inferior, primero migrar a 9.5 o superior en local antes de iniciar la migración.

Instalar test_decoding (Servidor Origen)

Test_decoding, es un plugin que guarda los cambios que se han hecho en la BBDD y los transforma en un formato especifico/legible. Este plugin esta pensado principalmente para capturar y examinar los cambios que la BBDD.

Configurar servidor de Azure destino

Tener creada nuestro servicio de Azure Database for PostgreSQL flexible server.

La SKU (Stock Keeping Unit) para el servicio debe coincidir con la que tenemos en local, esto es básicamente el tipo de servidor en cuanto hardware. Azure proporciona tres niveles de precios:

  1. Burstable: Cargas de trabajo que no necesitan toda la CPU de forma continua para funcionar.
  2. General Purpose: Cargas de trabajo que requieren de un tamaño de memoria equilibrada con un rendimiento de I/O escalable, ejemplo, servidores aplicaciones web y app móvil.
  3. Memory Optimized: Cargas de trabajo de BBDD de alto rendimiento que requieren rendimiento en memoria para poder procesar transacciones de una manera mas rápida. Ejemplo, servidores de procesamiento de datos en tiempo real y analítica de datos.

https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-compute

A continuación dejo una tabla de los diferentes SKU disponibles:

Tabla diferentes SKU PostgreSQL

Habilitar CDC

Instalar la extensión test_decoding.

En el servidor de postgres origen, establecer los siguientes parámetros en el archivo postgresql.conf

wal_level = logical

Este valor nos permite utilizar funciones de replicación lógica, como la decodificación lógica, que permite replicar cambios a nivel de fila.

Solo como información, wal_level también tiene más valores.

minimal: Graba la cantidad mínima de información necesaria para la recuperación ante fallos. Este nivel no es adecuado para la replicación.

replica: Graba la información suficiente para soportar la replicación física y la recuperación ante fallos. Este es el valor predeterminado.

max_replication_slots, establecer un valor mayor que 1, el valor debe ser mayor que el numero de BBDD seleccionadas para la migración.

max_wal_senders, establecer un valor mayor que 1, debe establecerse al menos al mismo valor que max_replication_slots, mas el numero de remitentes ya utilizados.

Garantiza que haya suficientes procesos disponibles para transmitir los datos WAL a todas las réplicas configuradas.

wal_sender_timeout, este parámetro finaliza las conexiones de replicación que están inactivas durante más tiempo que el número de milisegundos establecidos. El valor por defecto es, 60000 milisegundos (60 segundos), nosotros podemos establecer como mejor nos convenga.

Estos parámetros, hay que ponerlos al final del archivo postgresql.conf, justo debajo de CUSTOMIZED OPTIONS.

Habilitar CDC en PostgreSQL a Azure

Esto es un ejemplo de configuración, los valores los tenemos que ajustar según el escenario en el que estamos.

Configuración de red entre PostgreSQL y Azure Database for PostgreSQL.

Tenemos que asegurarnos que el servicio de migración funcione correctamente y también asegurarnos de que el servidor de PostgreSQL de origen puede comunicarse con el servidor de Azure Database for PostgreSQL de destino.

A continuación, dejo enlace con la configuración que tenemos que revisar dependiendo del escenario en que estamos.

https://learn.microsoft.com/en-us/azure/postgresql/migrate/migration-service/how-to-network-setup-migration-service

Consideraciones adicionales:

Configuración de pg_hba.conf, para facilitar la conectividad entre las instancias de PostgreSQL de origen y destino. Este archivo incluye la autenticación del cliente y debe ser configurado para permitir que el PostgreSQL de destino se conecte a la fuente.

Este archivo se encuentra en el directorio de datos de la instalación de PostgreSQL.

Habilitar extensiones

En esta parte, tenemos que asegurar de que si tenemos alguna extensión instalada en nuestro servidor de PostgreSQL origen también están disponibles y las podemos instalar en nuestro servidor flexible Azure database for PostgreSQL.

Para más información sobre las extensiones de PostgreSQL, dejamos el siguiente enlace:

https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-extensions#how-to-use-postgresql-extensions

Revisar parámetros de configuración personalizados.

Si en los archivos de configuración de PostgreSQL, tenemos parámetros personalizados, tenemos que revisar y replicarlos en Azure.

Con todas estas configuraciones estaremos listos para realizar nuestra migración Online.

Migración Offline

Con la migración offline, los pasos a seguir son los mismos a excepción de que no tenemos que habilitar el CDC.

Por otro lado, en Azure Database for PostgreSQL flexible server es importante desactivar la alta disponibilidad y las replicas de lectura en el entorno de destino. Estas funciones solo deben activarse una vez finalizada la migración, en ambos casos.

Por último, quedaría crear el proyecto de migración, pero este paso lo veremos en la tercera parte del blog. Espero que os haya servido este post, ¡y os espero en el siguiente!

¿Necesitas una migración rápida y sin pausar tu negocio? ¡Contáctanos!

Complete este formulario para recibir la guía de Windows Server en Azure
*Obligatorio
Complete este formulario para recibir la guía de Windows Server en Azure
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
*Obligatorio
Complete este formulario para recibir 4 best practices to implement a comprehensive Zero Trust security approach
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud Migration Essentials
*Obligatorio
Complete este formulario para recibir Cloud Migration Essentials
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
*Obligatorio
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete este formulario para recibir Prevent data leaks with Microsoft 365 Business Premium
Gracias por rellenar el formulario [name]. ¡Aquí tienes tu eBook Gratis!
Complete this form to recieve the guide of Windows Server on Azure
*Required
Complete this form to recieve the guide of Windows Server on Azure
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
*Required
Complete this form to recieve 4 best practices to implement a comprehensive Zero Trust security approach
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Essentials
*Required
Complete this form to recieve Cloud Migration Essentials
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud security Advice for Nonprofit Leaders
*Required
Complete este formulario para recibir Cloud security Advice for Nonprofit Leaders
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!
Complete this form to recieve Cloud Migration Simplified Ebook.
*Obligatorio
Complete this form to recieve Prevent data leaks with Microsoft 365 Business Premium
Thank you for filling out the form [name]. Here's your Free eBook!