Trabalhar com réplicas de leitura de instância de banco de dados - Amazon Relational Database Service

Trabalhar com réplicas de leitura de instância de banco de dados

Uma réplica de leitura é uma cópia somente para leitura de uma instância de banco de dados. É possível reduzir a carga na instância de banco de dados primária roteando as consultas das aplicações para a réplica de leitura. Dessa maneira, é possível aumentar a escala horizontalmente 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.

Para criar uma réplica de leitura com base em uma instância de banco de dados de origem, o Amazon RDS utiliza os recursos de replicação integrada do mecanismo de banco de dados. Para obter informações sobre como usar réplicas de leitura com um mecanismo específico, consulte as seguintes seções:

Depois de criar uma réplica de leitura com base em uma instância de banco de dados de origem, a origem se torna a instância de banco de dados primária. Quando você faz atualizações na instância de banco de dados primária, o Amazon RDS as copia de forma assíncrona para a réplica de leitura. O diagrama a seguir mostra uma instância de banco de dados de origem replicando para uma réplica de leitura em uma zona de disponibilidade (AZ) diferente. O cliente tem acesso de leitura/gravação à instância de banco de dados primária e acesso somente de leitura à réplica.


            Configuração da réplica de leitura

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

As seções a seguir abordam réplicas de leitura de instância de banco de dados. Para ter informações sobre réplicas de leitura de cluster de banco de dados multi-AZ, consulte Trabalhar com réplicas de leitura de cluster de banco de dados multi-AZ.

Casos de uso para réplicas de leitura

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.

Como as réplicas de leitura funcionam

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. Uma exceção é o mecanismo de banco de dados do RDS para Oracle, que é compatível com 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 ter mais informações, consulte Trabalhar com réplicas de leitura do Amazon RDS para Oracle.

As aplicações se conectam a uma réplica de leitura, assim como fazem com 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.

Réplicas de leitura em uma implantação multi-AZ

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 em espera é síncrona. Ao contrário de uma réplica de leitura, uma réplica em espera não pode fornecer tráfego de leitura.

No cenário a seguir, os clientes têm acesso de leitura/gravação a uma instância de banco de dados primária em uma AZ. A instância primária copia as atualizações de forma assíncrona em uma réplica de leitura em uma segunda AZ e também as copia de forma síncrona em uma réplica em espera em uma terceira AZ. Os clientes têm acesso de leitura somente à réplica de leitura.


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

Para ter mais informações sobre réplicas de alta disponibilidade e de espera, consulte Configurar e gerenciar uma implantação multi-AZ.

Réplicas de leitura entre regiões

Em alguns casos, uma réplica de leitura reside em uma Região da AWS diferente daquela da instância de banco de dados primária. 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 ter 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.

As informações neste capítulo aplicam-se à criação de réplicas de leitura do Amazon RDS na mesma Região da AWS que a instância de 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 em um ambiente on-premises.

Diferenças entre réplicas de leitura para 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 para MySQL e o RDS para 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. Backups automáticos e snapshots manuais são compatíveis com réplicas de leitura do RDS para MySQL ou do RDS para MariaDB.

Sim. Backups automáticos e snapshots manuais são compatíveis com réplicas de leitura do RDS para Oracle.

Sim, é possível criar um snapshot manual de réplicas de leitura do RDS para PostgreSQL. Os backups automatizados de réplicas de leitura são compatíveis apenas com o RDS para PostgreSQL 14.1 e versões superiores. Não é possível ativar backups automatizados de réplicas de leitura do PostgreSQL de versões do RDS para PostgreSQL anteriores à 14.1. Para o RDS para PostgreSQL 13 e versões anteriores, crie um instantâneo de uma réplica de leitura para criar um backup dele.

Não. Backups automáticos e snapshots manuais não são compatíveis com réplicas de leitura do RDS para SQL Server.

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

Sim. Todas as versões do MariaDB e do MySQL permitem threads de replicação paralelos.

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 ter mais informações, consulte Trabalhar com réplicas de leitura do Amazon RDS para Oracle.

Não.

Não.

Tipos de armazenamento da réplica de leitura

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
Provisioned IOPS (IOPS provisionadas) 100 GiB–64 TiB IOPS provisionadas, propósito geral, magnético
Finalidade geral 100 GiB–64 TiB IOPS provisionadas, propósito geral, magnético
Finalidade geral <100 GiB Propósito geral, magnético
Magnético 100 GiB – 6 TiB IOPS provisionadas, propósito geral, magnético
Magnético <100 GiB Propósito geral, magnético
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.

Restrições para criar uma réplica com base em uma réplica

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 MySourceDBInstance replicar para ReadReplica1, não será possível configurar ReadReplica1 para replicar de volta para MySourceDBInstance.

No RDS para MariaDB, no RDS para MySQL e em determinadas versões do RDS para PostgreSQL, é possível criar uma réplica de leitura de uma réplica de leitura existente. Por exemplo, é possível criar uma réplica de leitura ReadReplica2 com base em uma réplica existente ReadReplica1. Para o RDS para Oracle e o RDS para SQL Server, não é possível criar uma réplica de leitura de uma réplica de leitura existente.

Considerações ao excluir réplicas

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 autônoma. 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.

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 CLI ou 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 para MySQL, primeiro crie a réplica de leitura e modifique-a para habilitar backups automáticos.

nota

Em uma região 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 ter mais informações, consulte Trabalhar com uma instância de banco de dados em uma VPC.

Não há uma maneira direta de criar uma réplica de leitura em outra Conta da AWS usando o console ou a AWS CLI.

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 a configuração da instância. Recomendamos que você use a classe de instância de banco de dados e o tipo de armazenamento iguais ou superiores aos da instância de banco de dados de origem para a réplica de leitura.

  7. Para Região da AWS, especifique a região de destino da réplica de leitura.

  8. Para Armazenamento, especifique o tamanho de armazenamento alocado e se deseja usar o ajuste de escala automático do armazenamento.

    Se sua instância de banco de dados de origem não estiver na configuração de armazenamento mais recente, a opção Atualizar a configuração do sistema de arquivos de armazenamento estará disponível. Você pode ativar essa configuração para atualizar o sistema de arquivos de armazenamento da réplica de leitura para a configuração preferida. Para ter mais informações, consulte Atualizando o sistema de arquivos de armazenamento para uma instância de banco de dados.

  9. Em Disponibilidade, escolha se você quer criar uma versão de espera da réplica em outra zona de disponibilidade para que a réplica possa contar com failover.

    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.

  10. Especifique outras configurações de instância de banco de dados. Para obter informações sobre cada configuração disponível, consulte Configurações para instâncias de banco de dados.

  11. Para criar uma réplica de leitura criptografada, expanda Configuração adicional e especifique as seguintes configurações:

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

  12. 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 de uma instância de banco de dados de origem, use o comando create-db-instance-read-replica da AWS CLI. Esse exemplo também define o tamanho de armazenamento alocado, habilita a autoescalabilidade do armazenamento e atualiza o sistema de arquivos para a configuração preferida.

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 \ --allocated-storage 100 \ --max-allocated-storage 1000 \ --upgrade-storage-config

Para Windows:

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

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

Ao promover uma réplica de leitura, o RDS reinicializa a instância de banco de dados antes de torná-la disponível. O processo de promoção pode levar vários minutos ou mais para ser concluído, dependendo do tamanho da réplica de leitura.


            Promover uma réplica de leitura

Casos de uso para promover uma réplica de leitura

Você pode querer promover uma réplica de leitura a uma instância de banco de dados autônoma por algum dos seguintes motivos:

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

  • Atualizando a configuração de armazenamento — Se sua instância de banco de dados de origem não estiver na configuração de armazenamento preferencial, você poderá criar uma réplica de leitura da instância e atualizar a configuração do sistema de arquivos de armazenamento. Essa opção migra o sistema de arquivos da réplica de leitura para a configuração preferida. Você pode promover uma réplica de leitura a uma instância de banco de dados autônoma.

    Você pode usar essa opção para superar as limitações de escalabilidade no armazenamento e no tamanho do arquivo para sistemas de arquivos mais antigos de 32 bits. Para ter mais informações, consulte Atualizando o sistema de arquivos de armazenamento para uma instância de banco de dados.

    Essa opção só está disponível se sua instância de banco de dados de origem não estiver na configuração de armazenamento mais recente ou se você estiver modificando a classe da instância de banco de dados na mesma solicitação.

  • Estilhaçamento – a fragmentação 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 fragmentos (bancos de dados menores) e promovê-los quando decidir convertê-los em fragmentos 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 fragmentos de acordo com seus requisitos.

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

nota

Se a réplica de leitura for uma instância de banco de dados do RDS para Oracle, você poderá realizar uma transição em vez de uma promoção. Em uma transição, a instância de banco de dados de origem se torna a nova réplica e a réplica se torna a nova instância de banco de dados de origem. Para ter mais informações, consulte Executar uma alternância do Oracle Data Guard.

Características de uma réplica de leitura promovida

Depois de promover a réplica de leitura, ela deixa de funcionar como réplica de leitura e se torna uma instância de banco de dados autônoma. A nova instância de banco de dados autônoma tem as seguintes características:

  • A instância de banco de dados autônoma mantém o grupo de opções e o grupo de parâmetros da réplica de leitura de pré-promoção.

  • É possível criar réplicas de leitura da instância de banco de dados autônoma e executar operações de recuperação para um ponto no tempo.

  • Não é possível usar a instância de banco de dados como um destino de replicação, pois ela não é mais uma réplica de leitura.

Pré-requisitos para promover uma réplica de leitura

Antes de promover uma réplica de leitura, faça o seguinte:

  • Revise sua estratégia de backup:

    • Recomendamos habilitar os backups e concluir pelo menos um backup. 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ê 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.

    • Certifique-se de que a réplica de leitura não tenha o status backing-up. Você não pode promover uma réplica de leitura quando ela está nesse estado.

  • Interrompa a gravação de todas as transações na instância de banco de dados primária e aguarde até que o RDS aplique todas as atualizações à 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. O atraso na 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.

  • (Somente para o MySQL e o MariaDB) Para fazer alterações na réplica de leitura do MySQL ou MariaDB antes de promovê-la, defina 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.

Promover uma réplica de leitura: etapas básicas

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

  1. 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, o RDS interrompe a replicação e reinicializa a réplica de leitura. Quando a reinicialização for concluída, a réplica de leitura estará disponível como uma nova instância de banco de dados.

  2. (Opcional) Modifique a nova instância de banco de dados para ser uma implantação multi-AZ. Para ter mais informações, consulte Modificar uma instância de banco de dados do Amazon RDS e Configurar e gerenciar uma implantação multi-AZ.

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

Criar uma réplica de leitura em uma Região da AWS diferente

Com o Amazon RDS, é possível criar uma réplica de leitura em uma Região da AWS diferente da instância de banco de dados de origem.


                Configuração de réplica de leitura entre regiões

Crie uma réplica de leitura em uma Região da AWS diferente para fazer o seguinte:

  • Melhorar suas capacidades de recuperação de desastres.

  • Dimensionar operações de leitura em uma Região da AWS mais próxima de seus usuários.

  • Facilitar a migração de um datacenter em uma Região da AWS para um datacenter em outra Região da AWS.

Criar uma réplica de leitura em uma Região da AWS diferente da instância de origem é semelhante à criação de uma réplica na mesma Região da AWS. É possível usar o AWS Management Console, executar o comando create-db-instance-read-replica ou chamar a operação de API CreateDBInstanceReadReplica.

nota

Para criar uma réplica de leitura criptografada em uma Região da AWS diferente da instância de banco de dados de origem, a instância de banco de dados de origem deve ser criptografada.

Disponibilidade de região e versão

A disponibilidade e a compatibilidade de recursos variam entre versões específicas de cada mecanismo de banco de dados e entre Regiões da AWS. Para ter mais informações sobre a disponibilidade de versões e regiões com a replicação entre regiões, consulte Réplicas de leitura entre regiões.

Criação de uma réplica de leitura entre regiões

O procedimento a seguir mostra como criar uma réplica de leitura de uma instância de banco de dados de origem do MariaDB, do Microsoft SQL Server, do MySQL, do Oracle ou do PostgreSQL em uma Região da AWS diferente.

É possível criar uma réplica de leitura entre Regiões da AWS usando o AWS Management Console.

Como criar uma réplica de leitura entre Regiões da AWS com o console
  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 Bancos de dados.

  3. Selecione a instância de banco de dados do MariaDB, do Microsoft SQL Server, do MySQL, do Oracle ou do PostgreSQL que você deseja usar como a origem de 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 a Destination Region (Região de destino).

  7. Escolha as especificações da instância que você deseja usar. Recomendamos usar a mesma categoria de instância de banco de dados ou maior e o mesmo tipo de armazenamento para a réplica de leitura.

  8. Para criar uma réplica de leitura criptografada em outra Região da AWS:

    1. Selecione Ativar criptografia.

    2. Em AWS KMS key, escolha o identificador do AWS KMS key da chave do KMS na Região da AWS de destino.

    nota

    Para criar uma réplica de leitura criptografada, a instância do 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. Escolha outras opções, como autoscaling do armazenamento.

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

Para criar uma réplica de leitura de uma instância de banco de dados de origem do MySQL, do Microsoft SQL Server, do MariaDB, do Oracle ou do PostgreSQL em uma Região da AWS diferente, é possível usar o comando create-db-instance-read-replica. Nesse caso, use create-db-instance-read-replica da Região da AWS em que você quer a réplica de leitura (região de destino) e especifique o nome do recurso da Amazon (ARN) da instância do banco de dados de origem. Um ARN identifica de forma exclusiva um recurso criado no Amazon Web Services.

Por exemplo, se a instância de banco de dados de origem estiver na região Leste dos EUA (N. da Virgínia), o ARN será semelhante a este exemplo:

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Para obter informações sobre ARNs, consulte Trabalhar com nomes de recurso da Amazon (ARNs) no Amazon RDS.

Para criar uma réplica de leitura em uma Região da AWS diferente da região da instância de banco de dados de origem, é possível usar o comando AWS CLIcreate-db-instance-read-replica da Região da AWS de destino. Os seguintes parâmetros são necessários para criar uma réplica de leitura em outra Região da AWS:

  • --region: a Região da AWS de destino em que a réplica de leitura é criada.

  • --source-db-instance-identifier – o identificador de instância de banco de dados para a instância de origem. Esse identificador deve estar no formato do ARN da Região da AWS de origem.

  • --db-instance-identifier: o identificador da réplica de leitura na Região da AWS de destino.

exemplo de uma réplica de leitura entre regiões

O código a seguir cria uma réplica de leitura na região Oeste dos EUA (Oregon) de uma instância de banco de dados de origem na região Leste dos EUA (N. da Virgínia).

Para Linux, macOS ou Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Para Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Os seguintes parâmetros também são necessários para criar uma réplica de leitura criptografada em outra Região da AWS:

  • --kms-key-id: o identificador da AWS KMS key da chave do KMS a ser usada para criptografar a réplica de leitura na Região da AWS de destino.

exemplo de uma réplica de leitura criptografada entre regiões

O código a seguir cria uma réplica de leitura criptografada na região Oeste dos EUA (Oregon) de uma instância de banco de dados de origem na região Leste dos EUA (N. da Virgínia).

Para Linux, macOS ou Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance \ --kms-key-id my-us-west-2-key

Para Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance ^ --kms-key-id my-us-west-2-key

A opção --source-region é necessária quando você está criando uma réplica de leitura criptografada entre as regiões GovCloud (Leste dos EUA) da AWS e GovCloud (Oeste dos EUA) da AWS. Em --source-region, especifique a Região da AWS da instância de banco de dados de origem.

Se a --source-region não estiver especificada, especifique um valor de --pre-signed-url. Uma presigned URL é um URL que contém uma solicitação assinada do Signature Versão 4 para o comando create-db-instance-read-replica chamado na Região da AWS de origem. Para saber mais sobre a opção pre-signed-url, consulte create-db-instance-read-replica na Referência de comandos da AWS CLI.

Para criar uma réplica de leitura de uma instância de banco de dados de origem do MySQL, do Microsoft SQL Server, do MariaDB, do Oracle ou do PostgreSQL em uma Região da AWS diferente, você pode chamar a operação da API do Amazon RDS CreateDBInstanceReadReplica. Nesse caso, chame CreateDBInstanceReadReplica na Região da AWS em que você deseja a réplica de leitura (região de destino) e especifique o nome do recurso da Amazon (ARN) da instância de banco de dados de origem. Um ARN identifica de forma exclusiva um recurso criado no Amazon Web Services.

Para criar uma réplica de leitura criptografada em uma Região da AWS diferente da região da instância de banco de dados de origem, é possível usar a operação CreateDBInstanceReadReplica da API do Amazon RDS na Região da AWS de destino. Para criar uma réplica de leitura criptografada em outra Região da AWS, especifique um valor para PreSignedURL. A PreSignedURL deve conter uma solicitação para a operação CreateDBInstanceReadReplica a ser chamada na Região da AWS de origem em que a réplica de leitura foi criada. Para saber mais sobre PreSignedUrl, consulte CreateDBInstanceReadReplica.

Por exemplo, se sua instância de banco de dados de origem estiver na região Leste dos EUA (N. da Virgínia) region, o ARN é semelhante ao seguinte.

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Para obter informações sobre ARNs, consulte Trabalhar com nomes de recurso da Amazon (ARNs) no Amazon RDS.

exemplo
https://us-west-2.rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253DCreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%123456789012%25253Adb%25253Amydbinstance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amydbinstance %2526Version%253D2014-10-31 %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256 %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request %2526X-Amz-Date%253D20161117T215409Z %2526X-Amz-Expires%253D3600 %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613 &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=&region-arn;rds:us-east-1:123456789012:db:mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>

Como o Amazon RDS faz a replicação entre regiões

O Amazon RDS usa o seguinte processo para criar uma réplica de leitura entre regiões. Dependendo das Regiões da AWS envolvidas e da quantidade de dados nos bancos de dados, esse processo pode levar horas para ser concluído. Use essas informações para determinar até que ponto o processo prosseguiu ao criar uma réplica de leitura entre regiões:

  1. O Amazon RDS começa a configurar a instância de banco de dados de origem como uma origem de replicação e define o status como modifying (modificação).

  2. O Amazon RDS começa a configurar a réplica de leitura especificada na Região da AWS de destino e define o status como criando.

  3. O Amazon RDS cria um snapshot automatizado do banco de dados da instância de banco de dados de origem na Região da AWS. O formato do nome do snapshot de banco de dados é rds:<InstanceID>-<timestamp>, onde <InstanceID> é o identificador da instância de origem e <timestamp> é a data e a hora em que a cópia começou. Por exemplo, rds:mysourceinstance-2013-11-14-09-24 foi criada a partir da instância mysourceinstance em 2013-11-14-09-24. Durante a criação de um snapshot de banco de dados automatizado, o status da instância do banco de dados de origem permanece como modifying (modificação), o status da réplica de leitura permanece como creating (criação) e o status do snapshot de banco de dados é creating (criação). A coluna de andamento da página snapshot de banco de dados (Snapshot de banco de dados) no console informa o andamento da criação do snapshot de banco de dados. Quando o snapshot de banco de dados estiver completo, o status do snapshot de banco de dados da instância do banco de dados de origem serão definidos como available (disponível).

  4. O Amazon RDS inicia uma cópia do snapshot entre regiões para a transferência de dados inicial. A cópia do snapshot é listada como um snapshot automático na Região da AWS de destino com um status de criando. Ele tem o mesmo nome que o snapshot de banco de dados de origem. A coluna de andamento da exibição do snapshot de banco de dados indica até que ponto a cópia evoluiu. Quando a cópia estiver completa, o status da cópia do snapshot de banco de dados será definido como available (disponível).

  5. O Amazon RDS usa o snapshot de banco de dados copiado para a carga de dados inicial na réplica de leitura. Durante essa fase, a réplica de leitura estará na lista de instâncias de banco de dados no destino, com um status de creating (criação). Quando a carga estiver completa, o status da réplica de leitura será definido como available (disponível) e a cópia do snapshot de banco de dados será excluída.

  6. Quando a réplica de leitura atingir o status disponível, o Amazon RDS começará a replicar as alterações feitas na instância de origem desde o início da operação de criação da réplica de leitura. Durante essa fase, o tempo de atraso da replicação para a réplica de leitura será maior que 0.

    Para obter informações sobre o tempo de atraso de replicação, consulte Monitoramento da replicação de leitura.

Considerações sobre replicação entre regiões

Todas as considerações para a realização da replicação dentro de uma Região da AWS aplicam-se à replicação entre regiões. As seguintes considerações adicionais são válidas ao replicar entre Regiões da AWS:

  • Uma instância de banco de dados de origem pode ter réplicas de leitura entre várias Regiões da AWS.

  • Você pode replicar entre as regiões da GovCloud (Leste dos EUA) e GovCloud (Oeste dos EUA), mas não para dentro ou para fora da GovCloud (EUA).

  • Para instâncias de banco de dados do Microsoft SQL Server, Oracle e PostgreSQL, só é possível criar uma réplica de leitura entre regiões do Amazon RDS a partir de uma instância de banco de dados de origem do Amazon RDS que não seja uma réplica de leitura de outra instância do banco de dados do Amazon RDS. Essa limitação não se aplica a instâncias de banco de dados do MariaDB e MySQL.

  • É possível que você perceba uma quantidade maior de tempo de atraso para réplicas de leitura que estejam em uma Região da AWS diferente da instância de origem. Esse tempo de atraso vem dos canais de rede mais longos entre os datacenters regionais.

  • Para replicações de leitura entre regiões, qualquer um dos comandos de criação de réplica de leitura que especifique o parâmetro --db-subnet-group-name deve especificar um grupo de sub-redes de banco de dados da mesma VPC.

  • Devido ao limite no número de entradas da lista de controle de acesso (ACL) para a VPC de origem, não podemos garantir mais de cinco instâncias de réplica de leitura entre regiões.

  • Na maioria dos casos, a réplica de leitura usa o grupo de parâmetros de banco de dados padrão e o grupo de opções de banco de dados do mecanismo de banco de dados especificado.

    Para os mecanismos de banco de dados do MySQL e do Oracle, você pode especificar um grupo de parâmetros personalizado para a réplica de leitura na opção --db-parameter-group-name do comando create-db-instance-read-replica da AWS CLI. Você não pode especificar um grupo de parâmetros personalizado ao usar o AWS Management Console.

  • A réplica de leitura usa o grupo de segurança padrão.

  • Para instâncias de banco de dados do MariaDB, do Microsoft SQL Server, do MySQL e do Oracle, quando a instância de banco de dados de origem de uma réplica de leitura entre regiões é excluída, a réplica de leitura é promovida.

  • Para instâncias de bancos de dados PostgreSQL, quando a instância de banco de dados de origem de uma réplica de leitura entre regiões é excluída, o status de replicação da réplica de leitura é definido como terminated. A réplica de leitura não é promovida.

    É necessário promover a réplica de leitura manualmente ou excluí-la.

Solicitação de uma réplica de leitura entre regiões

Para se comunicar com a região de origem e solicitar a criação de uma réplica de leitura entre regiões, o solicitante (função do IAM ou usuário do IAM) deve ter acesso à instância de banco de dados de origem e à região de origem.

Certas condições na política do IAM do solicitante podem fazer com que a solicitação falhe. Os exemplos a seguir pressupõem que a instância de banco de dados de origem está em Leste dos EUA (Ohio) e a réplica de leitura é criada em Leste dos EUA (N. da Virgínia). Estes exemplos mostram condições na política do IAM do solicitante que fazem com que a solicitação falhe:

  • A política do solicitante tem uma condição para aws:RequestedRegion.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-1" } }

    A solicitação falha porque a política não permite acesso à região de origem. Para uma solicitação bem-sucedida, especifique as regiões de origem e de destino.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } }
  • A política do solicitante não permite acesso à instância de banco de dados de origem.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "arn:aws:rds:us-east-1:123456789012:db:myreadreplica" ...

    Para uma solicitação bem-sucedida, especifique a instância de origem e a réplica.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:myreadreplica", "arn:aws:rds:us-east-2:123456789012:db:mydbinstance" ] ...
  • A política do solicitante nega aws:ViaAWSService.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Bool": {"aws:ViaAWSService": "false"} }

    A comunicação com a região de origem é feita pelo RDS em nome do solicitante. Para uma solicitação bem-sucedida, não negue as chamadas feitas pelos serviços da AWS.

  • A política do solicitante tem uma condição para aws:SourceVpc ou aws:SourceVpce.

    Essas solicitações podem falhar, pois quando o RDS faz a chamada para a região remota, ela não é feita a partir da VPC ou VPC endpoint especificados.

Se você precisar usar uma das condições anteriores que causariam uma falha de uma solicitação, é possível incluir uma segunda instrução com aws:CalledVia em sua política, para fazer com que a solicitação seja bem-sucedida. Por exemplo, você pode usar aws:CalledVia com aws:SourceVpce como mostrado aqui:

... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Condition" : { "ForAnyValue:StringEquals" : { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "rds:CreateDBInstanceReadReplica" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "rds.amazonaws.com" ] } } }

Para ter mais informações, consulte Políticas e permissões no IAM, no Guia do usuário do IAM.

Autorização de uma réplica de leitura

Após uma solicitação de criação de réplica de leitura de banco de dados entre regiões retornar success, o RDS inicia a criação da réplica em segundo plano. Uma autorização para o RDS acessar a instância de banco de dados de origem é criada. Essa autorização vincula a instância de banco de dados de origem à réplica de leitura e permite que o RDS copie apenas para a réplica de leitura especificada.

A autorização é verificada pelo RDS usando a permissão rds:CrossRegionCommunication na função do IAM vinculada ao serviço. Se a réplica estiver autorizada, o RDS se comunica com a região de origem e conclui a criação da réplica.

O RDS não tem acesso a instâncias de banco de dados que não foram autorizadas anteriormente por uma solicitação de CreateDBInstanceReadReplica. A autorização é revogada quando a criação da réplica de leitura é concluída.

O RDS usa a função vinculada ao serviço para verificar a autorização na região de origem. Se você excluir a função vinculada ao serviço durante o processo de criação de replicação, a criação falhará.

Para ter mais informações, consulte Usar funções vinculadas a serviço no Guia do usuário do IAM.

Uso de credenciais do AWS Security Token Service

Os tokens de sessão do endpoint global do AWS Security Token Service (AWS STS) são válidos apenas nas Regiões da AWS habilitadas por padrão (regiões comerciais). Se você usar credenciais da operação da API assumeRole no AWS STS, use o endpoint regional se a região de origem for uma região de aceitação. Caso contrário, haverá falha na solicitação. Isso acontece porque suas credenciais devem ser válidas em ambas as regiões, o que é verdadeiro para regiões opcionais somente quando o endpoint regional do AWS STS é usado.

Para usar o endpoint global, certifique-se de que ele esteja ativado para ambas as regiões nas operações. Defina o endpoint global como Valid in all Regiões da AWS nas configurações da conta do AWS STS.

A mesma regra se aplica às credenciais no parâmetro pre-signed URL.

Para ter mais informações, consulte Gerenciar o AWS STS em uma Região da AWS no Guia do usuário do IAM.

Custos da replicação entre regiões

Os dados transferidos para replicação entre regiões incorrem em cobranças de transferência de dados do Amazon RDS As ações de replicação entre regiões geram cobranças referentes aos dados transferidos para fora da Região da AWS de origem:

  • Quando você cria uma réplica de leitura, o Amazon RDS cria um snapshot da instância de origem e transfere esse snapshot para a Região da AWS da réplica de leitura.

  • Para cada modificação de dados feita nos bancos de dados de origem, o Amazon RDS transfere os dados da Região da AWS de origem para a Região da AWS da réplica de leitura.

Para ter mais informações sobre a definição e preço da transferência de dados, consulte Definição de preço do Amazon RDS.

Para instâncias do MySQL e do MariaDB, é possível reduzir seus custos de transferência de dados reduzindo o número de réplicas de leitura criadas entre regiões. Por exemplo, suponhamos que você tenha uma instância de banco de dados de origem em uma Região da AWS e queira manter três réplicas de leitura em outra Região da AWS. Nesse caso, crie somente uma das réplicas de leitura da instância do banco de dados de origem. Crie as outras duas réplicas da primeira réplica de leitura, e não da instância de banco de dados de origem.

Por exemplo, se você tiver a source-instance-1 em uma Região da AWS, você poderá fazer o seguinte:

  • Crie a read-replica-1 na nova Região da AWS, especificando a source-instance-1 como a origem.

  • Crie read-replica-2 de read-replica-1.

  • Crie read-replica-3 de read-replica-1.

Neste exemplo, serão cobrados de você somente os dados transferidos de source-instance-1 para read-replica-1. A transferência dos dados transferidos da read-replica-1 para as outras duas réplicas não será cobrada, pois elas estão todas na mesma Região da AWS. Se você criar todas as três réplicas diretamente de source-instance-1, serão cobradas de você as transferências de dados das três réplicas.