Activer la surveillance du délai de réplication pour les versions PostgreSQL antérieures à 9.6

Cette page explique comment activer la surveillance du délai de réplication lorsque vous migrez d'une instance source exécutant des versions de PostgreSQL antérieures à la version 9.6 vers AlloyDB pour PostgreSQL. Pour obtenir des instructions complètes sur la configuration de la base de données source, consultez Configurer la base de données source.

Pour les instances sources exécutant des versions de PostgreSQL antérieures à 9.6, la métrique de délai de réplication n'est pas disponible par défaut, car les non-superutilisateurs ne peuvent pas accéder aux statistiques de réplication dans la vue pg_stat_replication. Vous pouvez utiliser les approches suivantes si vous souhaitez surveiller le délai de réplication pour ces sources.

Créer une fonction de définition de sécurité

Pour suivre le délai de réplication des sources exécutant des versions de PostgreSQL antérieures à 9.6, nous vous recommandons de créer une fonction de définition de sécurité permettant à Database Migration Service d'interroger les statistiques de délai de réplication. Procédez comme suit :

  1. Connectez-vous à votre base de données source à l'aide d'un compte de super-utilisateur et définissez la fonction 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. Révoquez les droits d'exécution publics de la fonction et accordez des autorisations d'exécution exclusivement à votre compte utilisateur de migration dédié :
    REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
    GRANT EXECUTE ON FUNCTION pg_stat_replication_user() TO "MIGRATION_USER_ACCOUNT_NAME";

Pour les instances auto-hébergées : utilisez les droits SUPERUSER.

Pour les instances PostgreSQL auto-hébergées, vous pouvez accorder le droit SUPERUSER directement à votre compte utilisateur dédié à la migration :

ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH SUPERUSER;

Surveiller manuellement le délai de réplication

Vous pouvez également surveiller manuellement le délai de réplication sur l'instance source à l'aide de la requête suivante :

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;

Étapes suivantes