Amazon RDS é o serviço gerenciado de bancos de dados relacionais da AWS — ele cuida de provisionamento, patching, backups, failover e replicação, para que você não precise administrar o servidor de banco de dados manualmente. As engines suportadas incluem MySQL, PostgreSQL, MariaDB, Oracle, SQL Server e Amazon Aurora (uma engine própria da AWS, compatível com MySQL e PostgreSQL).
🎯 Para a certificação
Questões sobre RDS testam se você sabe distinguir claramente Multi-AZ (alta disponibilidade) de Read Replicas (escala de leitura) — o par de conceitos mais cobrado do tema —, entende como funcionam backups automáticos e point-in-time recovery, sabe o que parameter groups e option groups controlam, e reconhece quando Aurora ou outras engines são a resposta mais adequada.
Resumo
Pense no RDS como contratar uma equipe de manutenção predial terceirizada em vez de você mesmo cuidar do prédio (o banco de dados). Você ainda escolhe o "modelo do prédio" (a engine — MySQL, PostgreSQL etc.) e decide como ele deve se comportar, mas não precisa trocar peças, aplicar reparos de rotina, nem ficar de plantão para emergências — a AWS cuida disso, incluindo replicar o prédio inteiro para outro terreno (Multi-AZ) caso o original tenha um problema estrutural.
- Gerenciado, não serverless (na maioria das engines): você ainda escolhe o tipo de instância (classe de computação) e o tipo/tamanho de storage — a AWS gerencia patching, backups e failover, mas a capacidade não escala automaticamente por padrão (exceto Aurora Serverless).
- Multi-AZ: réplica síncrona em outra AZ, existe para disponibilidade — failover automático em caso de falha.
- Read Replica: réplica assíncrona (na maioria das engines), existe para escalar leitura — não é, por padrão, um mecanismo de failover automático.
- Backups automáticos: permitem restaurar para qualquer segundo dentro da janela de retenção (point-in-time recovery).
1. Engines disponíveis e diferenças relevantes
- MySQL, PostgreSQL, MariaDB: engines open-source populares, com vasto ecossistema de ferramentas e menor custo de licenciamento.
- Oracle e SQL Server: engines comerciais — o custo de licenciamento (BYOL ou License Included) costuma ser um fator de decisão relevante em cenários de prova que mencionam "reduzir custo de licenciamento" ou "aplicação legada que depende de recursos proprietários da engine".
- Amazon Aurora: uma engine própria da AWS, compatível com o protocolo/wire format do MySQL ou do PostgreSQL (você escolhe qual na criação), mas com uma arquitetura de armazenamento distribuída e clusterizada completamente diferente das engines tradicionais — ver seção 9.
💡 Para a prova: se o cenário menciona "aplicação legada que depende de features específicas de uma engine comercial" ou fala em BYOL (Bring Your Own License), isso normalmente aponta para Oracle ou SQL Server, com o trade-off explícito de custo de licenciamento sendo o ponto central da questão.
2. Multi-AZ vs Read Replica — a distinção mais cobrada do tema
Esse é o ponto que mais confunde quem está começando, porque os dois "parecem" a mesma coisa (uma cópia extra do banco) — mas resolvem problemas completamente diferentes, e a prova testa essa diferença de forma direta e repetida.
| Recurso | Multi-AZ | Read Replica |
|---|---|---|
| Objetivo | Alta disponibilidade / failover | Escala de leitura |
| Replicação | Síncrona, gerenciada pela AWS | Assíncrona (exceto Aurora, que usa storage compartilhado) |
| Endpoint | Único (o mesmo endpoint aponta para a réplica após failover) | Endpoint próprio e separado, usado explicitamente pela aplicação para ler |
| Failover automático | Sim | Não — pode ser promovida manualmente a instância standalone, mas isso não é "failover" automático |
| Acesso de leitura na réplica | Não (a réplica standby não aceita conexões, exceto RDS Custom em cenários específicos) | Sim — esse é justamente o propósito |
| Escopo | Sempre em outra AZ da mesma região | Pode ser na mesma região, cross-region, ou até cross-account (dependendo da engine) |
2.1 Como o Multi-AZ funciona, por dentro
Imagine uma instância primária em us-east-1a. Com Multi-AZ habilitado, a AWS mantém uma cópia física idêntica em us-east-1b, sincronizada em tempo real através de replicação síncrona — cada escrita confirmada na primária só é considerada "durável" depois de também estar replicada na standby. Se a primária falhar (problema de hardware, falha na AZ, ou até durante uma manutenção planejada), a AWS troca o endpoint DNS para apontar para a standby automaticamente — a aplicação não precisa mudar nenhuma configuração, apenas reconectar (o que normalmente leva de 60 a 120 segundos).
A standby do Multi-AZ não aceita conexões de leitura — ela existe puramente como destino de failover, não como forma de distribuir carga.
2.2 Como a Read Replica funciona, por dentro
Uma Read Replica é uma cópia separada, com seu próprio endpoint, que a aplicação precisa referenciar explicitamente para direcionar consultas de leitura para ela (ex: relatórios pesados, dashboards analíticos, consultas de BI que não podem competir com o tráfego transacional da instância principal). A replicação é assíncrona na maioria das engines — o que significa que existe um "replica lag": a réplica pode estar alguns segundos (ou mais, sob carga pesada) atrás do estado mais recente da instância principal.
Uma Read Replica pode ser promovida manualmente a uma instância standalone independente — mas isso é uma ação deliberada do operador, não um failover automático como no Multi-AZ.
💡 Para a prova: "failover automático" e "recuperação rápida sem intervenção" → Multi-AZ. "Escalar leitura", "tirar carga de relatórios da instância principal", "cross-region para latência de leitura" → Read Replica. É possível (e comum) combinar os dois: uma instância primária com Multi-AZ habilitado, e uma ou mais Read Replicas para leitura — cada recurso resolve um problema diferente e não são mutuamente exclusivos.
3. Backups, snapshots e point-in-time recovery
3.1 Backups automáticos
O RDS realiza backups automáticos diários (um snapshot completo do storage) e também captura transaction logs continuamente ao longo do dia. Essa combinação é o que permite o point-in-time recovery (PITR): restaurar o banco para qualquer segundo específico dentro da janela de retenção configurada (de 1 a 35 dias), não apenas para o momento exato de um snapshot diário.
💡 Restaurar um backup (seja o snapshot diário ou um ponto específico via PITR) sempre cria uma nova instância RDS, com um novo endpoint — não é uma restauração "in-place" sobre a instância existente.
3.2 Snapshots manuais
Diferente dos backups automáticos (que são deletados quando a instância é removida, a menos que configurado o contrário), snapshots manuais persistem indefinidamente até serem deletados explicitamente — mesmo depois da instância original ser removida. São úteis para pontos de retenção de longo prazo (ex: antes de uma migração de schema arriscada) que não devem expirar junto com a janela de retenção padrão.
3.3 Impacto de performance
Backups automáticos, por padrão, são tirados a partir da instância standby (quando Multi-AZ está habilitado), evitando impacto de I/O na instância primária. Sem Multi-AZ, o processo de backup pode causar um breve aumento de latência de I/O durante a janela de backup, principalmente em engines que não suportam snapshot sem breve suspensão de I/O.
4. Parameter Groups e Option Groups
Duas ferramentas de configuração frequentemente confundidas entre si:
- Parameter groups: controlam configurações da própria engine do banco de dados — coisas como tamanho de buffer de cache, timeouts de conexão, configurações de log, comportamento de query planner. Alterar um parâmetro "dinâmico" tem efeito imediato; alterar um parâmetro "estático" exige um reboot da instância para ter efeito.
- Option groups: habilitam recursos adicionais específicos de determinadas engines, que não fazem parte da configuração-padrão — por exemplo, Transparent Data Encryption (TDE) no SQL Server/Oracle, ou integração com determinadas extensões.
💡 Para a prova: se o cenário descreve uma mudança de configuração de performance (ex: tamanho de buffer, timeout) que reduziu a performance após aplicada, o problema está em parameter group, não option group. Se o cenário fala em "habilitar um recurso adicional específico da engine" (não uma configuração de tuning), pense option group.
5. Storage no RDS
O RDS usa volumes EBS por trás dos panos para a maioria das engines (exceto Aurora, que tem storage próprio distribuído — ver seção 9), com opções equivalentes em espírito às vistas em EBS puro:
| Tipo | Uso típico |
|---|---|
| General Purpose SSD (gp3) | Padrão para a maioria das cargas de trabalho |
| Provisioned IOPS SSD (io1/io2) | Cargas OLTP intensas que exigem IOPS consistentes e previsíveis |
| Magnetic (legado) | Compatibilidade com instâncias antigas; não recomendado para novos deployments |
O storage do RDS pode ser configurado para crescer automaticamente (Storage Auto Scaling) até um teto máximo definido, evitando que a instância fique sem espaço em picos inesperados de crescimento de dados.
6. Segurança
- Criptografia em repouso: via KMS, habilitada na criação da instância — assim como no EBS, não é possível habilitar criptografia numa instância já existente e não criptografada diretamente; o caminho é criar um snapshot, copiá-lo com criptografia habilitada, e restaurar uma nova instância a partir dele.
- Criptografia em trânsito: via SSL/TLS na conexão entre a aplicação e o banco.
- Rede: instâncias RDS normalmente vivem numa subnet privada, controladas por security groups que definem quais origens (ex: security group das instâncias EC2 da aplicação) podem se conectar na porta do banco.
- IAM Database Authentication: permite autenticar no banco usando tokens temporários gerados via IAM, em vez de senha estática — reduz a necessidade de gerenciar/rotacionar credenciais de banco manualmente (disponível para MySQL, PostgreSQL e MariaDB, com algumas limitações de throughput de autenticação).
7. Escalabilidade
- Vertical (scale up): trocar a classe de instância (ex: de
db.m5.largeparadb.m5.xlarge) para mais CPU/memória. Requer uma breve interrupção, a menos que feito na janela de manutenção com Multi-AZ (que reduz o impacto ao fazer failover para a nova capacidade). - Horizontal para leitura (scale out): adicionar Read Replicas, como discutido na seção 2.
- Horizontal para escrita: RDS tradicional não escala escrita horizontalmente — esse é justamente um dos motivos pelos quais Aurora (com sua arquitetura de storage compartilhado) ou uma solução NoSQL como DynamoDB podem ser mais adequados quando o gargalo é volume de escrita, não de leitura.
8. Manutenção e disponibilidade
- Maintenance window: uma janela configurável de tempo em que a AWS aplica patches de sistema operacional/engine que exigem reboot — com Multi-AZ habilitado, o patch é aplicado primeiro na standby, seguido de failover, minimizando o downtime percebido pela aplicação.
- Minor version upgrades automáticos: podem ser habilitados para aplicar patches de segurança automaticamente dentro da maintenance window.
- Major version upgrades: exigem ação explícita do operador (não são automáticos), já que podem introduzir mudanças de compatibilidade.
9. Aurora — um caso especial dentro do RDS
Embora seja gerenciado através do mesmo console/API do RDS, o Amazon Aurora tem uma arquitetura fundamentalmente diferente das demais engines:
- Storage distribuído e compartilhado: os dados são replicados automaticamente em 6 cópias, distribuídas em 3 AZs, com tolerância a perda de até duas cópias sem impacto de escrita e até três cópias sem impacto de leitura — sem que você precise configurar Multi-AZ manualmente para esse nível de redundância de storage.
- Aurora Replicas: mais rápidas que Read Replicas tradicionais porque compartilham o mesmo storage distribuído da instância primária (replicação quase instantânea, não uma cópia assíncrona separada) — e, diferente de Read Replicas tradicionais de outras engines, uma Aurora Replica pode ser promovida a primária em um failover automático, funcionando também como mecanismo de alta disponibilidade.
- Aurora Serverless: variante que ajusta capacidade computacional automaticamente conforme a demanda, útil para cargas de trabalho intermitentes ou imprevisíveis, sem precisar dimensionar uma classe de instância fixa antecipadamente.
💡 Para a prova: se o cenário destaca "banco compatível com MySQL/PostgreSQL, mas com maior desempenho e replicação mais rápida entre réplicas", ou "cargas de trabalho com picos imprevisíveis e desejo de não gerenciar capacidade manualmente", pense Aurora (ou Aurora Serverless especificamente para o segundo caso).
10. Boas práticas
- Use Multi-AZ para qualquer instância que não tolera downtime não planejado, especialmente em produção.
- Direcione consultas de leitura pesada (relatórios, BI) para Read Replicas, preservando a capacidade da instância principal para tráfego transacional.
- Automatize backups com retenção adequada ao RPO exigido, e teste restaurações periodicamente — um backup nunca testado é uma suposição, não uma garantia.
- Versione e revise mudanças em parameter groups antes de aplicar em produção, testando primeiro em um ambiente não produtivo.
- Habilite Storage Auto Scaling para evitar interrupções por falta de espaço em picos inesperados.
- Prefira IAM Database Authentication a senhas estáticas quando a engine suportar, reduzindo a superfície de gerenciamento de credenciais.
- Avalie Aurora quando o gargalo real for volume de escrita ou necessidade de réplicas de leitura com latência mínima de replicação.
11. Como cai na certificação
- Cenário "aplicação crítica, sem downtime planejado, failover automático necessário" → Multi-AZ.
- Cenário "escalar leitura, tirar carga de relatórios da instância principal" → Read Replica.
- Cenário "recuperação para um ponto exato no tempo, não apenas o snapshot diário mais recente" → Backups automáticos com PITR.
- Cenário "ponto de restauração que precisa persistir além da janela de retenção padrão, mesmo após deletar a instância original" → Snapshot manual.
- Cenário "mudança de configuração de tuning de engine causando degradação de performance" → revisar parameter group.
- Cenário "habilitar um recurso adicional específico da engine (ex: TDE)" → option group.
- Cenário "aplicação legada dependente de recursos proprietários de uma engine comercial, com atenção a custo de licenciamento" → Oracle/SQL Server, considerando BYOL.
- Cenário "banco compatível com MySQL/PostgreSQL, mas exigindo desempenho superior e réplicas de leitura de baixíssima latência" → Aurora.
- Cenário "carga de trabalho intermitente e imprevisível, sem querer gerenciar capacidade manualmente" → Aurora Serverless.
- Cenário "reduzir necessidade de gerenciar/rotacionar senhas de banco manualmente" → IAM Database Authentication.
12. Exercícios práticos
- Decida entre Multi-AZ e Read Replica para um sistema OLTP que exige alta disponibilidade e picos ocasionais de leitura para relatórios — e explique se as duas opções são mutuamente exclusivas.
- Escreva um plano de backup e restauração que suporte RTO de 30 minutos e retenção de 7 dias, especificando se backups automáticos (com PITR) ou snapshots manuais (ou ambos) atendem o requisito.
- Explique por que restaurar um backup do RDS sempre resulta numa nova instância, e qual o impacto disso no planejamento de DR (ex: mudança de endpoint).
- Compare a arquitetura de replicação do Aurora com a de uma Read Replica tradicional de PostgreSQL, e explique por que uma Aurora Replica pode participar de failover automático enquanto uma Read Replica tradicional não pode.
- Um time aplicou um parameter group que reduziu o tamanho de um buffer de cache, e a latência de queries aumentou em produção. Explique o que provavelmente aconteceu e como reverter com segurança.
13. Questões de Revisão
Questão 1
Uma aplicação crítica não pode ter downtime não planejado; a equipe precisa de failover automático e continuidade em caso de falha da instância de banco de dados. Qual é a melhor opção?
Questão 2
Um banco de dados de produção está enfrentando lentidão porque relatórios pesados de BI competem com o tráfego transacional pela mesma instância. Qual abordagem resolve isso sem comprometer a disponibilidade da instância principal?
Questão 3
Um DBA aplicou um novo parameter group reduzindo o tamanho de um buffer de cache, e a latência das queries aumentou significativamente em produção. Qual é a explicação mais provável?
Questão 4
Uma equipe precisa garantir a capacidade de restaurar o banco de dados para um momento específico, como "23h47 de ontem", não apenas para o snapshot diário mais próximo. Qual recurso do RDS atende esse requisito?
Questão 5
Qual afirmação descreve corretamente a diferença fundamental entre Multi-AZ e Read Replica no RDS?
Questão 6
Uma equipe está migrando um banco relacional compatível com PostgreSQL e precisa de réplicas de leitura com a menor latência de replicação possível, além de considerar réplicas participando de failover automático. Qual opção é mais adequada?
Questão 7
Uma instância RDS não criptografada precisa passar a ser criptografada, sem perda de dados. Qual é o caminho correto?
Laboratório Prático
Objetivo: criar uma instância RDS com Multi-AZ habilitado, adicionar uma Read Replica, e observar as diferenças de comportamento entre os dois recursos.
Pré-requisitos: conta AWS com permissão para RDS, VPC e IAM.
Tempo estimado: 35 minutos
Possíveis custos: moderado — instâncias RDS (mesmo pequenas) e Multi-AZ geram custo por hora; recomenda-se deletar os recursos ao final do laboratório.
Passos:
- Crie uma instância RDS (ex: PostgreSQL, classe
db.t3.micro) com Multi-AZ habilitado, numa VPC com subnets em pelo menos duas AZs. - Após a instância disponível, crie uma Read Replica a partir dela.
- Confirme, no console, que a Read Replica possui um endpoint próprio, diferente do endpoint da instância primária.
- Conecte-se à instância primária e insira alguns registros de teste; em seguida, consulte a Read Replica e observe o tempo até os dados aparecerem lá (replicação assíncrona, pode haver um pequeno lag).
- No console, force um failover manual de teste na instância com Multi-AZ (a AWS oferece essa opção para simular indisponibilidade) e observe que o endpoint da instância primária não muda, mas a conexão é redirecionada para a antiga standby.
- Confirme que a Read Replica não foi afetada pelo failover do Multi-AZ, reforçando que são mecanismos independentes.
Resultado esperado: você confirma na prática a diferença entre os dois recursos — o failover do Multi-AZ acontece de forma transparente via troca de endpoint DNS, enquanto a Read Replica mantém seu próprio endpoint e ciclo de vida independente.
Limpeza dos recursos: delete a Read Replica e a instância primária (desabilitando a proteção contra deleção, se aplicável, e optando por não reter um snapshot final se não for necessário).
Referências:
- Amazon RDS User Guide: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html
- Multi-AZ deployments: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html
- Read Replicas: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html
- Backup e restauração (incluindo PITR): https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html
- Amazon Aurora: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html
- IAM Database Authentication: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html