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 en función de 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 más suscriptores se suscriben a una o más publicaciones en un nodo de publicación. Los suscriptores extraen datos de las publicaciones a las que están suscritos.

La replicación lógica le proporciona un control pormenorizado sobre la replicación y la seguridad de los datos. Puede utilizar la replicación lógica en los siguientes casos de uso:

  • Replicación entre diferentes versiones principales de PostgreSQL

  • Replicación entre instancias de PostgreSQL en diferentes plataformas (por ejemplo, de Linux a Windows)

Arquitectura

Los siguientes pasos del flujo de trabajo muestran cómo funciona una arquitectura de replicación lógica:

  1. Se toma una instantánea de los datos de la base de datos del editor y se copian en la base de datos de suscriptores.

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

  3. El suscriptor aplica los datos en el mismo orden que el editor, 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 (editor). Una publicación es un conjunto de cambios generados a partir de una tabla o un grupo de tablas. Puede elegir los cambios mediante una combinación de operaciones de INSERTAR, ACTUALIZAR, ELIMINAR y TRUNCAR. De forma 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 la byte-by-byte replicación.

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 enfull. Esto significa que toda la fila se convierte en la clave. Se recomienda establecer la identidad de la réplica 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 a otra base de datos y conjunto de publicaciones (una o más) a las que se quiere suscribir.

Opciones de configuración

Se requieren las siguientes configuraciones para la configuración del editor:

  • wal_levelDefinido enlogical.

  • max_replication_slotsConfigúrelo para incluir al menos el número de suscripciones que se espera que se conecten y algunos espacios reservados para la sincronización de tablas.

  • max_wal_sendersConfigúrelo max_replication_slots según el número de réplicas físicas que desee.

Se requieren las siguientes configuraciones para la configuración del suscriptor:

  • max_replication_slotsConfigúrelo para incluir el número mínimo de suscripciones que planea añadir al suscriptor y algunas suscripciones reservadas para la sincronización de tablas.

  • max_logical_replication_workersConfigúrelo de forma que quepa al menos el número de suscripciones y algunos trabajadores de reserva para la sincronización de las tablas.

  • max_worker_processesEstablézcalo como mínimo en (max_logical_replication_workers+1).

Cada suscripción recibe los cambios a través de una ranura de replicación.

Los siguientes pasos muestran cómo realizar la replicación lógica:

  1. Cree un publicador mediante 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 mediante 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 automáticamente desde la base de datos de origen hasta la base de datos de destino.

  4. Los datos de cambios que capturan 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 comprobar el estado de la replicación. Utilice pg_stat_replication_slots para comprobar la ranura de replicación.

Para obtener más información, consulte la publicación Uso de la replicación lógica para replicar Amazon RDS for PostgreSQL gestionado y Amazon Aurora to self-managed PostgreSQL en el blog de bases de datos de AWS.

Limitaciones

Le recomendamos que tenga en cuenta las siguientes limitaciones del método de replicación lógica antes de iniciar la migración:

  • En la actualidad, la replicación lógica es la que presenta más restricciones y brechas de funcionalidad.

  • La replicación lógica no puede replicar el lenguaje de definición de datos (DDL), las secuencias ni las operaciones con 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 obtener más información sobre las limitaciones de la replicación lógica, consulte 31.6. Restricciones en la documentación de PostgreSQL.