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. Os clientes têm acesso de leitura/gravação à instância de banco de dados primária e acesso somente de leitura à réplica.
As réplicas de leitura são cobradas como instâncias de banco de dados padrão com as mesmas taxas da classe de instância de banco de dados usada para a réplica. Você não é cobrado pela transferência de dados incorrida na replicação de dados entre a instância de banco de dados de origem e uma réplica de leitura dentro da mesma Região da AWS. Para ter mais informações, consulte Custos da replicação entre regiões e Faturamento da instância de banco de dados para Amazon RDS.
Tópicos
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 para o Amazon RDS.
Tópicos
- Casos de uso para réplicas de leitura
- Como as réplicas de leitura funcionam
- Réplicas de leitura em uma implantação multi-AZ
- Réplicas de leitura entre regiões
- Diferenças entre réplicas de leitura para mecanismos de banco de dados
- Tipos de armazenamento da réplica de leitura
- Restrições para criar uma réplica com base em uma réplica
- Considerações ao excluir réplicas
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.
Para ter mais informações sobre réplicas de alta disponibilidade e de espera, consulte Configurar e gerenciar uma implantação multi-AZ para o Amazon RDS.
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 |
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.