Identificación de las opciones de la herramienta de migración
Hay muchas opciones disponibles para realizar una migración desde un servidor postgreSQL a un servidor flexible de Azure Database for PostgreSQL. Hay herramientas nativas de PostgreSQL, como pg_dump, pgadmin y pg_restore. Hay servicios en la nube de Microsoft Azure, como Database Migration Service y la opción de migración en Azure Database for PostgresSQL: servidor flexible, que en gran medida puede automatizar el proceso general de transferencia de datos desde el origen al destino.
Servidor flexible de Azure Database for PostgreSQL: migración
Dentro del servicio Azure Database for PostgreSQL: servidor flexible, hay una funcionalidad nativa para admitir la migración de bases de datos de otras instancias de PostgreSQL al servicio basado en Azure. Esta opción está orientada a la migración sin conexión de bases de datos de origen a destino. Para usar esta opción, es necesario usar las herramientas de pg_dumpall y psql descritas anteriormente para migrar las bases de datos de objetos de nivel de servidor que se migran al servidor flexible.
Esta característica está diseñada con instancias externas de PostgreSQL como origen y servidor flexible en el que se creó el proyecto de migración como destino. Principalmente para importar datos en el servidor flexible. La ventaja de usar este servicio sobre la realización de un proceso de volcado y restauración manual es la naturaleza administrada de la migración. Una vez configurado, supervisa el proceso de todas las tablas que se están migrando al servidor flexible, para que podamos ver fácilmente cuándo se puede realizar el cambio en el nivel de aplicación.
Proyectos de migración
Una vez ordenada la conectividad, todo lo que necesitamos hacer es seleccionar la base de datos o las bases de datos que queremos migrar al nuevo servidor. En la captura de pantalla siguiente, observe que si hay varias bases de datos que respaldan varios servicios que forman parte de un sistema más grande, podemos seleccionar migrarlos como un grupo en lugar de uno a uno. Esta agrupación de bases de datos realmente puede ayudar no solo a acelerar las migraciones, sino también a mantener la coherencia lógica durante las actividades de migración.
Cuando iniciamos el proceso de validación y migración, podemos revisar el progreso general del proceso mediante el panel del proyecto. Este panel nos muestra como las bases de datos se validan y, a continuación, a medida que se migran al nuevo servidor.
Esta información se conservará después de la migración, lo que nos permite realizar un seguimiento del progreso general. La información también proporciona cualquier evidencia necesaria para cambiar los procesos de control sobre el éxito y la duración de cualquier trabajo que se realice.
Herramientas de PostgreSQL
Aquí se exploran las principales herramientas que se pueden usar para migrar datos de un servidor PostgreSQL a Un servidor flexible de Azure Database for PostgreSQL.
pgcopydb
Pgcopydb es un proyecto de código abierto que puede automatizar el proceso de copia de una base de datos entre servidores PostgreSQL. Existen varias ventajas para usar pgcopydb sobre las herramientas nativas proporcionadas al instalar PostgreSQL, entre estas ventajas se incluyen.
- Quitar la necesidad de archivos intermedios mediante pg_backup y pg_restore.
- Cree concurrencia de índices para paralelizar la creación de índices en tablas mediante la capacidad synchronize__seqscans en PostgreSQL.
- Copia de tablas multiproceso para crear particiones de los datos y transferir tablas más grandes en paralelo.
- Captura de datos modificados para una sincronización de datos que minimice la necesidad de ventanas de tiempo de inactividad prolongado.
Hay dos opciones principales dentro de pgcopydb que se pueden usar para la migración de datos y bases de datos de un servidor de origen al destino. Estas opciones son clonar y copiar.
pgcopydb clone
Clonar es la opción principal para copiar una base de datos completa desde un servidor de origen a un destino. Este comando tiene varios modificadores disponibles que nos permiten configurar una operación básica de clonación, desde la automatización de la configuración de la captura de datos modificados a la sincronización de datos para minimizar el tiempo de inactividad durante la migración. También podemos especificar las opciones para paralelizar la transferencia de datos por tabla y opciones de transferencia paralela para tablas, índices y objetos grandes.
pgcopydb copy
Copiar es una opción que permite una mayor granularidad de control cuando se trata de migrar la base de datos o partes de ella. Podemos usar esta opción de comando para elegir qué esquemas, tablas, roles, etc. transferir de una base de datos del servidor de origen al servidor de destino y a la base de datos. Este comando es útil en los escenarios en los que una base de datos grande se descompone en otras más pequeñas como parte de una actividad de migración de modernización de aplicaciones. Como alternativa, una actividad de migración de consolidación nos permite migrar el contenido de una base de datos a esquemas dentro de otro.
Estas opciones son solo algunas de las formas en las que pgcopydb puede ayudarnos a mejorar el proceso de migración de bases de datos al servidor flexible de Azure Database for PostgreSQL. Este proceso proporciona una manera de migración que minimiza el riesgo y maximiza nuestras posibilidades de éxito.
pgAdmin
pgAdmin es una herramienta de administración ampliamente utilizada que se puede usar para interactuar con bases de datos PostgreSQL. Esta herramienta permite la creación y ejecución de scripts pgsql. La herramienta contiene una matriz de herramientas de GUI útiles que se pueden usar para configurar, realizar copias de seguridad y restaurar bases de datos PostgreSQL. Normalmente, instale pgAdmin en estaciones de trabajo administrativas. Esta herramienta permite registrar y conectarse a varios servidores postgreSQL, lo que lo convierte en una parte clave de nuestro conjunto de herramientas de migración.
pg_dump, pg_restore y psql
pg_dump es una herramienta de línea de comandos que se instala junto con una instancia de PostgreSQL y se puede instalar según sea necesario en una estación de trabajo administrativa. Permite la creación de copias de seguridad de base de datos coherentes desde PostgreSQL incluso cuando se produce una carga de trabajo simultánea. Funciona con bases de datos individuales y nos permite realizar copias de seguridad de una base de datos completa o partes de ella.
Si usa pg_dump para exportar objetos de esquema, podemos usar psql para ejecutar el archivo de .sql resultante en la base de datos de destino para crear los objetos. Después de este paso, podemos examinar formas de mover los datos del origen al sistema de destino. Los comandos que se usarán para exportar un esquema de base de datos de una base de datos y crearlo en otro se pueden ver en el ejemplo siguiente.
pg_dump -O --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks --schema-only > adventureWorks.sql
psql --host=MyFlexibleServer --username=demo --dbname=AdventureWorks < adventureWorks.sql
Si estamos creando un volcado completo de la base de datos de origen, buscamos usar pg_restore para leer el archivo resultante y restaurar la base de datos en la instancia de PostgreSQL de destino. Hay varios factores que determinan cuánto tiempo tardan estas actividades en realizar una operación de copia de seguridad y restauración en un archivo de copia de seguridad. En particular, el tamaño de la base de datos, el rendimiento del subsistema de almacenamiento y el ancho de banda de red y la latencia entre los componentes de procesamiento.
En el ejemplo siguiente se muestra cómo se puede crear un volcado de base de datos en un servidor personalizado y, a continuación, restaurarlo en otro servidor.
pg_dump -Fc --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks > db.dump
pg_restore -Fc --host=MyServerName --port=5432 --create --username=adminuser --dbname=AdventureWorks db.dump
pg_dumpall
Mientras que pg_dump se usa para volcar una base de datos única, pg_dumpall se usa para volcar todas las bases de datos en un único archivo de script que psql lee en una nueva instancia de PostgreSQL.
Además, pg_dumpall se puede usar para generar archivos de script para objetos de nivel de servidor globales, como roles, de los cuales las bases de datos pueden depender al migrarse entre servidores.