Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Replicación lógica
La replicación lógica es un método para replicar objetos de datos y sus cambios según la identidad de replicación de los objetos y sus cambios. La replicación lógica utiliza un modelo de publicación y suscripción en el que uno o varios suscriptores se suscriben a una o varias publicaciones en un nodo publicador. Los suscriptores extraen los datos de las publicaciones a las que están suscritos.
La replicación lógica le aporta un control detallado sobre la replicación de datos y la seguridad. Puede utilizar la replicación lógica en los casos de uso siguientes:
Replicación entre diferentes versiones principales de PostgreSQL
Replicación entre instancias de PostgreSQL en plataformas distintas (por ejemplo, de Linux a Windows)
Arquitectura
En los pasos siguientes del flujo de trabajo se muestra el funcionamiento de una arquitectura de replicación lógica:
Se hace una instantánea de los datos de la base de datos del publicador y se copian en la base de datos de suscriptores.
Los cambios en las bases de datos de los publicadores se envían al suscriptor en tiempo real.
El suscriptor aplica los datos en el mismo orden que el publicador, de modo que se garantiza la coherencia transaccional de las publicaciones incluidas en una sola suscripción.
Una publicación se puede definir en una instancia principal (publicador). Una publicación es un conjunto de cambios que se generan a partir de una tabla o un grupo de tablas. Puede elegir cambios de una combinación de operaciones INSERT, UPDATE, UPDATE, DELETE y TRUNCATE. De manera predeterminada, todos estos cambios se replican en la base de datos de suscriptores. Esto contrasta con la replicación física, en la que se utilizan direcciones de bloque exactas para una replicación byte a byte.
Una tabla publicada debe tener una IDENTIDAD DE RÉPLICAfull. Esto significa que toda la fila se convierte en la clave. Le recomendamos establecer la identidad de la réplica en full como último recurso, ya que esta configuración es ineficiente.
Una suscripción es la parte posterior de la replicación lógica. El nodo en el que se define una suscripción se denomina suscriptor. Una suscripción define la conexión con otra base de datos y un conjunto de publicaciones (una o varias) a las que se quiere suscribir.
Opciones de configuración
Son necesarias las configuraciones siguientes para los valores del publicador:
Establezca
wal_levelenlogical.Establezca
max_replication_slotspara incluir al menos el número de suscripciones que se espera conectar y algunos espacios reservados para la sincronización de tablas.Establezca
max_wal_senderspara incluirmax_replication_slotsy el número de réplicas físicas.
Son necesarias las configuraciones siguientes para los valores del suscriptor:
Establezca
max_replication_slotspara incluir el número mínimo de suscripciones que tiene previsto agregar al suscriptor y algunas suscripciones reservadas para la sincronización de tablas.Establezca
max_logical_replication_workerspara incluir al menos el número de suscripciones y algunos trabajadores de reserva para la sincronización de las tablas.Establezca
max_worker_processesen al menos (max_logical_replication_workers+1).
Cada suscripción recibe los cambios a través de una ranura de replicación.
En los pasos siguientes se muestra cómo hacer la replicación lógica:
Cree un publicador con el comando CREATE PUBLICATION
para un grupo de tablas (que formarán parte de la replicación) en la base de datos de origen. Cree un suscriptor con el comando CREATE SUBSCRIPTION
y, a continuación, proporcione los detalles de la publicación al crear el suscriptor. La carga de datos inicial comienza de manera automática desde la base de datos de origen a la base de datos de destino.
Los datos de los cambios que se captura mediante las ranuras de replicación se replican en la base de datos de destino.
Utilice pg_stat_replication
(una tabla de catálogo) para verificar el estado de la replicación. Utilice pg_stat_replication_slots para verificar la ranura de replicación.
Para más información, consulte la publicación Using logical replication to replicate managed Amazon RDS for PostgreSQL and Amazon Aurora to self-managed PostgreSQL
Limitaciones
Le recomendamos que tenga en cuenta las limitaciones siguientes del método de replicación lógica antes de iniciar la migración:
De momento, la replicación lógica es la que presenta más restricciones y carencias en cuanto a funcionalidad.
La replicación lógica no puede replicar el lenguaje de definición de datos (DDL), las secuencias ni las operaciones de objetos grandes. Una acción de truncamiento (que se aplica a una tabla con una clave externa) debe incluir las tablas relacionadas de la misma suscripción.
Para más información sobre las replicaciones de la replicación lógica, consulte 31.6. Restrictions