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 delayopcional 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
pglogicaly 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ónpglogicalcomo 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
pglogicalofrece 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
pglogicalfunciona 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 IDENTITYpara informar a la extensiónpglogicalsobre 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 seUPDATEDni seDELETED, y solo admitenINSERTS. 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
ORIGINoLOCAL, 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ónREPLICAesté 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 winsreglas. - 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
pglogicaladecuada 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
pglogical2.4.3. - Aunque la mayoría de las tablas y secuencias se pueden replicar, la extensión
pglogicalno replica otros tipos de objetos, y las tablasTEMPORARYyUNLOGGEDtampoco 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
usersyroles, se excluyen de la réplica y deben gestionarse por separado.
Siguientes pasos
- Replica datos entre AlloyDB para PostgreSQL y AlloyDB Omni.
- Replicar datos entre AlloyDB Omni y otras bases de datos.