sql >> Base de Datos >  >> RDS >> PostgreSQL

Principales herramientas de código abierto para migraciones de PostgreSQL

La migración de bases de datos es el proceso de migrar datos de una o más bases de datos de origen a una o más bases de datos de destino mediante el uso de un servicio o una herramienta. Hay diferentes tipos de migraciones. Puede migrar de una tecnología a otra diferente, a un centro de datos diferente oa la nube, o incluso en el mismo lugar y la misma tecnología a otra máquina. La mejor herramienta para una migración de PostgreSQL depende del tipo de migración y los requisitos como la disponibilidad o la tolerancia al tiempo de inactividad y, a veces, es difícil encontrar la mejor herramienta para hacer el trabajo.

En este blog, mencionaremos algunas herramientas de código abierto para migraciones de PostgreSQL con una breve descripción general de cada opción.

Herramientas de copia de seguridad y restauración de migración

Esta podría ser la forma más fácil de realizar una migración de datos, pero también la más lenta en términos de objetivo de tiempo de recuperación (RTO). El uso de este método significa que realizará una copia de seguridad de su base de datos actual, muy probablemente una copia de seguridad lógica si desea restaurarla en una versión o infraestructura diferente, copiar el volcado y restaurarlo en el nuevo servidor. Dependiendo de la cantidad de datos, puede llevar mucho tiempo, pero es la forma básica de migrar su base de datos. Veamos algunas herramientas para esto.

pgdump/pgdumpall

pg_dump es una utilidad para realizar copias de seguridad de una sola base de datos PostgreSQL. Realiza copias de seguridad consistentes incluso si la base de datos se usa al mismo tiempo, ya que no bloquea a otros usuarios. Para respaldar un clúster completo o para respaldar objetos globales que son comunes a todas las bases de datos en un clúster (como roles y espacios de tablas), debe usar pg_dumpall en su lugar.

Los volcados se pueden generar en formato de script o archivo de archivo. Los volcados de secuencias de comandos son archivos de texto sin formato que contienen los comandos SQL necesarios para reconstruir la base de datos al estado en el que se encontraba en el momento en que se guardó. Se puede usar para reconstruir la base de datos en otras máquinas, otras arquitecturas o incluso en otros productos de bases de datos SQL.

pg_basebackup

pg_basebackup se utiliza para realizar una copia de seguridad base de un clúster de base de datos PostgreSQL en ejecución. La copia de seguridad se realiza sin afectar a otros clientes de bases de datos y se puede utilizar tanto para PITR (recuperación en un punto en el tiempo) como como punto de partida de un servidor en espera de Streaming Replication. Hace una copia exacta de los archivos del clúster de la base de datos mientras se asegura de que el servidor entre y salga del modo de copia de seguridad automáticamente. Siempre se realizan copias de seguridad de todo el clúster de la base de datos; no es posible realizar copias de seguridad de bases de datos individuales u objetos de bases de datos.

pgBackRest

pgBackRest es una herramienta de copia de seguridad de código abierto que crea copias de seguridad físicas con algunas mejoras en comparación con la herramienta clásica pg_basebackup. Puede usar pgBackRest para realizar una copia inicial de la base de datos para Streaming Replication usando una copia de seguridad existente, o puede usar la opción delta para reconstruir un antiguo servidor en espera.

Algunas de las características más importantes de pgBackRest son:

  • Copia de seguridad y restauración en paralelo
  • Operación local o remota
  • Copias de seguridad completas, incrementales y diferenciales
  • Rotación de copias de seguridad y caducidad de archivos
  • Comprobación de la integridad de la copia de seguridad
  • Resumen de copia de seguridad
  • Restauración Delta
  • Cifrado

Herramientas de migración de PostgreSQL

En lugar de utilizar una herramienta de respaldo, existen diferentes utilidades para realizar esta migración de una manera más rápida, con diferentes métodos. Puede usar un enfoque ETL, o incluso configurar la replicación entre diferentes tecnologías de bases de datos usando el mismo concepto sobre Extraer - Transformar - Cargar. Veamos algunas de estas herramientas.

pg_camaleón

pg_chameleon es un sistema de réplica de MySQL a PostgreSQL. Puede conectarse al protocolo de replicación de MySQL y replicar los cambios de datos en PostgreSQL. Ya sea que el usuario necesite configurar una réplica permanente entre MySQL y PostgreSQL, o realizar una migración del motor, pg_chameleon es una buena opción para la tarea.

Las características principales son:

  • Leer de múltiples esquemas MySQL y restaurarlos en una base de datos PostgreSQL de destino
  • Configure PostgreSQL para que actúe como esclavo de MySQL
  • Compatibilidad básica con DDL (CREATE/DROP/ALTER TABLE, DROP PRIMARY KEY/TRUNCATE, RENAME)
  • Las tablas que generan errores se excluyen automáticamente de la réplica
  • Posibilidad de actualizar tablas individuales o esquemas individuales
  • Separar la réplica de MySQL para soporte de migración
  • Anulación del tipo de datos
  • Proceso init_replica demonizado
  • Proceso de réplica daemonizado con dos subprocesos separados, uno para la lectura y otro para la reproducción

cargador de pg

pgloader carga datos de varias fuentes en PostgreSQL. Puede transformar los datos que lee sobre la marcha y envía SQL sin procesar antes y después de la carga. Utiliza el protocolo COPY PostgreSQL para transmitir los datos al servidor y administra los errores llenando un par de archivos de rechazo.dat y rechazo.log.

Gracias a poder cargar datos directamente desde una fuente de base de datos, pgloader también admite migraciones de otros productos a PostgreSQL. En este modo de operaciones, pgloader maneja tanto el esquema como las partes de datos de la migración, en un solo comando no tripulado, lo que permite implementar la migración continua.

Las características principales son:

  • Se admiten muchos formatos de origen, como archivos CSV, db3 e IBM IXF
  • Transformación de datos sobre la marcha
  • Proyecciones de campo completo
  • Lectura de archivos comprimidos (zip, tar y gzip)
  • Compatibilidad con HTTP(S)
  • Descubrimiento de esquema de destino
  • En caso de error, detener/reanudar las siguientes opciones
  • Comandos SQL anteriores/posteriores
  • Migración con un solo comando
  • Descubrimiento de esquemas
  • Reglas de conversión definidas por el usuario
  • Migraciones parciales incluyendo/excluyendo tablas
  • Solo esquema o datos
  • Vistas materializadas o reescritura del esquema sobre la marcha
  • Migración continua

Ora2Pg

Ora2Pg es una herramienta gratuita que se utiliza para migrar una base de datos Oracle o MySQL a un esquema compatible con PostgreSQL. Conecta su base de datos actual, la escanea y extrae su estructura o datos, luego genera scripts SQL que puede cargar en su base de datos PostgreSQL.

Las características principales son:

  • Exportar el esquema completo de la base de datos (tablas, vistas, secuencias, índices), con restricciones únicas, primarias, de clave externa y de verificación
  • Exportar concesiones/privilegios para usuarios y grupos
  • Exportar rango/listar particiones y subparticiones
  • Exportar una selección de tablas (especificando los nombres de las tablas).
  • Exportar funciones predefinidas, disparadores, procedimientos, paquetes y cuerpos de paquetes
  • Exportar datos completos o seguir una cláusula WHERE
  • Soporte total del objeto BLOB de Oracle como PG BYTEA
  • Exportar vistas de Oracle como tablas PG
  • Exportar tipos definidos por el usuario de Oracle
  • Proporciona conversión automática básica de código PLSQL a PLPGSQL
  • Exportar tablas de Oracle como tablas contenedoras de datos externos
  • Exportar vista materializada
  • Mostrar un informe detallado del contenido de una base de datos de Oracle
  • Evaluación de costos de migración de una base de datos Oracle
  • Evaluación del nivel de dificultad de la migración de una base de datos Oracle
  • Evaluación de costos de migración de código PL/SQL desde un archivo
  • Evaluación de costos de migración de consultas Oracle SQL almacenadas en un archivo
  • Generar archivos XML ktr para usar con Penthalo Data Integrator (Kettle)
  • Exportar el localizador de Oracle y las geometrías espaciales a PostGis
  • Exportar DBLINK como Oracle FDW
  • Exportar SINÓNIMOS como vistas
  • Exportar DIRECTORIO como una tabla o directorio externo para extensión de archivo externo
  • Exportación completa de MySQL como la base de datos Oracle

Hay más opciones de ETL disponibles, como Pentaho o Talen, pero están más orientadas a la integración o gestión de datos que a la migración, por lo que no las describiremos aquí para evitar una publicación de blog extensa. Puede encontrar más información aquí.

Replicación lógica de PostgreSQL para migraciones

La replicación lógica es un método para replicar objetos de datos y sus cambios, en función de su identidad de replicación (generalmente una clave principal). Se basa en un modo de publicación y suscripción, donde uno o más suscriptores se suscriben a una o más publicaciones en un nodo de publicación.

Una publicación es un conjunto de cambios generados a partir de una tabla o un grupo de tablas (también conocido como conjunto de replicación). El nodo donde se define una publicación se denomina editor. Una suscripción es el lado descendente de la replicación lógica. El nodo donde se define una suscripción se denomina suscriptor y define la conexión a otra base de datos y conjunto de publicaciones (una o más) a las que se quiere suscribir. Los suscriptores extraen datos de las publicaciones a las que se suscriben.

Este método se puede utilizar para migrar o actualizar su base de datos PostgreSQL.

Para obtener más información, puede consultar la publicación de blog correspondiente sobre la actualización de PostgreSQL sin tiempo de inactividad.

Conclusión

Las migraciones son una tarea difícil y arriesgada, ya que está moviendo o transformando datos de una (o más) fuente a un destino (o más de uno), y es aún peor si su destino es un motor diferente. Por lo tanto, deberá tener un buen plan, con pasos detallados y, por supuesto, un entorno de prueba para probar todas las etapas de la migración. En este blog, mencionamos algunas herramientas para ayudar con esta tarea, y la mejor opción dependerá de sus requisitos sobre la disponibilidad de su sistema.