Monitoramento da replicação de leitura - Amazon Relational Database Service

Monitoramento da replicação de leitura

É possível monitorar o status de uma réplica de leitura de várias maneiras. O console do Amazon RDS mostra o status de uma réplica de leitura na seção Replication (Replicação) da guia Connectivity & security (Conectividade e segurança) nos detalhes da réplica de leitura. Para visualizar os detalhes de uma réplica de leitura, clique no nome dela na lista de instâncias de banco de dados no console do Amazon RDS.

Status da réplica de leitura

Também é possível visualizar o status de uma réplica de leitura usando o comando da AWS CLI describe-db-instances ou a operação da API do Amazon RDS DescribeDBInstances.

O status de uma réplica de leitura pode ser um dos seguintes:

  • replicating (replicando) – a réplica de leitura está sendo replicada com sucesso.

  • replicação degradada (somente SQL Server) – as réplicas estão recebendo dados da instância primária, mas um ou mais bancos de dados podem não estar recebendo atualizações. Isso pode ocorrer, por exemplo, quando uma réplica está no processo de configuração de bancos de dados recém-criados. Também pode ocorrer quando alterações não suportadas de DDL ou objetos grandes são feitas no ambiente azul de uma implantação azul/verde.

    O status não fará a transição de replication degraded para error, a menos que ocorra um erro durante o estado degradado.

  • error – ocorreu um erro com a replicação. Verifique o campo Replication Error (Erro de replicação) no console do Amazon RDS ou o log de eventos para determinar o erro exato. Para ter mais informações sobre como solucionar um erro de replicação, consulte Solucionar problemas de uma réplica de leitura do MySQL.

  • terminated (encerrada) (somente para MariaDB, MySQL ou PostgreSQL) – a replicação foi encerrada. Isso ocorre se a replicação é interrompida por mais de 30 dias consecutivos, manualmente ou devido a um erro de replicação. Nesse caso, o Amazon RDS encerra a replicação entre a instância de banco de dados primária e todas as réplicas de leitura. O Amazon RDS faz isso para evitar um aumento nos requisitos de armazenamento da instância de banco de dados de origem e nos tempos de failover prolongado.

    A replicação interrompida pode afetar o armazenamento porque os logs podem aumentar de tamanho e número devido ao alto volume de mensagens de erro que estão sendo gravadas no log. A replicação interrompida também pode afetar a recuperação de falhas devido ao tempo que o Amazon RDS requer para manter e processar o grande número de logs durante a recuperação.

  • terminated (encerrada) (somente para Oracle): a replicação é encerrada. Isso ocorrerá se a replicação for interrompida por mais de oito horas porque não há armazenamento suficiente restante na réplica de leitura. Nesse caso, o Amazon RDS encerra a replicação entre a instância de banco de dados primária e a réplica de leitura afetada. Esse status é terminal, e a réplica de leitura deve ser recriada.

  • stopped (interrompida) (somente para MariaDB ou MySQL) – a replicação foi interrompida por causa de uma solicitação iniciada pelo cliente.

  • replication stop point set (ponto de interrupção da replicação definido) (somente para MySQL) – um ponto de interrupção iniciado pelo cliente foi definido usando o procedimento armazenado mysql.rds_start_replication_until e a replicação está em andamento.

  • replication stop point reached (ponto de interrupção da replicação alcançado) (somente para MySQL) – um ponto de interrupção iniciado pelo cliente foi definido usando o procedimento armazenado mysql.rds_start_replication_until e a replicação foi interrompida porque o ponto de interrupção foi alcançado.

Você pode ver onde uma instância de banco de dados está sendo replicada e, se for o caso, verifique o status de replicação. Na página Database (Banco de dados) no console do RDS, será exibido Primary (Primário) na coluna Role (Função). Escolha o nome da instância de banco de dados. Na página de detalhes, na guia Connectivity & security (Conectividade e segurança), seu status de replicação estará em Replication (Replicação).

Monitorar atraso da replicação

Você pode monitorar o atraso da replicação no Amazon CloudWatch visualizando a métrica ReplicaLag do Amazon RDS.

Para o MySQL e o MariaDB, a métrica ReplicaLag informa o valor do campo Seconds_Behind_Master do comando SHOW REPLICA STATUS. As causas comuns de atraso de replicação do MySQL e do MariaDB são as seguintes:

  • Uma queda de rede.

  • Gravar em tabelas com índices em uma réplica de leitura. Se o parâmetro read_only não estiver definido como 0 na réplica de leitura, isso poderá interromper a replicação.

  • Uso de um mecanismo de armazenamento não transacional, como o MyISAM. A replicação é compatível apenas com o mecanismo de armazenamento InnoDB no MySQL e o mecanismo de armazenamento XtraDB no MariaDB.

nota

As versões anteriores do MariaDB e MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MariaDB anterior à 10.5 ou uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.

Quando a métrica ReplicaLag chega a 0, isso mostra que a réplica alcançou a instância do banco de dados primária. Se a métrica ReplicaLag retornar -1, então a replicação não está ativa no momento. ReplicaLag = -1 é equivalente a Seconds_Behind_Master = NULL.

Para Oracle, a métrica ReplicaLag é a soma do valor de Apply Lag e a diferença entre a hora atual e o valor de DATUM_TIME do atrasado de aplicação. O valor de DATUM_TIME é a última vez em que a réplica de leitura recebeu dados de sua instância de banco de dados de origem. Para ter mais informações, consulte V$DATAGUARD_STATS na documentação da Oracle.

Para o SQL Server, a métrica ReplicaLag é o atraso máximo de bancos de dados que ficaram para trás, em segundos. Por exemplo, se você tiver dois bancos de dados com atraso de 5 segundos e 10 segundos respectivamente, ReplicaLag será de 10 segundos. A métrica ReplicaLag retorna o valor da consulta a seguir.

SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;

Para ter mais informações, consulte secondary_lag_seconds na documentação da Microsoft.

ReplicaLag retornará -1 se o RDS não puder determinar o atraso, como durante a configuração da réplica ou quando a réplica de leitura estiver no estado error.

nota

Novos bancos de dados não serão incluídos no cálculo de atraso até que estejam acessíveis na réplica de leitura.

Para o PostgreSQL, a métrica ReplicaLag retorna o valor da consulta a seguir.

SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS reader_lag

O PostgreSQL versões 9.5.2 e posterior usa slots de replicação física para gerenciar a retenção do log de gravação antecipada (WAL) na instância de origem. Para cada instância da réplica de leitura entre regiões, o Amazon RDS cria um slot de replicação física e o associa à instância. Duas métricas do Amazon CloudWatch, Oldest Replication Slot Lag e Transaction Logs Disk Usage, mostram o quão longe está a réplica mais atrasada em termos de dados WAL recebidos e quanto tempo de armazenamento está sendo usado para dados WAL. O valor de Transaction Logs Disk Usage pode aumentar consideravelmente quando uma réplica de leitura entre regiões está muito atrasada.

Para ter mais informações sobre como monitorar uma instância de banco de dados com CloudWatch, consulte Monitorar métricas do Amazon RDS com o Amazon CloudWatch.