Habilita la supervisión del retraso de replicaciones para las versiones de PostgreSQL anteriores a la 9.6

En esta página, se describe cómo habilitar la supervisión del retraso de replicación cuando migras desde una instancia de origen que ejecuta versiones de PostgreSQL anteriores a la 9.6 a AlloyDB para PostgreSQL. Para obtener instrucciones completas sobre la configuración de la base de datos de origen, consulta Configura la base de datos de origen.

En el caso de las instancias de origen que ejecutan versiones de PostgreSQL anteriores a la 9.6, la métrica de retraso de replicación no está disponible de forma predeterminada, ya que los usuarios que no son superusuarios no pueden acceder a las estadísticas de replicación en la vista pg_stat_replication. Puedes usar los siguientes enfoques si deseas supervisar la demora de replicación de esas fuentes.

Crea una función de definidor de seguridad

La opción recomendada para hacer un seguimiento del retraso de la replicación en las fuentes que ejecutan versiones de PostgreSQL anteriores a la 9.6 es crear una función de definidor de seguridad que permita a Database Migration Service consultar las estadísticas de retraso de la replicación. Lleva a cabo los pasos siguientes:

  1. Conéctate a tu base de datos de origen con una cuenta de superusuario y define la función pg_stat_replication_user():
    CREATE OR REPLACE FUNCTION pg_stat_replication_user()
    RETURNS TABLE (
      pid               integer,
      usesysid          oid,
      username          name,
      application_name  text,
      client_addr       inet,
      client_hostname   text,
      client_port       integer,
      backend_start     timestamp with time zone,
      backend_xmin      xid,
      state             text,
      sent_location     pg_lsn,
      write_location    pg_lsn,
      flush_location    pg_lsn,
      replay_location   pg_lsn,
      sync_priority     integer,
      sync_state        text
    )
    LANGUAGE SQL
    SECURITY DEFINER
    AS $$
      SELECT * FROM pg_catalog.pg_stat_replication;
    $$;
  2. Revoca los derechos de ejecución pública de la función y otorga permisos de ejecución exclusivamente a tu cuenta de usuario de migración dedicada:
    REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
    GRANT EXECUTE ON FUNCTION pg_stat_replication_user() TO "MIGRATION_USER_ACCOUNT_NAME";

Para las instancias alojadas de forma independiente, usa los privilegios de SUPERUSER.

En el caso de las instancias de PostgreSQL autohospedadas, puedes otorgar el privilegio SUPERUSER directamente a tu cuenta de usuario de migración dedicada:

ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH SUPERUSER;

Supervisa el retraso de replicación de forma manual

También puedes supervisar el retraso de la replicación de forma manual en la instancia de origen con la siguiente consulta:

SELECT current_timestamp, application_name,
  pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag,
  pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag,
  pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag,
  pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag
FROM pg_stat_replication;

¿Qué sigue?