aurora_replica_status - Amazon Aurora

aurora_replica_status

Exibe o status de todos os nós de leitor do Aurora PostgreSQL.

Sintaxe

aurora_replica_status()

Argumentos

Nenhum

Tipo de retorno

Registro SETOF com as seguintes colunas:

  • server_id: o DB de instância de banco de dados (identificador).

  • session_id: um identificador exclusivo da sessão atual, retornado para instâncias primárias e do leitor da seguinte forma:

    • Para a instância principal, session_id é sempre `MASTER_SESSION_ID’.

    • Para instâncias de leitor, session_id é sempre o UUID (identificador universalmente exclusivo) da instância do leitor.

  • durable_lsn: o número de sequência de log (LSN) que foi salvo no armazenamento.

    • Para o volume principal, o LSN (VDL) durável do volume principal que está atualmente em vigor.

    • Para quaisquer volumes secundários, o VDL do principal até o secundário que foi aplicado com êxito.

    nota

    Um número de sequência de log (LSN) é um número sequencial exclusivo que identifica um registo no log de transações do banco de dados. Os LSNs são ordenados de forma que um LSN maior represente uma transação ocorrida posteriormente na sequência.

  • highest_lsn_rcvd: o LSN mais alto (mais recente) recebido pela instância de banco de dados da instância de banco de dados do gravador.

  • current_read_lsn: o LSN do snapshot mais recente que foi aplicado a todos os leitores.

  • cur_replay_latency_in_usec: o número de microssegundos que se espera para reproduzir o log no secundário.

  • active_txns: o número de transações atualmente ativas.

  • is_current: não usado.

  • last_transport_error: código do último erro de replicação.

  • last_error_timestamp: carimbo de data/hora do último erro de replicação.

  • last_update_timestamp: carimbo de data/hora da última atualização para o status da réplica. No Aurora PostgreSQL 13.9, o valor last_update_timestamp da instância de banco de dados com que você tem conexão é definido como NULL.

  • feedback_xmin: o feedback_xmin de standby a quente da réplica. O ID mínimo (mais antigo) de transação ativo usado pela instância de banco de dados.

  • feedback_epoch: a época que a instância de banco de dados usa quando gera informações de standby a quente.

  • replica_lag_in_msec: o tempo de atraso da instância do leitor em relação à instância do gravador, em milissegundos.

  • log_stream_speed_in_kib_per_second: a taxa de transferência do fluxo de logs em kilobytes por segundo.

  • log_buffer_sequence_number: o número da sequência do buffer de log.

  • oldest_read_view_trx_id: não usado.

  • oldest_read_view_lsn: o LSN mais antigo usado pela instância de banco de dados para fazer a leitura no armazenamento.

  • pending_read_ios: a página pendente indica que ainda há pendência na réplica.

  • read_ios: o número total de leituras de página na réplica.

  • iops: não usado.

  • cpu: uso da CPU pelo processo de réplica. Observe que não se trata do uso da CPU pela instância, mas pelo processo. Para obter mais informações sobre o uso da CPU pela instância, consulte Métricas no nível da instância do Amazon Aurora.

Observações de uso

A função aurora_replica_status retorna valores do gerenciador de status de réplica de um cluster de banco de dados do Aurora PostgreSQL. Você pode usar essa função para obter informações sobre o status da replicação em seu cluster de banco de dados do Aurora PostgreSQL, como métricas para todas as instâncias de banco de dados no cluster de banco de dados do Aurora. Por exemplo, você pode fazer o seguinte:

  • Obtenha informações sobre o tipo de instância (gravador, leitor) no cluster de banco de dados do Aurora PostgreSQL: você pode obter essas informações conferindo os valores das seguintes colunas:

    • server_id: contém o nome da instância que você especificou quando criou a instância. Em alguns casos, como para a instância principal (gravador), o nome geralmente é criado para você anexando -instância-1 ao nome criado para o cluster de banco de dados do Aurora PostgreSQL.

    • session_id: o campo session_id indica se a instância é um leitor ou um gravador. Para uma instância de gravador, session_id é sempre definido como "MASTER_SESSION_ID". Para uma instância de leitor, session_id é definido como o UUID do leitor específico.

  • Diagnosticar problemas comuns de replicação, como atraso de réplica: o atraso da réplica é o tempo em milissegundos em que o cache de página de uma instância de leitor está atrasado em relação à instância de gravador. Esse atraso ocorre porque os clusters do Aurora usam replicação assíncrona, conforme descrito em Replicação com o Amazon Aurora. Ele é mostrado na coluna replica_lag_in_msec, nos resultados retornados por essa função. O atraso também pode ocorrer quando uma consulta é cancelada devido a conflitos com a recuperação em um servidor em espera. Você pode conferir pg_stat_database_conflicts() para verificar se esse conflito está causando o atraso da réplica (ou não). Para obter mais informações, consulte Coletor de estatísticas na documentação do PostgreSQL. Para saber mais sobre alta disponibilidade e replicação, consulte Perguntas frequentes sobre o Amazon Aurora.

    O Amazon CloudWatch armazena resultados replica_lag_in_msec ao longo do tempo, como a métrica do AuroraReplicaLag. Para obter mais informações sobre o uso de métricas do CloudWatch para o Aurora, consulte Monitorar métricas do Amazon Aurora com o Amazon CloudWatch.

Para saber mais sobre a solução de problemas de réplicas de leitura e reinicializações do Aurora, consulte Por que minha réplica de leitura do Amazon Aurora ficou atrasada e foi reiniciada? no AWS Support Center.

Exemplos

O exemplo a seguir mostra como obter o status de replicação de todas as instâncias em um cluster de banco de dados do Aurora PostgreSQL:

=> SELECT * FROM aurora_replica_status();

O exemplo a seguir mostra a instância do gravador no cluster de banco de dados docs-lab-apg-main do Aurora PostgreSQL:

=> SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role FROM aurora_replica_status() WHERE session_id = 'MASTER_SESSION_ID'; server_id | instance_role ------------------------+--------------- db-119-001-instance-01 | writer

O exemplo a seguir lista todas as instâncias de leitor em um cluster:

=> SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role FROM aurora_replica_status() WHERE session_id <> 'MASTER_SESSION_ID'; server_id | instance_role ------------------------+--------------- db-119-001-instance-02 | reader db-119-001-instance-03 | reader db-119-001-instance-04 | reader db-119-001-instance-05 | reader (4 rows)

O exemplo a seguir lista todas as instâncias, o atraso de cada instância em relação ao gravador e o tempo desde a última atualização:

=> SELECT server_id, CASE WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer' ELSE 'reader' END AS instance_role, replica_lag_in_msec AS replica_lag_ms, round(extract (epoch FROM (SELECT age(clock_timestamp(), last_update_timestamp))) * 1000) AS last_update_age_ms FROM aurora_replica_status() ORDER BY replica_lag_in_msec NULLS FIRST; server_id | instance_role | replica_lag_ms | last_update_age_ms ------------------------+---------------+----------------+-------------------- db-124-001-instance-03 | writer | [NULL] | 1756 db-124-001-instance-01 | reader | 13 | 1756 db-124-001-instance-02 | reader | 13 | 1756 (3 rows)