Como trabalhar com réplicas de leitura - Amazon Relational Database Service

Como trabalhar com réplicas de leitura

O Amazon RDS usa a funcionalidade de replicação integrada nos mecanismos de banco de dados MariaDB, MySQL, Oracle, PostgreSQL e Microsoft SQL Server para criar um tipo especial de instância de banco de dados, chamada de réplica de leitura, a partir de uma instância de banco de dados de origem. A instância de banco de dados de origem se torna a instância de banco de dados primária. As atualizações feitas à instância de banco de dados primária são copiadas de forma assíncrona na réplica de leitura. É possível reduzir a carga na instância de banco de dados primária roteando as consultas de leitura dos aplicativos para a réplica de leitura. Com o uso de réplicas de leitura, é possível expandir de maneira elástica para além das limitações de capacidade de uma única instância de banco de dados para workloads de banco de dados com muita leitura.


            Configuração da réplica de leitura
nota

As informações a seguir aplicam-se à criação e réplicas de leitura do Amazon RDS na mesma região da AWS que a instância do banco de dados de origem ou em uma região da AWS separada. As informações a seguir não se aplicam à configuração da replicação com uma instância que esteja sendo executada em um instância do Amazon EC2 ou local.

Ao criar uma réplica de leitura, primeiramente especifique uma instância de banco de dados existente como origem. Em seguida, o Amazon RDS faz um snapshot da instância de origem e cria uma instância apenas para leitura a partir do snapshot. O Amazon RDS usará o método de replicação assíncrona para que o mecanismo de banco de dados atualize a réplica de leitura sempre que houver alteração na instância de banco de dados primária. A réplica de leitura funciona como uma instância de banco de dados que só permite conexões somente leitura. As aplicações se conectam a uma réplica de leitura da mesma forma que se conectam a qualquer instância de banco de dados. O Amazon RDS replica todos os bancos de dados na instância de banco de dados de origem.

nota

O mecanismo de banco de dados Oracle oferece suporte a bancos de dados de réplica no modo montado Uma réplica montada não aceita conexões de usuário e, portanto, não pode atender a uma workload somente leitura. O principal uso para réplicas montadas é a recuperação de desastres entre regiões. Para obter mais informações, consulte Trabalhar com réplicas do Oracle para o Amazon RDS.

Em alguns casos, uma réplica de leitura reside em uma região da AWS diferente da região da instância do banco de dados primário. Nesses casos, o Amazon RDS configura um canal de comunicação seguro entre a instância de banco de dados primária e a réplica de leitura. O Amazon RDS estabelece quaisquer configurações de segurança da AWS necessárias para permitir o canal seguro, como a inclusão de entradas de grupos de segurança. Para mais informações sobre réplicas de leitura entre regiões, consulte Criar uma réplica de leitura em uma região da AWS diferente.

Você pode configurar uma réplica de leitura para uma instância de banco de dados que também tenha uma réplica de espera configurada para alta disponibilidade em uma implantação multi-AZ. A replicação com a réplica de espera é síncrona e a réplica não pode fornecer tráfego de leitura.


            Configuração da réplica de leitura e da réplica de espera

Para obter mais informações sobre réplicas de alta disponibilidade e de espera, consulte Implantações Multi-AZ para alta disponibilidade.

As réplicas de leitura são compatíveis com os mecanismos MariaDB, MySQL, Oracle, PostgreSQL e Microsoft SQL Server. Esta seção fornece informações gerais sobre o uso de réplicas de leitura com todos esses mecanismos. Para obter informações sobre como usar réplicas de leitura com um mecanismo específico, consulte as seguintes seções:

Visão geral das réplicas de leitura do Amazon RDS

Implantar uma ou mais réplicas de leitura a uma determinada instância de banco de dados de origem pode fazer sentido em inúmeros casos, inclusive os seguintes:

  • Expandir além da capacidade computacional ou de E/S de uma única instância de banco de dados para workloads de leitura pesadas de banco de dados. Poder direcionar esse tráfego de leitura excessivo a uma ou mais réplicas de leitura.

  • Atender ao tráfego de leitura enquanto a instância de banco de dados de origem está indisponível. Em alguns casos, sua instância de banco de dados de origem pode não ser capaz de fazer solicitações de E/S, por exemplo, devido à suspensão de E/S para backups ou manutenção programada. Nesses casos, é possível direcionar o tráfego de leitura para suas réplicas de leitura. Para esse tipo de caso de uso, lembre-se de que os dados na réplica de leitura podem estar "obsoletos", porque a instância de banco de dados de origem está indisponível.

  • Casos de relatórios comerciais ou de data warehousing em que você pode desejar que as consultas de relatórios comerciais sejam executadas em relação a uma réplica de leitura, em vez de sua instância de banco de dados de produção.

  • Implementação da recuperação de desastres. É possível promover uma réplica de leitura para uma instância autônoma como solução de recuperação de desastres, caso haja uma falha na instância de banco de dados primária.

Por padrão, uma réplica de leitura é criada com o mesmo tipo de armazenamento que a instância de banco de dados de origem. No entanto, é possível pode criar uma réplica de leitura que tenha um tipo diferente de armazenamento que o da instância de banco de dados de origem com base nas opções listadas na tabela a seguir.

Tipo de armazenamento da instância de banco de dados de origem Alocação de armazenamento da instância de banco de dados de origem Opções de tipo de armazenamento da réplica de leitura
PIOPS 100 GiB – 32 TiB PIOPS, GP2, Padrão
GP2 100 GiB – 32 TiB PIOPS, GP2, Padrão
GP2 <100 GiB GP2, Padrão
Padrão 100 GiB – 6 TiB PIOPS, GP2, Padrão
Padrão <100 GiB GP2, Padrão
nota

Quando você aumenta o armazenamento alocado de uma réplica de leitura, ela deve ser de pelo menos 10%. Ao tentar aumentar o valor em menos de 10%, você obtém um erro.

O Amazon RDS não suporta a replicação circular. Você não pode configurar uma instância de banco de dados para servir como origem de replicação para uma instância de banco de dados existente. Só é possível criar uma nova réplica de leitura de uma instância de banco de dados existente. Por exemplo, se MyDBInstance replicar para ReadReplica1, não será possível configurar ReadReplica1 para replicar de volta para MyDBInstance. Para MariaDB e MySQL, é possível criar uma réplica de leitura de uma réplica de leitura existente. Por exemplo, de ReadReplica1, é possível criar uma nova réplica de leitura, como ReadReplica2. Para Oracle, PostgreSQL e SQL Server, não é possível criar uma réplica de leitura de uma réplica de leitura existente.

Se você não precisar mais de réplicas de leitura, poderá excluí-las explicitamente usando os mesmos mecanismos para excluir uma instância de banco de dados. Se você excluir uma instância de banco de dados de origem sem excluir suas réplicas de leitura na mesma região da AWS, cada réplica de leitura será promovida a uma instância de banco de dados independente. Para obter informações sobre como excluir uma instância de banco de dados, consulte Excluir uma instância de banco de dados. Para obter informações sobre a promoção de réplicas de leitura, consulte Promoção de uma réplica de leitura a uma instância de banco de dados autônoma.

Se você tiver réplicas de leitura entre regiões, consulte Considerações sobre replicação entre regiões para obter informações relacionadas à exclusão da origem de uma réplica de leitura entre regiões.

Diferenças entre réplicas de leitura para diferentes mecanismos de banco de dados

Como os mecanismos de banco de dados do Amazon RDS implementam a replicação de maneira diferente, há várias diferenças significativas que você deve conhecer, conforme mostrado na tabela a seguir.

Recurso ou comportamento MySQL e MariaDB Oracle PostgreSQL SQL Server

Qual é o método de replicação?

Replicação lógica.

Replicação física.

Replicação física.

Replicação física.

Como os logs de transação são removidos?

O RDS for MySQL e o RDS for MariaDB mantêm todos os logs binários que não foram aplicados.

Se uma instância de banco de dados primária não tiver réplicas de leitura entre regiões, o Amazon RDS for Oracle manterá um mínimo de duas horas de logs de transação na instância de banco de dados de origem. Os logs serão limpos da instância de banco de dados de origem após duas horas ou após o tempo definido na configuração de horas de retenção do log de arquivamento, o que for maior. Os logs serão removidos da réplica de leitura após o tempo definido pela configurações horas de retenção do log de arquivamento somente se eles tiverem sido aplicados com êxito ao banco de dados.

Em alguns casos, uma instância de banco de dados primária pode ter uma ou mais réplicas de leitura entre regiões. Nesse caso, o Amazon RDS for Oracle mantém os logs de transações na instância do banco de dados de origem até que eles tenham sido transmitidos e aplicados a todas as réplicas de leitura entre regiões.

Para obter informações sobre como definir horas de retenção de log de arquivamento, consulte Retenção de logs redo arquivados.

O PostgreSQL tem o parâmetro wal_keep_segments, que determina quantos arquivos de log prévio de gravação (WAL) são mantidos para fornecer dados às réplicas de leitura. O valor de parâmetro especifica o número de logs a serem mantidos.

O arquivo de log virtual (VLF) do arquivo de log de transação na réplica primária poderá ficar truncado depois que ele não for mais necessário para as réplicas secundárias.

O VLF só poderá ser marcado como inativo quando os registros de log tiverem sido reforçados nas réplicas. Independentemente da rapidez com que os subsistemas de disco estejam na réplica primária, o log de transações manterá os VLFs até que a réplica mais lenta o tenha reforçado.

É possível gravar em uma réplica?

Sim. É possível permitir que uma réplica de leitura do MySQL ou do MariaDB seja gravável.

Não. Uma réplica de leitura do Oracle é uma cópia física, e o Oracle não permite gravações em uma réplica de leitura. É possível promover a réplica de leitura para torná-la gravável. A réplica de leitura promovida terá os dados replicados para o ponto quando a solicitação foi feita para promovê-la.

Não. Uma réplica de leitura do PostgreSQL é uma cópia física e o PostgreSQL não permite que uma réplica de leitura torne-se gravável.

Não. Uma réplica de leitura do SQL Server é uma cópia física e também não permite gravações. É possível promover a réplica de leitura para torná-la gravável. A réplica de leitura promovida terá os dados replicados até o ponto quando a solicitação foi feita para promovê-la.

É possível fazer backups na réplica?

Sim. É possível habilitar backups automáticos em uma réplica de leitura do MySQL ou do MariaDB.

Não. Não é possível criar snapshots manuais de réplicas de leitura do Amazon RDS for Oracle ou habilitar backups automáticos para eles.

Sim, é possível criar um snapshot manual de uma réplica de leitura do PostgreSQL, mas não é possível ativar backups automáticos.

Não. Não é possível criar snapshots manuais de réplicas de leitura do Amazon RDS for SQL Server ou habilitar backups automáticos para eles.

É possível usar a replicação paralela?

Sim. O MySQL versão 5.6 e posterior e todas as versões compatíveis do MariaDB permitem threads de replicação paralela.

Sim. Os dados de log redo são sempre transmitidos em paralelo do banco de dados primário para todas as réplicas de leitura.

Não. O PostgreSQL tem um processo único que gerencia a replicação.

Sim. Os dados de log redo são sempre transmitidos em paralelo do banco de dados primário para todas as réplicas de leitura.

É possível manter uma réplica em um estado montado em vez de somente leitura?

Não.

Sim. O principal uso para réplicas montadas é a recuperação de desastres entre regiões. Uma licença do Active Data Guard não é necessária para réplicas montadas. Para obter mais informações, consulte Trabalhar com réplicas do Oracle para o Amazon RDS.

Não.

Não.

Como criar uma réplica de leitura

Você pode criar uma réplica de leitura a partir de uma instância de banco de dados existente usando o AWS Management Console, a AWS CLIou a API do RDS. Crie uma réplica de leitura especificando o SourceDBInstanceIdentifier, que é o identificador da instância do banco de dados da instância de banco de dados de origem da qual você deseja replicar.

Ao criar uma réplica de leitura, o Amazon RDS faz um snapshot do banco de dados da sua instância de banco de dados de origem e inicia a replicação. Como resultado, ocorre uma breve suspensão de E/S de sua instância de banco de dados de origem à medida que ocorre o snapshot de banco de dados.

nota

A suspensão de E/S geralmente dura um minuto. Você pode evitar a suspensão de E/S se a instância de banco de dados de origem for uma implantação Multi-AZ. Nesse caso, o snapshot é retirado da instância de banco de dados secundária.

Uma transação ativa e de longa duração pode atrasar o processo de criação da réplica de leitura. Recomendamos que você aguarde até que as transações de longa duração sejam concluídas antes de criar uma réplica de leitura. Se você criar várias réplicas de leitura em paralelo a partir da mesma instância de banco de dados de origem, o Amazon RDS fará somente um snapshot no início da primeira ação de criação.

Ao criar uma réplica de leitura, considere o seguinte. Primeiro, você deve habilitar backups automáticos na instância de banco de dados de origem, definindo o período de retenção de backup como um valor diferente de 0. Esse requisito também se aplica a uma réplica de leitura que seja a instância de banco de dados de origem de outra réplica de leitura. Para habilitar backups automáticos em uma réplica de leitura do RDS for MySQL versão 5.6 ou posterior, primeiramente crie a réplica de leitura para, em seguida, modificá-la para permitir backups automáticos.

nota

Dentro de uma região da AWS, recomendamos criar todas as réplicas de leitura na mesma nuvem privada virtual (VPC) com base na mesma Amazon VPC da instância de banco de dados de origem. Se você criar uma réplica de leitura em uma VPC diferente da instância de banco de dados de origem, os intervalos de roteamento sem classe entre domínios (CIDR) podem se sobrepor entre a réplica e o sistema RDS. A sobreposição de CIDR torna a réplica instável, o que pode afetar negativamente as aplicações que se conectam a ela. Se você receber um erro ao criar a réplica de leitura, escolha um grupo de sub-redes de banco de dados de destino diferente. Para obter mais informações, consulte Trabalhar com uma instância de banco de dados em uma VPC.

Não é possível criar uma réplica de leitura em uma conta AWS diferente da instância de banco de dados de origem.

Para criar uma réplica de leitura a partir de uma instância de banco de dados de origem

  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, escolha Databases (Bancos de dados).

  3. Escolha a instância de banco de dados que você deseja usar como a origem da réplica de leitura.

  4. Em Actions (Ações), escolha Create read replica (Criar réplica de leitura).

  5. Em DB instance identifier (Identificador da instância de banco de dados), insira um nome para a réplica de leitura.

  6. Escolha as especificações da instância. Recomendamos que você use a classe de instância de banco de dados e o tipo de armazenamento iguais aos da instância de banco de dados de origem na réplica de leitura.

  7. Em Multi-AZ deployment (Implantação Multi-AZ), escolha Yes (Sim) para criar uma versão de espera de sua réplica em outra zona de disponibilidade a fim de oferecer suporte de failover para a réplica.

    nota

    Você pode criar a réplica de leitura como uma instância de banco de dados Multi-AZ independentemente de o banco de dados de origem ser ou não uma instância de banco de dados Multi-AZ.

  8. Para criar uma réplica de leitura criptografada:

    1. Selecione Enable encryption (Ativar criptografia).

    2. Em AWS KMS key, escolha o identificador da AWS KMS key da chave do KMS.

    nota

    A instância de banco de dados de origem deve ser criptografada. Para saber mais sobre a criptografia da instância de banco de dados de origem, consulte Criptografar recursos do Amazon RDS.

  9. Especifique outras configurações, como autoescalabilidade de armazenamento.

    Para obter informações sobre cada configuração, consulte Configurações para instâncias de banco de dados.

  10. Escolha Create read replica (Criar réplica de leitura).

Depois que a réplica de leitura for criada, você poderá vê-la na página Databases (Bancos de dados) no console do RDS. Ele mostra Replica (Réplica) na coluna Role (Função).

Para criar uma réplica de leitura a partir de uma instância de banco de dados de origem, use o AWS CLI comando create-db-instance-read-replica. Este exemplo também permite o dimensionamento automático de armazenamento.

Você pode especificar outras configurações. Para obter informações sobre cada configuração, consulte Configurações para instâncias de banco de dados.

exemplo

Para Linux, macOS ou Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance \ --max-allocated-storage 1000

Para Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance ^ --max-allocated-storage 1000

Para criar uma réplica de leitura a partir de uma instância de banco de dados MySQL, MariaDB, Oracle, PostgreSQL ou SQL Server de origem, chame a operação da API do Amazon RDS CreateDBInstanceReadReplica com os seguintes parâmetros obrigatórios:

  • DBInstanceIdentifier

  • SourceDBInstanceIdentifier

Promoção de uma réplica de leitura a uma instância de banco de dados autônoma

Você pode promover uma réplica de leitura a uma instância de banco de dados autônoma. Ao promover uma réplica de leitura, a instância de banco de dados é reiniciada antes que ela fique disponível.


                Promover uma réplica de leitura

Há vários motivos pelos quais você pode querer promover uma réplica de leitura a uma instância de banco de dados autônoma:

  • Execução de operações de DDL (somente MySQL e MariaDB) – As operações de DDL, como criação ou recriação de índices, podem levar tempo e causar um prejuízo significativo à performance da sua instância de banco de dados. É possível executar essas operações em uma réplica de leitura do MySQL ou MariaDB uma vez que a réplica de leitura esteja em sincronia com sua instância de banco de dados primária. Então, será possível promover a réplica de leitura e direcionar seus aplicativos para usar a instância promovida.

  • Estilhaçamento – o estilhaçamento incorpora a arquitetura "shared-nothing" e envolve essencialmente a quebra de um grande banco de dados em vários bancos de dados menores. Uma maneira comum de dividir um banco de dados é dividir tabelas que não estão juntas na mesma consulta em diferentes hosts. Outro método é duplicar uma tabela em vários hosts e depois usar um algoritmo de hash para determinar qual host recebe uma determinada atualização. É possível pode criar réplicas de leitura correspondentes a cada um de seus estilhaços (bancos de dados menores) e promovê-los quando decidir convertê-los em estilhaços individuais. Você pode, então, criar o espaço da chave (se você estiver dividindo linhas) ou a distribuição de tabelas para cada um dos estilhaços de acordo com seus requisitos.

  • Implementação de recuperação de falhas – você poderá usar a promoção da réplica de leitura como um esquema de recuperação de dados se a instância de banco de dados primária falhar. Essa abordagem complementa a replicação síncrona, a detecção automática de falhas e o failover.

    Se estiver ciente das ramificações e limitações da replicação assíncrona e ainda assim quiser usar a promoção de réplica de leitura para recuperação de dados, será possível fazer isso. Primeiramente, crie uma réplica de leitura e, depois, monitore a instância de banco de dados primária para identificar se há falhas. Em caso de falha, faça o seguinte:

    1. Promova a réplica de leitura.

    2. Direcione o tráfego de banco de dados para a instância de banco de dados promovida.

    3. Crie uma réplica de leitura de substituição com a instância de banco de dados promovida como origem.

Ao promover uma réplica de leitura, a nova instância de banco de dados criada mantém o grupo de opções e o grupo de parâmetros da réplica de leitura anterior. O processo de promoção pode levar vários minutos ou mais para ser concluído, dependendo do tamanho da réplica de leitura. Depois que promover a réplica de leitura a uma nova instância de banco de dados, ela se tornará semelhante a qualquer outra instância de banco de dados. Por exemplo, é possível criar réplicas de leitura da nova instância de banco de dados e executar operações de recuperação de um momento específico. Como a instância de banco de dados promovida não é mais uma réplica de leitura, você não poderá usá-la como um destino de replicação. Se uma instância de banco de dados de origem tiver várias réplicas de leitura, promover uma das réplicas de leitura a uma instância de banco de dados não interferirá nas outras réplicas.

A duração de backup é uma função do número de alterações feitas ao banco de dados desde o backup anterior. Se você pretende promover uma réplica de leitura a uma instância autônoma, recomendamos habilitar os backups e fazer pelo menos um backup antes de promovê-la. Além disso, não é possível promover uma réplica de leitura para uma instância independente quando ela tem o status backing-up. Se você habilitou backups em sua réplica de leitura, configure a janela de backup automatizado para que os backups diários não interfiram com a promoção da réplica de leitura.

As etapas a seguir mostram o processo geral para promover uma réplica de leitura a uma instância de banco de dados

  1. Interrompa a gravação de todas as transações na instância de banco de dados primária e aguarde até que todas as atualizações sejam feitas na réplica de leitura. As atualizações do banco de dados serão feitas nas réplicas de leitura depois que forem feitas na instância de banco de dados primária, e esse atraso de replicação pode variar significativamente. Use a métrica Replica Lag para determinar quando todas as atualizações foram feitas na réplica de leitura.

  2. Somente para o MySQL e o MariaDB: se for necessário fazer alterações na réplica de leitura do MySQL ou MariaDB, você deverá configurar o parâmetro read_only como 0 no grupo de parâmetros de banco de dados para a réplica de leitura. Você então poderá executar todas as operações de DDL necessárias, como criar índices, na réplica de leitura. As ações realizadas na réplica de leitura não afetam a performance da instância de banco de dados primária.

  3. Promova a réplica de leitura utilizando a opção Promote (Promover) no console do Amazon RDS, o comando da AWS CLI promote-read-replica ou a operação PromoteReadReplica da API do Amazon RDS.

    nota

    O processo de promoção leva alguns minutos para ser concluído. Ao promover uma réplica de leitura, a replicação é interrompida e a réplica de leitura é reiniciada. Quando a reinicialização for concluída, a réplica de leitura estará disponível como uma nova instância de banco de dados.

  4. (Opcional) Modifique a nova instância de banco de dados para ser uma implantação Multi-AZ. Para obter mais informações, consulte Modificar uma instância de banco de dados do Amazon RDS e Implantações Multi-AZ para alta disponibilidade.

Para promover uma réplica de leitura a uma instância de banco de dados autônoma

  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No console do Amazon RDS, escolha Databases (Bancos de dados).

    O painel Databases (Bancos de dados) é exibido. Todas as réplicas de leitura exibem Replica (Réplica) na coluna Role (Função).

  3. Escolha a réplica de leitura que você deseja promover.

  4. Em Actions (Ações), selecione Promote (Promover).

  5. Na página Promote Read Replica (Promover réplica de leitura), insira o período de retenção de backup e a janela de backup para a instância de banco de dados recém-promovida.

  6. Quando estiver satisfeito com as configurações, escolha Continue (Continuar).

  7. Na página de confirmação, escolha Promote Read Replica (Promover réplica de leitura).

Para promover uma réplica de leitura para uma instância de banco de dados autônoma, use o comando da AWS CLI promote-read-replica.

exemplo

Para Linux, macOS ou Unix:

aws rds promote-read-replica \ --db-instance-identifier myreadreplica

Para Windows:

aws rds promote-read-replica ^ --db-instance-identifier myreadreplica

Para promover uma réplica de leitura a uma instância de banco de dados autônoma, chame a operação da API do Amazon RDS PromoteReadReplica com o parâmetro obrigatório DBInstanceIdentifier.

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.

    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 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.

  • 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 obter 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 obter 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 obter 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.