Configuração de réplica de leitura com o PostgreSQL
O RDS para PostgreSQL usa a replicação de streaming nativo do PostgreSQL para criar uma cópia somente leitura de uma instância de banco de dados de origem. Essa instância de banco de dados da réplica de leitura é uma replicação física criada assincronamente da instância de banco de dados de origem. Ela é criada por uma conexão especial que transmite dados de log de gravação antecipada (WAL) da instância de banco de dados de origem e a réplica de leitura. Para obter mais informações, consulte Streaming Replication
O PostgreSQL faz streaming de forma assíncrona das alterações do banco de dados para essa conexão segura conforme são feitas na instância de banco de dados de origem. É possível criptografar comunicações de aplicações de clientes com a instância de banco de dados de origem ou qualquer réplica de leitura definindo o parâmetro ssl como 1. Para obter mais informações, consulte Usar o SSL com uma instância de banco de dados PostgreSQL .
O PostgreSQL usa um perfil de replicação para realizar a replicação em streaming. O perfil é privilegiado, mas não pode ser usado para modificar nenhum dado. O PostgreSQL usa um processo único para gerenciar a replicação.
É possível criar uma réplica de leitura do PostgreSQL sem afetar as operações ou os usuários da instância de banco de dados de origem. O Amazon RDS define os parâmetros e as permissões necessários na instância de banco de dados de origem e na réplica de leitura sem afetar o serviço. Um snapshot é criado da instância de banco de dados de origem, e esse snapshot é usado para criar a réplica de leitura. Se você excluir a réplica de leitura em algum momento futuro, não ocorrerá nenhuma interrupção.
Você pode criar até quinze réplicas de leitura de uma instância de banco de dados de origem na mesma região. Desde o RDS para PostgreSQL 14.1, também é possível criar até três níveis de réplica de leitura em uma cadeia (cascata) de uma instância de banco de dados de origem. Para obter mais informações, consulte Usar réplicas de leitura em cascata com o RDS para PostgreSQL. Em todos os casos, a instância de banco de dados de origem precisa ter backups automatizados configurados. Faça isso definindo o período de retenção do backup na instância de banco de dados como qualquer valor diferente de 0. Para obter mais informações, consulte Como criar uma réplica de leitura.
É possível criar réplicas de leitura para a instância de banco de dados do RDS para PostgreSQL na mesma Região da AWS que a instância de banco de dados de origem. Isso é conhecido como replicação na região. Não é possível criar uma réplica de leitura em uma Regiões da AWS diferente daquela da instância de banco de dados de origem. Isso é conhecido como Replicação entre regiões. Para obter mais informações sobre como configurar réplicas de leitura entre regiões, consulte Criar uma réplica de leitura em uma diferente Região da AWS. Os vários mecanismos compatíveis com o processo de replicação na região e entre regiões diferem ligeiramente de acordo com a versão do RDS para PostgreSQL, como explicado em Como a replicação de streaming funciona para diferentes versões do RDS para PostgreSQL.
Para que a replicação funcione efetivamente, cada réplica de leitura deve ter a mesma quantidade de recursos de computação e de armazenamento que a instância de banco de dados de origem. Se você dimensionar a instância de banco de dados de origem, dimensione as réplicas de leitura também.
O Amazon RDS substituirá todos os parâmetros incompatíveis em uma réplica de leitura se eles impedirem que a réplica de leitura seja iniciada. Por exemplo, suponha que o valor do parâmetro max_connections seja mais alto na instância do banco de dados de origem do que na réplica de leitura. Nesse caso, o Amazon RDS atualiza o parâmetro na réplica de leitura para ser o mesmo valor que o da instância de banco de dados de origem.
As réplicas de leitura do RDS para PostgreSQL têm acesso a bancos de dados externos que estão disponíveis por meio de wrappers de dados externos (FDWs) na instância de banco de dados de origem. Por exemplo, suponha que sua instância de banco de dados do RDS para PostgreSQL esteja usando o wrapper do mysql_fdw para acessar dados do RDS para o MySQL. Nesse caso, as réplicas de leitura também podem acessar esses dados. Outros FDWs compatíveis incluem oracle_fdw, postgres_fdw e tds_fdw. Para obter mais informações, consulte Trabalhar com os invólucros de dados externos compatíveis do Amazon RDS for PostgreSQL.
Usar réplicas de leitura do RDS para PostgreSQL com configurações multi-AZ
É possível criar uma réplica de leitura de uma instância de banco de dados single-AZ ou multi-AZ. É possível usar implantações multi-AZ para melhorar a durabilidade e a disponibilidade de dados essenciais. Uma réplica em espera é uma réplica de leitura dedicada que pode assumir a workload em caso de falha do banco de dados de origem. Não é possível utilizar a réplica em espera para atender ao tráfego de leitura. No entanto, é possível criar réplicas de leitura de instâncias de banco de dados multi-AZ de alto tráfego para descarregar consultas somente leitura. Para saber mais sobre implantações multi-AZ, consulte Implantações de instâncias de banco de dados multi-AZ para o Amazon RDS.
Se a instância de banco de dados de origem de uma implantação multi-AZ sofrer failover sobre a de espera, todas as réplicas de leitura associadas passarão a usar a réplica de espera (não a primária) como a origem de replicação. As réplicas de leitura podem precisar de reinicialização, de acordo com a versão do RDS para PostgreSQL, da seguinte forma:
-
PostgreSQL 13 e versões superiores: a reinicialização não é necessária. As réplicas de leitura são sincronizadas automaticamente com a nova primária. No entanto, em alguns casos, a aplicação cliente pode armazenar os detalhes do DNS (Domain Name Service) em cache para suas réplicas de leitura. Nesse caso, defina o valor do tempo de vida (TTL) como menos de 30 segundos. Isso impede que a réplica de leitura se mantenha em um endereço IP obsoleto (e, portanto, impede que ela sincronize com a nova primária). Para saber mais sobre essa e outras práticas recomendadas, consulte Diretrizes operacionais básicas do Amazon RDS.
-
PostgreSQL 12 e todas as versões anteriores: as réplicas de leitura são reiniciadas automaticamente após um failover para a réplica em espera porque a em espera (agora primária) tem um endereço IP e um nome de instância diferentes. A reinicialização sincroniza a réplica de leitura com a nova primária.
Para saber mais sobre failover, consulte Fazer failover de uma instância de banco de dados multi-AZ para o Amazon RDS. Para saber mais sobre como as réplicas de leitura funcionam em uma implantação multi-AZ, consulte Trabalhar com réplicas de leitura de instância de banco de dados.
Para oferecer suporte a failover de uma réplica de leitura, é possível criar a réplica de leitura como uma instância de banco de dados multi-AZ para que o Amazon RDS crie uma em espera de sua réplica em outra zona de disponibilidade (AZ). 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.