Acerca de la extensión pglogical

Selecciona una versión de la documentación:

En esta página se ofrece una descripción general de la extensión pglogical, sus ventajas y sus limitaciones.

Información general

La extensión pglogical es una herramienta de replicación lógica robusta y flexible diseñada para PostgreSQL. También admite la alta disponibilidad y la recuperación tras fallos.

La replicación binaria tradicional, también conocida como replicación física, replica los cambios a nivel de sistema de archivos y de bloque, lo que da como resultado una réplica física en el sistema de destino. Aunque la replicación física es sólida y protege todo el clúster de la base de datos, solo es unidireccional y requiere acceso al archivo de datos de la base de datos subyacente y a los archivos de registro de escritura anticipada (WAL).

Por otro lado, la extensión pglogical extrae los cambios de SQL de una base de datos de proveedor, los replica y, a continuación, los vuelve a aplicar en una o varias bases de datos de suscriptor. Esta replicación se conoce como replicación lógica.

Con la extensión pglogical, puedes hacer lo siguiente:

  • Replica datos entre varias bases de datos de AlloyDB Omni.
  • Replica datos entre AlloyDB Omni y Google Cloud AlloyDB.
  • Replicar datos entre AlloyDB Omni y otras distribuciones de PostgreSQL, incluidas muchas en servicios en la nube de terceros.

Ventajas

La replicación lógica con la extensión pglogical ofrece las siguientes ventajas:

  • Replicación selectiva: ofrece la flexibilidad de definir filtros y reglas para determinar qué datos quieres replicar y dónde. Puedes elegir qué tablas se incluyen y cómo se gestionan las nuevas tablas, tanto si se incluyen como si no. También puedes añadir filtros de columnas y filas. Se puede añadir un apply delay opcional para situaciones en las que quieras que el suscriptor represente algún punto temporal final del proveedor.

  • Replicación bidireccional y multiprimaria: todas las bases de datos miembro están abiertas en un estado de lectura/escritura y se pueden usar por completo. Cada base de datos de endpoint actúa como proveedor y suscriptor, lo que permite crear escenarios de replicación avanzados y actualizar los datos en diferentes endpoints.

  • Compatibilidad con proveedores de la nube: proveedores de la nube como Google reconocen el valor de la extensión pglogical y la integran en sus servicios en la nube, como Google Cloud SQL para PostgreSQL y AlloyDB. Otros proveedores de servicios en la nube también incluyen la extensión pglogical como opción, lo que permite configuraciones multinube o de nube híbrida.

  • Replicación entre versiones: como pglogical replica las instrucciones SQL reales, permite la replicación entre versiones principales de PostgreSQL. Sobre todo cuando la base de datos de origen del proveedor tiene una versión anterior a la de destino del suscriptor, la replicación entre versiones se puede implementar de forma fiable.

    La extensión pglogical ofrece compatibilidad con muchas versiones anteriores de PostgreSQL, como la 9.4 y versiones posteriores. Por eso, es una opción óptima para los casos en los que se trabaja con sistemas antiguos y se quiere replicar datos en versiones más modernas de PostgreSQL, como las que se usan en AlloyDB Omni y Google Cloud AlloyDB.

En resumen, la extensión pglogical proporciona una solución de replicación lógica con muchas funciones, compatible con versiones anteriores de PostgreSQL y servicios gestionados en la nube, como Google Cloud SQL para PostgreSQL y AlloyDB.

Limitaciones de la réplica lógica

Todas las tecnologías de replicación lógica, incluidas las que se usan con otras plataformas de bases de datos relacionales, tienen algunas limitaciones, y cualquier gestión inadecuada puede interrumpir el proceso de replicación.

Ten en cuenta los siguientes puntos para que la implementación sea fiable:

  • Consideraciones sobre cómo gestionar los objetos de ámbito de base de datos y de clúster que están fuera del ámbito de la replicación. La extensión pglogical funciona a nivel de base de datos y solo con un conjunto de tablas y secuencias especificado. Otros tipos de objetos, como funciones y procedimientos, deben replicarse con otro método.
  • Se recomienda que todas las tablas de replicación tengan una clave principal. Puede usar la función de tabla REPLICA IDENTITY para informar a la extensión pglogical sobre qué columnas identifican de forma única las filas. Esto debe evitarse siempre que sea posible. Tablas que no tienen claves principales, son estáticas y nunca se UPDATED ni se DELETED, y solo admiten INSERTS. Este tipo de tablas no necesita claves principales.
  • Gestión de activadores y secuencias en bases de datos de suscriptores. De forma predeterminada, los activadores se definen como activadores ORIGIN o LOCAL, y no se activan en la base de datos de suscriptores cuando se replican las filas. Todos los activadores deben estar marcados para asegurarse de que la opción REPLICA esté configurada en todos los activadores, de modo que no se activen en el extremo del suscriptor a menos que sea necesario.
  • Gestionar la resolución de conflictos de forma manual o automática mediante who wins reglas.
  • Replicación de comandos del lenguaje de definición de datos (DDL) implementándolos manualmente en todos los endpoints o replicando automáticamente el DDL en las bases de datos de suscriptor mediante la función de API pglogical adecuada en la base de datos de proveedor.
  • Asegurarse de que las tablas y secuencias recién creadas se añadan de forma manual o automática a los conjuntos de réplicas de las bases de datos principales.
  • Asegurarse de que haya una red TCP sólida, eficiente, fiable y segura entre todos los endpoints de la topología de replicación.

Entre las restricciones y limitaciones adicionales de la extensión pglogical se incluyen las siguientes:

  • Se necesitan permisos de superusuario para la versión pglogical 2.4.3.
  • Aunque la mayoría de las tablas y secuencias se pueden replicar, la extensión pglogical no replica otros tipos de objetos, y las tablas TEMPORARY y UNLOGGED tampoco se replican.
  • Para replicar DDL, se debe usar la función de API pglogical. Los comandos DDL nativos no se replican, excepto el comando TRUNCATE.
  • Funciona a nivel de objeto por tabla y por secuencia, y se implementa por base de datos. Esto significa que algunos objetos, incluidos los objetos con ámbito de clúster, como users y roles, se excluyen de la réplica y deben gestionarse por separado.

Siguientes pasos