Ativar o monitoramento de atraso de replicação para versões do PostgreSQL anteriores à 9.6

Nesta página, descrevemos como ativar o monitoramento de atraso de replicação ao migrar de uma instância de origem que executa versões do PostgreSQL anteriores à 9.6. Para ver as etapas completas de configuração do banco de dados de origem, consulte Configurar o banco de dados de origem.

Para instâncias de origem que executam versões do PostgreSQL anteriores à 9.6, a métrica de atraso de replicação não está disponível por padrão. Você pode usar as seguintes abordagens se quiser monitorar o atraso de replicação para essas origens.

Criar uma função de definidor de segurança

A opção recomendada para rastrear o atraso de replicação em origens que executam versões do PostgreSQL anteriores à 9.6 é criar uma função de definição de segurança que permita ao Database Migration Service consultar o atraso de replicação. Siga estas etapas:

  1. Defina a seguinte função usando uma conta de superusuário:
    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. Conceda permissão de execução ao usuário de migração:
    REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
    GRANT EXECUTE ON FUNCTION pg_stat_replication_user() TO <USER>;

Para instâncias autogerenciadas: use os privilégios SUPERUSER

Para instâncias autogerenciadas, é possível conceder o privilégio SUPERUSER diretamente ao USER de migração dedicado.

Monitorar o atraso de replicação manualmente

Também é possível monitorar o atraso de replicação manualmente usando a seguinte 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
WHERE application_name LIKE 'cloudsql%';

A seguir