PostgreSQL no Amazon RDS - Amazon Relational Database Service

PostgreSQL no Amazon RDS

O Amazon RDS oferece suporte a instâncias de banco de dados executando várias versões do PostgreSQL. Para obter uma lista das versões disponíveis, consulte Versões disponíveis do banco de dados PostgreSQL.

nota

A descontinuação do PostgreSQL 9.6 está agendada para 26 de abril de 2022. Para obter mais informações, consulte Descontinuação do PostgreSQL versão 9.6.

Você pode criar instâncias de banco de dados e snapshot de banco de dadoss, além de restaurações e backup pontuais. As instâncias de banco de dados que executam o PostgreSQL oferecem suporte a implantações multi-AZ, réplicas de leitura, IOPS provisionadas e podem ser criadas dentro de uma nuvem privada virtual (VPC). Você também pode usar o Secure Socket Layer (SSL) para conectar-se a uma instância de banco de dados executando PostgreSQL.

Antes de criar uma instância de banco de dados, certifique-se de concluir as etapas emConfiguração do Amazon RDS.

Você pode usar qualquer aplicativo de cliente padrão SQL para executar comandos para a instância a partir do computador do cliente. Dentre esses aplicativos, estão pgAdmin, uma ferramenta popular de administração e de desenvolvimento de código aberto para PostgreSQL, ou o psql, um utilitário de linha de comando que faz parte da instalação do PostgreSQL. Para oferecer uma experiência de serviço gerenciada, o Amazon RDS não fornece acesso ao host para as instâncias de banco de dados. Ele também restringe o acesso a determinados procedimentos e tabelas do sistema que exigem privilégios avançados. O Amazon RDS oferece suporte a acesso a bancos de dados em uma instância de banco de dados que usa qualquer aplicação de cliente SQL padrão. O Amazon RDS não permite o acesso direto do host a uma instância de banco de dados usando Telnet ou Secure Shell (SSH).

O Amazon RDS for PostgreSQL é compatível com vários padrões do setor. Por exemplo, você pode usar os bancos de dados do Amazon RDS for PostgreSQL para criar aplicativos em conformidade com a HIPAA e para armazenar informações relacionadas à saúde. Isso inclui o armazenamento de informações de saúde protegidas sob um Business Associate Agreement (BAA – Acordo de Associação Comercial) concluído com a AWS. O Amazon RDS for PostgreSQL também atende aos requisitos de segurança do Federal Risk and Authorization Management Program (FedRAMP). O Amazon RDS for PostgreSQL recebeu uma autoridade provisória da Joint Authorization Board (JAB) da FedRAMP para operar (P-ATO) na linha de base ALTA da FedRAMP nas regiões da AWS GovCloud (US). Para obter mais informações sobre padrões de conformidade com suporte, consulte Conformidade da nuvem AWS.

Para importar os dados PostgreSQL em uma instância de banco de dados, siga as informações na seção Como importar dados no PostgreSQL do Amazon RDS.

Tarefas comuns de gerenciamento do Amazon RDS for PostgreSQL

Estas são tarefas de gerenciamento comuns que você executa com uma instância de banco de dados do Amazon RDS for PostgreSQL, com links para documentação relevante de cada tarefa.

Área de tarefa Documentação relevante

Configuração do Amazon RDS para o primeiro uso

Antes de criar sua instância de banco de dados, certifique-se de concluir alguns pré-requisitos. Por exemplo, as instâncias de banco de dados são criadas por padrão com um firewall que impede acessá-las. Então é necessário criar um grupo de segurança com os endereços IP corretos e uma configuração de rede para acessar a instância de banco de dados.

Configuração do Amazon RDS

Noções básicas sobre instâncias de banco de dados do Amazon RDS

Se você estiver criando uma instância de banco de dados para fins de produção, deve entender como classes de instâncias, tipos de armazenamento e IOPS provisionadas funcionam no Amazon RDS.

Classes de instância de banco de dados

Tipos de armazenamento do Amazon RDS

Armazenamento SSD de IOPS provisionadas

Encontrar versões disponíveis do PostgreSQL

O Amazon RDS oferece suporte a várias versões do PostgreSQL.

Versões disponíveis do banco de dados PostgreSQL

Configuração do suporte à alta disponibilidade e failover

Uma instância de banco de dados de produção deve usar implantações Multi-AZ. As implantações Multi-AZ oferecem maior disponibilidade, durabilidade de dados e tolerância a falhas para instâncias de banco de dados.

Implantações Multi-AZ para alta disponibilidade

Noções básicas sobre a rede da Amazon Virtual Private Cloud (VPC

Se a sua conta AWS tiver uma VPC padrão, a instância de banco de dados será criada automaticamente dentro da VPC padrão. Em alguns casos, sua conta pode não ter uma VPC padrão e você pode querer uma instância de banco de dados em uma VPC. Nesses casos, crie a VPC e os grupos de sub-redes antes de criar a instância de banco de dados.

Determinar se você está usando a plataforma EC2-VPC ou EC2-Classic

Trabalhar com uma instância de banco de dados em uma VPC

Importação de dados no PostgreSQL do Amazon RDS

Você pode usar várias ferramentas diferentes para importar os dados em sua instância de banco de dados PostgreSQL no Amazon RDS.

Como importar dados no PostgreSQL do Amazon RDS

Configurar réplicas de leitura somente leitura (primárias e em espera)

O PostgreSQL no Amazon RDS oferece suporte às réplicas de leitura na mesma região da AWS e em uma região da AWS diferente da instância primária.

Como trabalhar com réplicas de leitura

Trabalhar com réplicas de leitura do PostgreSQL no Amazon RDS

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

Noções básicas sobre grupos de segurança

Por padrão, as instâncias de banco de dados são criadas com um firewall que impede o acesso a elas. Para fornecer acesso por meio desse firewall, você edita as regras de entrada do grupo de segurança associado à VPC que hospeda a instância de banco de dados.

Geralmente, se sua instância de banco de dados está na plataforma EC2-Classic, será necessário criar um grupo de segurança de banco de dados. Se sua instância de banco de dados está na plataforma EC2-VPC, será necessário criar um grupo de segurança de VPC.

Determinar se você está usando a plataforma EC2-VPC ou EC2-Classic

Controlar acesso com grupos de segurança

Configuração de parameter groups e recursos

Para alterar os parâmetros padrão para sua instância de banco de dados, crie um grupo de parâmetros de banco de dados personalizado e altere as configurações dele. Se você fizer isso antes de criar sua instância de banco de dados, é possível escolher seu grupo de parâmetros de banco de dados personalizado ao criar a instância.

Trabalhar com grupos de parâmetros

Conexão à instância de banco de dados PostgreSQL

Após criar um grupo de segurança e associá-lo a uma instância de banco de dados, você poderá se conectar à instância de banco de dados usando qualquer aplicação de cliente SQL padrão, como psql ou pgAdmin.

Conectar a uma instância de banco de dados executando o mecanismo de banco de dados do PostgreSQL

Usar o SSL com uma instância de banco de dados PostgreSQL

Backup e restauração da instância de banco de dados

Você pode configurar a instância de banco de dados para fazer backups automáticos ou snapshots manuais e, depois, restaurar instâncias a partir dos backups ou snapshots.

Como fazer backup e restauração de uma instância de banco de dados do Amazon RDS

Monitoramento das atividades e da performance da instância de banco de dados

Monitore uma instância de banco de dados PostgreSQL usando as métricas, eventos e o monitoramento avançado do Amazon RDS do CloudWatch.

Visualizar métricas no console do Amazon RDS

Visualizar eventos do Amazon RDS

Atualização da versão do banco de dados PostgreSQL

Você pode fazer atualizações das versões principal e secundária para sua instância de banco de dados PostgreSQL.

Atualizar o mecanismo de banco de dados PostgreSQL para Amazon RDS

Escolher uma atualização de versão principal para o PostgreSQL

Trabalhar com arquivos de log

Você pode acessar os arquivos de log de sua instância de banco de dados PostgreSQL.

Arquivos de log do banco de dados PostgreSQL

Noções básicas sobre as práticas recomendadas para instâncias de banco de dados PostgreSQL

Encontre algumas de práticas recomendadas para trabalhar com o PostgreSQL no Amazon RDS.

Práticas recomendadas para trabalhar com PostgreSQL

Veja a seguir uma lista de outras seções deste guia que podem ajudar você a entender e usar recursos importantes do RDS for PostgreSQL:

Trabalhar com o ambiente de visualização de banco de dados

Quando você cria uma instância de banco de dados no Amazon RDS, você sabe que a versão do PostgreSQL baseada nela foi testada e recebe suporte total da Amazon. A comunidade do PostgreSQL lança novas versões e novas extensões continuamente. Você pode experimentar novas versões e extensões do PostgreSQL antes de elas receberem suporte total. Para fazer isso, você pode criar uma nova instância de banco de dados no Database Preview Environment.

As instâncias de banco de dados no Database Preview Environment são semelhantes às instâncias de banco de dados em um ambiente de produção. No entanto, tenha em mente vários fatores importantes:

  • Todas as instâncias de banco de dados são excluídas 60 dias após serem criadas, juntamente com backups e snapshots.

  • Só é possível criar uma instância de banco de dados em uma virtual private cloud (VPC) com base no serviço da Amazon VPC.

  • Você só pode criar tipos de instância M6g, M5, T3, R6g e R5. Para obter mais informações sobre as classes de instância do RDS, consulte Classes de instância de banco de dados .

  • Você só pode usar o SSD de uso geral e o armazenamento em SSD IOPS provisionadas.

  • Não é possível obter ajuda do Suporte AWS com instâncias de banco de dados. Você pode publicar suas perguntas no fórum do RDS Database Preview Environment.

  • Não é possível copiar um snapshot de uma instância de banco de dados para um ambiente de produção.

  • Você pode usar implantações Single-AZ e Multi-AZ.

  • É possível usar funções padrão de despejo e carregamento do PostgreSQL para exportar bancos de dados ou importar bancos de dados para o Database Preview Environment.

Recursos não compatíveis com o ambiente de visualização

Os seguintes recursos não estão disponíveis no ambiente de visualização:

  • Cópia de snapshots entre regiões

  • Réplicas de leitura entre regiões

Criar uma nova instância de banco de dados no ambiente de visualização

Use o procedimento a seguir para criar uma instância de banco de dados no ambiente de visualização.

Para criar uma instância de banco de dados no ambiente de visualização

  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. Escolha Dashboard (Painel) no painel de navegação.

  3. Selecione Switch to Database Preview Environment (Alternar para o Database Preview Environment).

    
                            Caixa de diálogo para selecionar o ambiente de visualização

    Você também pode navegar diretamente para o Database Preview Environment.

    nota

    Se você deseja criar uma instância no Database Preview Environment com a API ou a CLI, o endpoint é rds-preview.us-east-2.amazonaws.com.

  4. Continue com o procedimento descrito em Console.

Limitações para instâncias de banco de dados PostgreSQL

A seguir, veja uma lista de limitações do RDS for PostgreSQL:

  • Você pode ter até 40 instâncias de banco de dados PostgreSQL.

  • Para conhecer os limites de armazenamento, consulte Armazenamento de instâncias de banco de dados do Amazon RDS.

  • O Amazon RDS reserva até 3 conexões para manutenção de sistema. Se você especificar um valor para o parâmetro de conexões do usuário, adicione 3 ao número de conexões que você prevê usar.

Versões disponíveis do banco de dados PostgreSQL

O Amazon RDS oferece suporte a instâncias de banco de dados executando várias edições do PostgreSQL. Você pode especificar qualquer versão do PostgreSQL disponível atualmente ao criar uma nova instância de banco de dados. Você pode especificar a versão principal (como o PostgreSQL 10) e qualquer versão secundária disponível para a versão principal especificada. Se nenhuma versão for especificada, o Amazon RDS usará uma versão disponível por padrão, geralmente a versão mais recente. Se uma versão principal for especificada, mas uma versão secundária não, o Amazon RDS usará por padrão um lançamento recente da versão principal que você especificou.

Para ver uma lista de versões disponíveis, bem como os padrões para instâncias de banco de dados recém-criadas, use o comando da AWS CLI describe-db-engine-versions. Por exemplo, para exibir a versão padrão do mecanismo PostgreSQL, use o seguinte comando:

aws rds describe-db-engine-versions ––default-only ––engine postgres

Para obter detalhes sobre as versões do PostgreSQL compatíveis com o Amazon RDS, consulte Notas de lançamento do Aurora PostgreSQL.

Descontinuação do PostgreSQL versão 9.6

Em 31 de março de 2022, o Amazon RDS planeja descontinuar o PostgreSQL 9.6 usando a programação a seguir. Isso estende a data anunciada anteriormente de 18 de janeiro de 2022 a 26 de abril de 2022. Você deve atualizar todas as instâncias de banco de dados do PostgreSQL 9.6 para PostgreSQL 12 ou posterior o mais rápido possível. Recomendamos que você primeiro atualize para a versão secundária 9.6.20 ou posterior e depois atualize diretamente para o PostgreSQL 12 em vez de atualizar para uma versão principal intermediária. Para obter mais informações, consulte Atualizar o mecanismo de banco de dados PostgreSQL para Amazon RDS.

Ação ou recomendação Datas

A comunidade PostgreSQL descontinuou o suporte ao PostgreSQL 9.6 e não fornecerá mais correções de bugs ou patches de segurança para esta versão.

11 de novembro de 2021

Atualize as instâncias de banco de dados do RDS for PostgreSQL 9.6 para PostgreSQL 12 ou posterior o mais rápido possível. Embora você possa continuar a restaurar snapshots do PostgreSQL 9.6 e criar réplicas de leitura com a versão 9.6, esteja ciente das outras datas críticas nesta programação de descontinuação e seu impacto.

Agora — 31 de março de 2022

Após essa data, você não pode criar novas instâncias do Amazon RDS com a versão principal do PostgreSQL 9.6 a partir do AWS Management Console ou a AWS CLI.

31 de março de 2022

O Amazon RDS atualiza automaticamente as instâncias do PostgreSQL 9.6 para a versão 12. Se você restaurar um snapshot do banco de dados PostgreSQL 9.6, o Amazon RDS atualizará automaticamente o banco de dados restaurado para o PostgreSQL 12.

26 de abril de 2022

Para obter mais informações sobre a descontinuação do RDS for PostgreSQL 9.6, consulte Anúncio: estendendo o processo de fim de vida útil do Amazon RDS for PostgreSQL 9.6.

Versões obsoletas do Amazon RDS for PostgreSQL

O RDS for PostgreSQL 9.5 será descontinuado a partir de março de 2021. Para obter mais informações sobre a descontinuação do RDS for PostgreSQL 9.5, consulte Atualizar o Amazon RDS for PostgreSQL versão 9.5.

Para saber mais sobre a política de descontinuação do RDS for PostgreSQL, consulte Perguntas frequentes sobre o Amazon RDS. Para obter mais informações sobre as versões do PostgreSQL, consulte Versionamento de política na documentação do PostgreSQL.

Versões de extensões do PostgreSQL compatíveis

O RDS for PostgreSQL é compatível com várias extensões do PostgreSQL. A comunidade PostgreSQL às vezes se refere a elas como módulos. Extensões expandem a funcionalidade fornecida pelo mecanismo PostgreSQL. Você pode encontrar uma lista de extensões às quais o Amazon RDS oferece suporte no parameter group de banco de dados padrão para essa versão do PostgreSQL. Você também pode ver a lista de extensões atuais que usam o psql exibindo o parâmetro rds.extensions conforme o exemplo a seguir.

SHOW rds.extensions;
nota

Os parâmetros adicionados em uma versão secundária podem ser exibidos incorretamente ao usar o parâmetro rds.extensions em psql.

Para obter detalhes sobre as extensões do PostgreSQL compatíveis com o Amazon RDS, consulte Extensões do PostgreSQL compatíveis com o Amazon RDS em Notas de lançamento do Amazon RDS for PostgreSQL.

Restringir a instalação de extensões do PostgreSQL

Você pode restringir quais extensões podem ser instaladas em uma instância de banco de dados PostgreSQL. Para fazer isso, defina o parâmetro rds.allowed_extensions para uma string de nomes de extensão separados por vírgulas. Somente essas extensões podem ser instaladas na instância de banco de dados PostgreSQL.

A string padrão para o rds.allowed_extensions parâmetro é '*', o que significa que qualquer extensão disponível para a versão do motor pode ser instalada. Alterar o parâmetrords.allowed_extensions não requer uma reinicialização do banco de dados porque é um parâmetro dinâmico.

O mecanismo de instância de banco de dados PostgreSQL deve ser uma das seguintes versões para você usar o parâmetro rds.allowed_extensions:

  • PostgreSQL 14.1 ou uma versão secundária posterior

  • PostgreSQL 13.2 ou uma versão secundária posterior

  • PostgreSQL 12.6 ou uma versão secundária posterior

Para ver quais instalações de extensão são permitidas, use o comando psql a seguir.

postgres=> SHOW rds.allowed_extensions; rds.allowed_extensions ------------------------ *

Se uma extensão foi instalada antes de ser deixada de fora da lista no parâmetro rds.allowed_extensions, a extensão ainda pode ser usada normalmente, e comandos como ALTER EXTENSION e DROP EXTENSION continuarão a funcionar. No entanto, depois que uma extensão é restrita, CREATE EXTENSION os comandos para a extensão restrita falharão.

Instalação de dependências de extensão com CREATE EXTENSION CASCADE também são restritas. A extensão e suas dependências devem ser especificadas em rds.allowed_extensions. Se uma instalação de dependência de extensão falhar, a instrução CREATE EXTENSION CASCADE inteira falhará.

Se uma extensão não estiver incluída no parâmetro rds.allowed_extensions, você verá um erro como o mostrado a seguir, caso tente instalá-la.

ERROR: permission denied to create extension "extension-name" HINT: This extension is not specified in "rds.allowed_extensions".

Extensões confiáveis do PostgreSQL

Para instalar a maioria das extensões do PostgreSQL são necessários privilégios de rds_superuser. O PostgreSQL 13 introduziu as extensões confiáveis, o que reduz a necessidade de privilégios de rds_superuser para usuários comuns. Com esse recurso, os usuários podem instalar diversas extensões, se tiverem o privilégio CREATE no banco de dados atual, em vez de precisarem ter a função rds_superuser. Para obter mais informações, consulte o comando SQL CREATE EXTENSION na documentação do PostgreSQL.

A seguir listamos as extensões que podem ser instaladas por um usuário que tem o privilégio CREATE no banco de dados atual e não necessitam da função rds_superuser:

Trabalhar com recursos do PostgreSQL compatíveis com o Amazon RDS for PostgreSQL

O Amazon RDS for PostgreSQL é compatível com muitos do recursos e funcionalidades mais comuns do PostgreSQL. Por exemplo, o PostgreSQL tem um recurso autovacuum que executa manutenção de rotina no banco de dados. Esse recurso está ativo por padrão. Embora você possa desativar esse recurso, é altamente recomendável que você o mantenha ativado. Compreender esse recurso e o que você pode fazer para garantir que ele funcione como deveria é uma tarefa básica de qualquer DBA. Para obter mais informações sobre o autovacuum, consulte Trabalhar com o autovacuum do PostgreSQL no Amazon RDS for PostgreSQL. Para saber mais sobre outras tarefas comuns do DBA, consulte ., Tarefas comuns de DBA do Amazon RDS for PostgreSQL.

O RDS for PostgreSQL também oferece suporte a extensões que adicionam funcionalidades importantes à instância de banco de dados. Por exemplo, você pode usar a extensão PostGIS para trabalhar com dados espaciais ou usar a extensão pg_cron para programar a manutenção de dentro da instância. Para obter mais informações sobre as extensões PostgreSQL, consulte Usar extensões PostgreSQL com o Amazon RDS for PostgreSQL.

Os invólucros de dados externos são um tipo específico de extensão projetado para permitir que sua instância de banco de dados RDS for PostgreSQL funcione com outros bancos de dados comerciais ou tipos de dados. Para obter mais informações sobre invólucros de dados externos compatíveis com o RDS for PostgreSQL, consulte Trabalhar com os invólucros de dados externos compatíveis do Amazon RDS for PostgreSQL.

A seguir, você pode encontrar informações sobre alguns recursos do PostgreSQL compatíveis com o RDS for PostgreSQL.

Tipos de dados personalizados e enumerações com o RDS for PostgreSQL

O PostgreSQL é compatível com a criação de tipos de dados personalizados e o trabalho com enumerações. Para obter mais informações sobre como criar e trabalhar com enumerações e outros tipos de dados, consulte Enumerated types (Tipos enumerados) na documentação do PostgreSQL.

Veja a seguir como criar um tipo como uma enumeração e, em seguida, inserir valores em uma tabela.

CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); CREATE TYPE CREATE TABLE t1 (colors rainbow); CREATE TABLE INSERT INTO t1 VALUES ('red'), ( 'orange'); INSERT 0 2 SELECT * from t1; colors -------- red orange (2 rows) postgres=> ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson'; ALTER TYPE postgres=> SELECT * from t1; colors --------- crimson orange (2 rows)

Acionadores de eventos para RDS for PostgreSQL

Todas as versões atuais do PostgreSQL suportam acionadores de eventos, assim como todas as versões disponíveis do RDS for PostgreSQL. Você pode usar a conta de usuário principal (padrão, postgres) para criar, modificar, renomear e excluir acionadores de eventos. Os gatilhos de eventos estão no nível da instância do banco de dados, portanto, podem ser aplicados a todos os bancos de dados em uma instância.

Por exemplo, o código a seguir cria um gatilho de evento que imprime o usuário atual no final de cada comando de Data Definition Language (DDL – Linguagem de definição de dados).

CREATE OR REPLACE FUNCTION raise_notice_func() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'In trigger function: %', current_user; END; $$; CREATE EVENT TRIGGER event_trigger_1 ON ddl_command_end EXECUTE PROCEDURE raise_notice_func();

Para obter mais informações sobre os triggers de eventos do PostgreSQL, consulte Triggers de eventos na documentação do PostgreSQL.

Há várias limitações de uso para os gatilhos de eventos do PostgreSQL no Amazon RDS. Incluindo o seguinte:

  • Não é possível criar gatilhos de eventos em réplicas de leitura. No entanto, você pode criar triggers de eventos na origem de uma réplica de leitura. Os gatilhos do evento serão copiados para a réplica de leitura. Os triggers de eventos na réplica de leitura não são acionados nela quando há mudanças provenientes da origem. No entanto, se a réplica de leitura for promovida, os gatilhos de evento existentes dispararão quando ocorrerem operações do banco de dados.

  • Para realizar uma atualização de versão principal da instância de banco de dados PostgreSQL que usa acionadores de eventos, certifique-se de excluir os acionadores de eventos antes de atualizar a instância.

Páginas grandes para RDS for PostgreSQL

Páginas grandes são um recurso de gerenciamento de memória que reduz a sobrecarga quando uma instância de banco de dados está trabalhando com grandes blocos contíguos de memória, como os usados por buffers compartilhados. Esse recurso PostgreSQL é compatível com todas as versões do RDS for PostgreSQL atualmente disponíveis. Aloca-se páginas grandes ao aplicativo usando chamadas de memória compartilhada para a memória compartilhada mmap ou SYSV. O RDS for PostgreSQL suporta tamanhos de página de 4 KB e 2 MB.

Você pode ativar ou desativar páginas muito grandes alterando o valor do parâmetro huge_pages. O recurso é ativado por padrão para todas as classes de instância de banco de dados que não sejam classes de instância de banco de dados micro, pequenas e médias.

nota

Páginas grandes não têm suporte nas classes de instância de banco de dados db.m1, db.m2 e db.m3.

O RDS for PostgreSQL usa páginas enormes com base na memória compartilhada disponível. Se a instância de banco de dados não puder utilizar páginas enormes devido a restrições de memória compartilhada, o Amazon RDS impedirá que a instância de banco de dados seja iniciada. Nesse caso, o Amazon RDS define o status da instância de banco de dados como um estado de parâmetros incompatíveis. Nesse caso, configure o parâmetro huge_pages como off para permitir que o Amazon RDS inicie a instância de banco de dados.

O parâmetro shared_buffers é essencial para configurar o grupo de memória compartilhada, necessário para usar páginas grandes. O valor padrão para o parâmetro shared_buffers utiliza uma macro de parâmetros de banco de dados. Essa macro define uma porcentagem do total de 8 KB de páginas que estão disponíveis para a memória da instância de banco de dados. Quando você usa páginas enormes, elas estão localizadas com as páginas enormes. O Amazon RDS coloca uma instância de banco de dados em um estado de parâmetros incompatível se os parâmetros da memória compartilhada estão configurados para exigir mais de 90% da memória da instância de banco de dados.

Para saber mais sobre o gerenciamento de memória do PostgreSQL, consulte Consumo de recursos na documentação do PostgreSQL.

Executar replicação lógica para o Amazon RDS for PostgreSQL

A partir da versão 10.4, o Amazon RDS for Postgre SQL é compatível com a sintaxe SQL de publicação e assinatura, que foi introduzida pela primeira vez no PostgreSQL 10. Para saber mais, consulte Logical replication (Replicação lógica) na documentação do PostgreSQL.

A seguir, você pode encontrar informações sobre como configurar a replicação lógica de uma instância de banco de dados RDS for PostgreSQL.

Considerações sobre a replicação lógica e a decodificação lógica

O RDS for PostgreSQL oferece suporte a transmissão de alterações de Write-Ahead Log (WAL – Log de gravação antecipada) usando slots de replicação lógica. Ele também permite o uso de decodificação lógica. Você pode configurar slots de replicação lógica em sua instância e transmitir alterações no banco de dados por meio desses slots para um cliente, como pg_recvlogical. Você cria slots de replicação lógica no nível do banco de dados. Esses slots são compatíveis com conexões de replicação para um único banco de dados.

Os clientes mais comuns para replicação lógica do PostgreSQL são o AWS Database Migration Service ou um host gerenciado personalizado em uma instância do Amazon EC2. O slot de replicação lógica não tem informações sobre o receptor do transmissão. Além disso, não é exigido que o destino seja um banco de dados de réplica. Se você configurar um slot de replicação lógica e não fizer a leitura no slot, os dados poderão ser gravados no armazenamento da instância de banco de dados e lotá-lo rapidamente.

Ative a replicação lógica do PostgreSQL e a descodificação lógica no Amazon RDS com um parâmetro, um tipo de conexão de replicação e uma função de segurança. O cliente da descodificação lógica pode ser qualquer cliente que possa estabelecer uma conexão de replicação a um banco de dados em uma instância de banco de dados PostgreSQL.

Para ativar a descodificação lógica de uma instância de banco de dados RDS for PostgreSQL

  1. Certifique-se de que a conta de usuário que você está usando tenha as seguintes funções:

    • A função rds_superuser para que você possa ativar a replicação lógica

    • A função rds_replication atribui as permissões necessárias para gerenciar slots lógicos e transmitir dados usando slots lógicos.

  2. Defina o parâmetro estático rds.logical_replication como 1. Como parte da aplicação desse parâmetro, defina também os parâmetros wal_level, max_wal_senders, max_replication_slots e max_connections. Essas alterações de parâmetros podem aumentar a geração de WALs. Portanto, configure o parâmetro rds.logical_replication quando estiver usando slots lógicos.

  3. Reinicialize a instância de banco de dados para que o parâmetro estático rds.logical_replication tenha efeito.

  4. Crie um slot de replicação lógica conforme explicado na próxima seção. Esse processo requer que você especifique um plugin de decodificação. Atualmente, o RDS for PostgreSQL aceita os plugins de saída test_decoding e wal2json fornecidos com o PostgreSQL.

Para obter mais informações sobre a descodificação lógica do PostgreSQL, consulte a documentação do PostgreSQL.

Como trabalhar com slots de replicação lógica

Você pode usar comandos SQL para trabalhar com slots lógicos. Por exemplo, o comando a seguir cria um slot lógico denominado test_slot usando o plugin de saída padrão test_decoding do PostgreSQL.

SELECT * FROM pg_create_logical_replication_slot('test_slot', 'test_decoding'); slot_name | xlog_position -----------------+--------------- regression_slot | 0/16B1970 (1 row)

Para listar slots lógicos, use o seguinte comando.

SELECT * FROM pg_replication_slots;

Para descartar um slot lógico, use o seguinte comando.

SELECT pg_drop_replication_slot('test_slot'); pg_drop_replication_slot ----------------------- (1 row)

Para obter mais exemplos sobre como trabalhar com slots lógicos de replicação, veja Logical decoding examples na documentação do PostgreSQL.

Após criar um slot de replicação lógica, você pode iniciar o streaming. O exemplo a seguir mostra como a decodificação lógica é controlada sobre o protocolo de replicação de streaming. Este exemplo usa o programa pg_recvlogical, incluído na distribuição do PostgreSQL. Para fazer Isso, a autenticação do cliente deve estar configurada para permitir conexões de replicação.

pg_recvlogical -d postgres --slot test_slot -U postgres --host -instance-name.111122223333.aws-region.rds.amazonaws.com -f - --start

Para ver o conteúdo da visualização pg_replication_origin_status, consulte a função pg_show_replication_origin_status.

SELECT * FROM pg_show_replication_origin_status(); local_id | external_id | remote_lsn | local_lsn ----------+-------------+------------+----------- (0 rows)

Disco de RAM para o stats_temp_directory

Você pode usar o parâmetro rds.pg_stat_ramdisk_size do RDS for PostgreSQL para especificar a memória do sistema alocada a um disco RAM para armazenar o stats_temp_directory do PostgreSQL. O parâmetro de disco de RAM está disponível para todas as versões do PostgreSQL no Amazon RDS.

Mediante certas workloads, definir este parâmetro pode melhorar a performance e diminuir os requisitos de E/S. Para obter mais informações sobre como usar o stats_temp_directory, consulte a documentação do PostgreSQL.

Para configurar um disco de RAM para o stats_temp_directory, configure o parâmetro rds.pg_stat_ramdisk_size como um valor diferente de zero no parameter group usado por a instância de banco de dados. O valor do parâmetro está em MB. Você deve reiniciar a instância de banco de dados antes que a alteração entre em vigor. Para obter informações sobre como configurar parâmetros, consulte Trabalhar com grupos de parâmetros.

Por exemplo, o seguinte comando da AWS CLI define o parâmetro do disco de RAM para 256 MB.

aws rds modify-db-parameter-group \ --db-parameter-group-name pg-95-ramdisk-testing \ --parameters "ParameterName=rds.pg_stat_ramdisk_size, ParameterValue=256, ApplyMethod=pending-reboot"

Após reiniciar, execute o seguinte comando para ver o status de stats_temp_directory.

postgres=> SHOW stats_temp_directory;

O comando deve retornar um resultado parecido com o exemplo a seguir.

stats_temp_directory --------------------------- /rdsdbramdisk/pg_stat_tmp (1 row)

Tablespaces para RDS for PostgreSQL

O RDS for PostgreSQL oferece suporte a tablespaces para compatibilidade. Como todo o armazenamento está em um único volume lógico, você não pode usar tablespaces para divisão ou isolamento de E/S. Nossos benchmarks e experiência indicam que um único volume lógico é a melhor configuração para a maioria dos casos de uso.

Para criar e usar tablespaces com sua instância de banco de dados do RDS for PostgreSQL é necessário a função rds_superuser. A sua conta de usuário principal da instância de banco de dados do RDS for PostgreSQL (nome padrão, postgres) é membro dessa função. Para obter mais informações, consulte Noções básicas sobre a função rds_superuser.

Se você especificar um nome de arquivo ao criar um espaço de tabela, o prefixo de caminho será /rdsdbdata/db/base/tablespace. O exemplo a seguir coloca arquivos de espaço de tabela em /rdsdbdata/db/base/tablespace/data. Este exemplo pressupõe que um usuário dbadmin (função) existe e que lhe foi concedido a função rds_superuser necessária para trabalhar com tablespaces.

postgres=> CREATE TABLESPACE act_data OWNER dbadmin LOCATION '/data'; CREATE TABLESPACE

Para saber mais sobre tablespaces do PostgreSQL, consulte Tablespaces na documentação do PostgreSQL.