En esta página, se proporciona una descripción general de la extensión pglogical
, sus beneficios y limitaciones.
Descripción general
La extensión pglogical
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 a nivel del sistema de archivos y del bloque, lo que genera un espejo 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 subyacente de la base de datos y a los archivos de registro de escritura por adelantado (WAL).
Mientras que la extensión pglogical
extrae cambios de SQL de una base de datos del proveedor, los replica y, luego, los vuelve a reproducir en una o más bases de datos de suscriptores. Esta replicación se conoce como replicación lógica.
Con 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 muchos servicios en la nube de terceros
Beneficios
La replicación lógica con la extensión pglogical
ofrece los siguientes beneficios:
Repetición selectiva: Proporciona la flexibilidad para establecer filtros y reglas para determinar qué datos deseas replicar y dónde. Puedes elegir qué tablas se incluyen y cómo se manejan las tablas nuevas, ya sea que se incluyan o no. También puedes agregar filtros de columnas y filas. Se puede agregar un
apply delay
opcional para las situaciones en las que deseas que el suscriptor represente un punto final en el tiempo del proveedor.Replicación bidireccional y multiprincipal: Todas las bases de datos de miembros están abiertas en un estado de lectura y escritura, y se pueden usar por completo. 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ónpglogical
como 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 particular, cuando la base de datos de origen del proveedor es una versión anterior 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 tienes que lidiar 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 por Cloud, incluidos 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 mala administración puede interrumpir el proceso de replicación.
Ten en cuenta los siguientes puntos para lograr una implementación confiable:
- Consideración sobre cómo controlar 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 en un conjunto especificado de tablas y secuencias. Otros tipos de objetos, como funciones y procedimientos, deben replicarse con algún otro método. - Se recomienda que todas las tablas de replicación tengan una clave primaria.
Es posible usar la función
REPLICA IDENTITY
de la tabla para informar a la extensiónpglogical
sobre qué columnas identifican de forma única las filas. Esto se debe evitar siempre que sea posible. Las tablas que no tienen claves primarias son estáticas y nunca sonUPDATED
oDELETED
, y solo admitenINSERTS
. Estos tipos de tablas no necesitan claves primarias. - Administración de activadores y secuencias en bases de datos de suscriptores De forma predeterminada, los activadores se definen como activadores
ORIGIN
oLOCAL
y no se activan en la base de datos del suscriptor cuando se replican las filas. Se deben verificar todos los activadores para asegurarse de que la opciónREPLICA
esté configurada para cualquier activador, de modo que no se active en el extremo del suscriptor, a menos que sea necesario. - Controlar la resolución de conflictos de forma manual o automática a través de reglas
who wins
- La 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 del DDL en las bases de datos de suscriptores con la función adecuada de la API de
pglogical
en la base de datos del proveedor - Garantizar 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
- Garantizar que exista una red TCP sólida, confiable, segura y de alto rendimiento 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:
- Actualmente, se requieren permisos de superusuario para la versión 2.4.3 de
pglogical
. - Si bien la mayoría de las tablas y secuencias se pueden replicar, la extensión
pglogical
no replica otros tipos de objetos, y tampoco se replican las tablasTEMPORARY
niUNLOGGED
. - Para replicar DDL, se debe usar la función de la API de 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 centrados en el clúster, como
users
yroles
, se excluyen de la replicación y deben administrarse por separado.
¿Qué sigue?
- Cómo replicar datos entre Google Cloud AlloyDB y AlloyDB Omni
- Replica datos entre AlloyDB Omni y otras bases de datos