Información acerca de la extensión pglogical

Selecciona una versión de la documentación:

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

Descripción general

La pglogical extensión es una herramienta de replicación lógica sólida y flexible diseñada para PostgreSQL, y también admite alta disponibilidad (HA) y recuperación ante desastres (DR).

La replicación binaria tradicional, comúnmente conocida como replicación física, replica los cambios en el sistema de archivos y a nivel de bloque, lo que da como resultado un reflejo físico en el sistema de destino. Aunque la replicación física es sólida y protege todo el clúster de bases 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 y los replica, y luego los reproduce en una o más bases de datos de suscriptor. Esta replicación se conoce como replicación lógica.

Si usas la extensión pglogical, puedes hacer lo siguiente:

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

Beneficios

La replicación lógica con la extensión pglogical ofrece los siguientes beneficios:

  • Replicación selectiva: Proporciona la flexibilidad para configurar filtros y reglas para determinar qué datos deseas replicar y dónde. Puedes elegir qué tablas se incluyen y cómo se controlan las tablas nuevas, ya sea que estén incluidas o no. También puedes agregar filtros de columna y fila. Se puede agregar un apply delay opcional para situaciones en las que deseas que el suscriptor represente algún punto rezagado en el tiempo del proveedor.

  • Replicación bidireccional y de varios elementos principales: Todas las bases de datos miembro están abiertas en un estado de lectura/escritura y son completamente utilizables. Cada base de datos de extremo actúa como proveedor y suscriptor, lo que permite la creación de situaciones de replicación avanzadas y la posibilidad de actualizaciones de datos que se realizan en diferentes extremos.

  • Compatibilidad con proveedores de servicios en la nube: Los proveedores de servicios en 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 una opción, lo que permite configuraciones de múltiples nubes 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. En especial, cuando la base de datos de origen del proveedor es una versión inferior a la base de datos de destino del suscriptor, la replicación entre versiones se puede implementar con confiabilidad.

    La extensión pglogical ofrece compatibilidad con muchas versiones anteriores de PostgreSQL, como la versión 9.4 y versiones posteriores. Esto la convierte en una opción óptima para situaciones en las que trabajas con sistemas heredados y deseas 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, con compatibilidad para versiones anteriores de PostgreSQL y servicios administrados en la nube que incluyen Google Cloud SQL para PostgreSQL y AlloyDB.

Limitaciones de la replicación lógica

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

Considera los siguientes puntos para una implementación confiable:

  • Consideración sobre cómo controlar los objetos con permisos de base de datos y de clúster que están fuera del alcance de la replicación. La extensión pglogical funciona a nivel de la base de datos y solo con un conjunto especificado de tablas y secuencias. Otros tipos de objetos, como funciones y procedimientos, se deben replicar con algún otro método.
  • Se recomienda que todas las tablas de replicación tengan una clave primaria. Es posible utilizar 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. Las tablas que no tienen claves primarias son de naturaleza estática y nunca se UPDATED ni DELETED, y solo admiten INSERTS. Estos tipos de tablas no necesitan claves primarias.
  • Administración de activadores y secuencias en bases de datos de suscriptor. De forma predeterminada, los activadores se definen como activadores ORIGIN o LOCAL, y no se activan en la base de datos de suscriptor cuando se replican las filas. Se deben verificar todos los activadores para garantizar que la opción REPLICA esté configurada para cualquier activador, de modo que no se active en el extremo del suscriptor, a menos que sea necesario.
  • Control de la resolución de conflictos de forma manual o automática a través de reglas de who wins.
  • Replicación de comandos del lenguaje de definición de datos (DDL) mediante la implementación manual en todos los extremos o la replicación automática de DDL en bases de datos de suscriptor con 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 agreguen de forma manual o automática a los conjuntos de replicación en las bases de datos principales.
  • Asegurarse de que exista una red TCP sólida, de alto rendimiento, confiable y segura entre todos los extremos de la topología de replicación.

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

  • Se requieren permisos de superusuario para la versión 2.4.3 de pglogical.
  • Si bien se pueden replicar la mayoría de las tablas y secuencias, la extensión pglogical no replica otros tipos de objetos, y las tablas TEMPORARY y UNLOGGED no 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.
  • Opera 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 permisos de clúster, como users y roles, se excluyen de la replicación y se deben administrar por separado.

¿Qué sigue?