Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Restablecimiento de la replicación lógica después de una actualización principal - Amazon Aurora

Restablecimiento de la replicación lógica después de una actualización principal

Para poder realizar una actualización de una versión principal de un clúster de base de datos de Aurora PostgreSQL que se haya configurado como nodo publicador para la replicación lógica, debe eliminar todas las ranuras de replicación, incluso las que no estén activas. Se recomienda desviar temporalmente las transacciones de la base de datos del nodo publicador, eliminar las ranuras de replicación, actualizar el clúster de base de datos de Aurora PostgreSQL, y, a continuación, restablecer y reiniciar la replicación.

Las ranuras de replicación se alojan únicamente en el nodo publicador. El nodo suscriptor de Aurora PostgreSQL en un escenario de replicación lógica no tiene ranuras que eliminar. El proceso de actualización de la versión principal de Aurora PostgreSQL permite actualizar el suscriptor a una nueva versión principal de PostgreSQL independiente del nodo publicador. Sin embargo, el proceso de actualización interrumpe el proceso de replicación e interfiere con la sincronización de los datos WAL entre el nodo publicador y el nodo suscriptor. Debe restablecer la replicación lógica entre el publicador y el suscriptor después de actualizar el publicador, el suscriptor o ambos. En el procedimiento siguiente se muestra cómo determinar que se ha interrumpido la replicación y cómo resolver el problema.

Determinación de que la replicación lógica se ha interrumpido

Puede determinar que el proceso de replicación se ha interrumpido consultando el nodo publicador o el nodo suscriptor de la siguiente manera.

Para comprobar el nodo publicador
  • Utilice psql para conectarse al nodo publicador y, a continuación, consulte la función pg_replication_slots. Anote el valor de la columna activa. Normalmente, esto devolverá t (true) y mostrará que la replicación está activa. Si la consulta devuelve f (false), indica que la replicación en el suscriptor se ha detenido.

    SELECT slot_name,plugin,slot_type,active FROM pg_replication_slots; slot_name | plugin | slot_type | active -------------------------------------------+------------------+-----------+-------- pgl_labdb_docs_labcb4fa94_docs_lab3de412c | pglogical_output | logical | f (1 row)
Para comprobar el nodo suscriptor

En el nodo suscriptor, puede comprobar el estado de la replicación de tres maneras diferentes.

  • Revise los registros de PostgreSQL en el nodo suscriptor para encontrar los mensajes de error. El registro identifica el error con mensajes que incluyen el código de salida 1, como se muestra a continuación.

    2022-07-06 16:17:03 UTC::@:[7361]:LOG: background worker "pglogical apply 16404:2880255011" (PID 14610) exited with exit code 1 2022-07-06 16:19:44 UTC::@:[7361]:LOG: background worker "pglogical apply 16404:2880255011" (PID 21783) exited with exit code 1
  • Consulte la función pg_replication_origin. Conéctese a la base de datos en el nodo suscriptor mediante psql y consulte la función pg_replication_origin de la siguiente manera.

    SELECT * FROM pg_replication_origin; roident | roname ---------+-------- (0 rows)

    Un conjunto de resultados vacío significa que la replicación se ha interrumpido. Debería ver una salida como la siguiente.

    roident | roname ---------+---------------------------------------------------- 1 | pgl_labdb_docs_labcb4fa94_docs_lab3de412c (1 row)
  • Consulte la función pglogical.show_subscription_status tal y como se muestra en el siguiente ejemplo.

    SELECT subscription_name,status,slot_name FROM pglogical.show_subscription_status(); subscription_name | status | slot_name ---====----------------+--------+------------------------------------- docs_lab_subscription | down | pgl_labdb_docs_labcb4fa94_docs_lab3de412c (1 row)

    Este resultado muestra que la replicación se ha interrumpido. Su estado es down. Normalmente, la salida muestra el estado como replicating.

Si el proceso de replicación lógica se ha interrumpido, puede restablecerla siguiendo estos pasos.

Para restablecer la replicación lógica entre los nodos publicador y suscriptor

Para restablecer la replicación, primero debe desconectar el suscriptor del nodo publicador y, a continuación, restablecer la suscripción, tal como se describe en estos pasos.

  1. Conéctese al nodo suscriptor con psql de la siguiente manera.

    psql --host=222222222222.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
  2. Desactive la suscripción mediante la función pglogical.alter_subscription_disable.

    SELECT pglogical.alter_subscription_disable('docs_lab_subscription',true); alter_subscription_disable ---------------------------- t (1 row)
  3. Obtenga el identificador del nodo publicador consultando el pg_replication_origin de la siguiente manera.

    SELECT * FROM pg_replication_origin; roident | roname ---------+------------------------------------- 1 | pgl_labdb_docs_labcb4fa94_docs_lab3de412c (1 row)
  4. Utilice la respuesta del paso anterior con el comando pg_replication_origin_create para asignar el identificador que podrá utilizar la suscripción cuando se restablezca.

    SELECT pg_replication_origin_create('pgl_labdb_docs_labcb4fa94_docs_lab3de412c'); pg_replication_origin_create ------------------------------ 1 (1 row)
  5. Para activar la suscripción, introduzca su nombre con un estado de true, tal como se muestra en el ejemplo siguiente.

    SELECT pglogical.alter_subscription_enable('docs_lab_subscription',true); alter_subscription_enable --------------------------- t (1 row)

Compruebe el estado del nodo. Su estado debería ser replicating, tal y como se muestra en este ejemplo.

SELECT subscription_name,status,slot_name FROM pglogical.show_subscription_status(); subscription_name | status | slot_name -------------------------------+-------------+------------------------------------- docs_lab_subscription | replicating | pgl_labdb_docs_lab98f517b_docs_lab3de412c (1 row)

Compruebe el estado de la ranura de replicación del suscriptor en el nodo publicador. La columna active de la ranura debe devolver t (true), lo que indica que se ha restablecido la replicación.

SELECT slot_name,plugin,slot_type,active FROM pg_replication_slots; slot_name | plugin | slot_type | active -------------------------------------------+------------------+-----------+-------- pgl_labdb_docs_lab98f517b_docs_lab3de412c | pglogical_output | logical | t (1 row)
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.