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

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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 cargas de trabalho de banco de dados com muita leitura.

nota

As informações a seguir aplicam-se à criação de 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. O Amazon RDS faz um snapshot da instância de origem e cria uma instância somente leitura a partir do snapshot. Depois, 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 uma 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. Os aplicativos 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 carga de trabalho 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 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 as 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.

As réplicas de leitura têm suporte nos 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 cargas de trabalho 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

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 ler as consideraçõ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 MySQL e RDS 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 suportadas 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

É possível criar uma réplica de leitura de uma instância de banco de dados MySQL, MariaDB, Oracle, banco de dados PostgreSQL ou instância do SQL Server usando o Console de gerenciamento da AWS, 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. 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. Nas instâncias de banco de dados MySQL, só há suporte aos backups automáticos para réplicas de leitura que estejam executando MySQL 5.6 e posterior, mas não o MySQL versões 5.5. Para habilitar backups automáticos em uma réplica de leitura com o MySQL versão 5.6 e posterior do Amazon RDS, primeiramente crie a réplica de leitura e modifique-a 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 da AWS diferente da instância de banco de dados de origem.

Como criar uma réplica de leitura a partir de uma instância de banco de dados MySQL, MariaDB, Oracle, PostgreSQL ou SQL Server

  1. Faça login no Console de gerenciamento da AWS 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 MySQL, MariaDB, Oracle, PostgreSQL ou SQL Server que deseja usar como a origem para a 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 Master key (Chave mestra), escolha o identificador de chave do AWS Key Management Service (AWS KMS) da chave mestra do cliente (CMK).

    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. Escolha outras opções, como dimensionamento automático de 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 MySQL, MariaDB, Oracle, PostgreSQL ou SQL Server, use o comando da AWS CLI create-db-instance-read-replica. Este exemplo também permite o dimensionamento automático de armazenamento.

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 de origem do MySQL, MariaDB, Oracle, PostgreSQL ou SQL Server, chame a função da API do Amazon RDS CreateDBInstanceReadReplica.

https://rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

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

É possível promover uma réplica de leitura do MySQL, MariaDB, Oracle, PostgreSQL ou SQL Server 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.

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 ao desempenho de 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 usando a opção Promote (Promover) no console do Amazon RDS, o comando da AWS CLI promote-read-replica ou a operação da API do Amazon RDS PromoteReadReplica.

    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 Alta disponibilidade (Multi-AZ) para Amazon RDS.

Como promover uma réplica de leitura a uma instância de banco de dados

  1. Faça login no Console de gerenciamento da AWS 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, 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 para uma instância de banco de dados, chame PromoteReadReplica.

https://rds.amazonaws.com/ ?Action=PromoteReadReplica &DBInstanceIdentifier=myreadreplica &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

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 do MariaDB, MySQL, Oracle ou PostgreSQL em uma região da AWS diferente da instância de banco de dados de origem. Não há suporte à criação de uma réplica de leitura entre regiões para o SQL Server no Amazon RDS.

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 Console de gerenciamento da AWS, executar o comando create-db-instance-read-replica ou chamar a operação de API CreateDBInstanceReadReplica.

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 do banco de dados de origem deve ser criptografada.

As réplicas de leitura entre regiões não têm suporte nas seguintes regiões de inclusão da AWS:

  • África (Cidade do Cabo)

  • Ásia-Pacífico (Hong Kong)

  • Europa (Milão)

  • Oriente Médio (Bahrein)

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

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

Como criar uma réplica de leitura entre regiões da AWS usando o console

  1. Faça login no Console de gerenciamento da AWS 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 MariaDB, MySQL, Oracle ou PostgreSQL que deseja usar como a origem para a 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 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 Enable encryption (Ativar criptografia).

    2. Para Master key (Chave mestra), escolha o identificador de chave do AWS Key Management Service (AWS KMS) da chave mestra do cliente (CMK) da 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 dimensionamento automático de 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, MariaDB, Oracle ou PostgreSQL em uma região da AWS diferente, é possível usar o comando create-db-instance-read-replica. Nesse caso, use o create-db-instance-read-replica da região da AWS em que você deseja a réplica de leitura e especifique o nome de recurso da Amazon (ARN) para a 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 (Norte da Virgínia), o ARN será semelhante a este exemplo:

arn:aws:rds:us-east-1:123456789012:db:mysql-instance

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 criptografada em uma região da AWS diferente da região da instância de banco de dados de origem, é possível usar o comando da AWS CLI create-db-instance-read-replica na região da AWS de destino. Os seguintes parâmetros são usados para criar uma réplica de leitura criptografada em outra região da AWS:

  • --region – a região da AWS em que a réplica de leitura criptografada foi criada. Você pode omitir esse parâmetro se estiver criando a réplica no conjunto de regiões da AWS padrão usando aws configure.

  • --source-region – a região da AWS que contém a instância de banco de dados de origem. Se source-region não estiver especificado, você deverá especificar um valor de pre-signed-url. Um pre-signed-url é um URL que contém uma solicitação assinada do Signature versão 4 para a operação CreateDBInstanceReadReplica, que é chamada na região da AWS de origem da qual a réplica de leitura é criada. Para saber mais sobre pre-signed-url, consulte CreateDBInstanceReadReplica.

  • --source-db-instance-identifier – o identificador da instância de banco de dados da réplica de leitura criptografada que foi criada. Este identificador deve estar no formato ARN para a região da AWS de origem. A região da AWS especificada em source-db-instance-identifier deve corresponder à região da AWS especificada como source-region.

  • --db-instance-identifier – o identificador da réplica de leitura criptografada na região da AWS de destino.

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

O código a seguir cria uma réplica de leitura na região Oeste dos EUA (Oregon).

exemplo

Para Linux, macOS ou Unix:

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

Para Windows:

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

O código a seguir cria uma réplica de leitura criptografada na região Oeste dos EUA (Oregon). A região da AWS de onde você chama o comando create-db-instance-read-replica é a região da AWS de destino para a réplica de leitura criptografada.

exemplo

Para Linux, macOS ou Unix:

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

Para Windows:

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

Para criar uma réplica de leitura de uma instância de banco de dados de origem do MySQL, MariaDB, Oracle ou PostgreSQL em uma região da AWS diferente, chame a funçã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 e especifique o nome de recurso da Amazon (ARN) para a 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 da API do Amazon RDS CreateDBInstanceReadReplica na região da AWS de destino. Para criar uma réplica de leitura criptografada em uma outra região da AWS, especifique um valor para PreSignedURL. 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 (Norte da Virgínia) region, o ARN é semelhante ao seguinte.

arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance

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%253D CreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%1234567890 12%25253Adb%25253Amy-mysql-instance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amysql-instance1-instance-20161115 %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=arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

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:

  • Você só pode replicar entre Regiões de AWS ao usar as seguintes instâncias de banco de dados do Amazon RDS:

    • MariaDB (todas as versões).

    • MySQL versão 5.6 e posterior.

    • Mecanismo Oracle Enterprise Edition (EE) versão 12.1.0.2.v10 e versões posteriores e todas as versões 12.2, 18c e 19c.

      É necessária uma licença do Active Data Guard. Para obter informações sobre limitações para réplicas de leitura entre regiões do Oracle, consulte Requisitos de réplica para o Oracle.

    • PostgreSQL (todas as versões).

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

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

  • Você pode replicar entre as regiões AWS GovCloud (US-West) e AWS GovCloud (Leste dos EUA), mas não para dentro ou fora do AWS GovCloud.

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

  • É possível criar uma réplica de leitura entre regiões:

    • Em uma VPC de uma instância de banco de dados de origem que está em uma VPC em outra região da AWS

    • Em uma VPC de uma instância de banco de dados de origem que não esteja em uma VPC

    • Ela não está em uma VPC de uma instância de banco de dados de origem que está em uma VPC

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

  • A réplica de leitura usa o grupo de parâmetros de banco de dados padrão para o mecanismo de banco de dados especificado.

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

  • Para instâncias de banco de dados MariaDB, MySQL e Oracle, quando a 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 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.

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 faz um snapshot da instância de origem e transfere o 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 obter 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 source-instance-1 em uma região da AWS, poderá fazer o seguinte:

  • Crie read-replica-1 na nova região da AWS, especificando 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. Não serão cobrados os dados transferidos de read-replica-1 para as outras duas réplicas, 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.

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

  3. O Amazon RDS cria um snapshot de banco de dados automatizado da instância de banco de dados de origem na região da AWS de origem. 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 creating (criação). 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.

Exemplo de replicação entre regiões

exemplo Criar uma réplica de leitura entre regiões fora de uma VPC

O exemplo a seguir cria uma réplica de leitura em us-west-2 de uma instância de banco de dados de origem em us-east-1. A réplica de leitura é criada fora de uma VPC:

Para Linux, macOS ou Unix:

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

Para Windows:

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

exemplo Criação de réplicas de leitura entre regiões em uma VPC

O exemplo cria uma réplica de leitura em us-west-2 de uma instância de banco de dados de origem em us-east-1. A réplica de leitura é criada na VPC associada ao grupo especificado de sub-rede de banco de dados:

Para Linux, macOS ou Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier SimCoProd01Replica01 \ --region us-west-2 --db-subnet-group-name my-us-west-2-subnet --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:SimcoProd01

Para Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier SimCoProd01Replica01 ^ --region us-west-2 --db-subnet-group-name my-us-west-2-subnet --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:SimcoProd01

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 Availability and durability (Disponibilidade e durabilidade) dos detalhes da réplica de leitura. Para visualizar os detalhes de uma réplica de leitura, clique no nome da réplica de leitura na lista de instâncias 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 maiores requisitos de armazenamento na instância de banco de dados de origem e tempos de failover longos.

    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.

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 reporta o valor do campo Seconds_Behind_Master do comando SHOW SLAVE 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 é suportada apenas pelo mecanismo de armazenamento InnoDB no MySQL e pelo mecanismo de armazenamento XtraDB no MariaDB.

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 atraso da 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 ag.name name, MAX(hdrs.secondary_lag_seconds) max_lag from sys.dm_hadr_database_replica_state

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 slave_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 com o Amazon CloudWatch.