Replicación lógica - AWS Guía prescriptiva

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:

  1. 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.

  2. Los cambios en las bases de datos de los publicadores se envían al suscriptor en tiempo real.

  3. 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ÉPLICA configurada para replicar las operaciones de actualización y eliminación, de modo que el suscriptor pueda identificar las filas adecuadas para actualizar o eliminar. En la mayoría de los casos, la identidad de la réplica se determina mediante una clave principal o una clave única. Si no hay una clave principal y no puede crearla, puede establecer la identidad de la réplica en full. 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_level en logical.

  • Establezca max_replication_slots para 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_senders para incluir max_replication_slots y el número de réplicas físicas.

Son necesarias las configuraciones siguientes para los valores del suscriptor:

  • Establezca max_replication_slots para 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_workers para incluir al menos el número de suscripciones y algunos trabajadores de reserva para la sincronización de las tablas.

  • Establezca max_worker_processes en 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:

  1. 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.

  2. Cree un suscriptor con el comando CREATE SUBSCRIPTION y, a continuación, proporcione los detalles de la publicación al crear el suscriptor.

  3. La carga de datos inicial comienza de manera automática desde la base de datos de origen a la base de datos de destino.

  4. Los datos de los cambios que se captura mediante las ranuras de replicación se replican en la base de datos de destino.

  5. 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 en el blog de bases de datos de AWS.

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 en la documentación de PostgreSQL.