Amazon RDS para PostgreSQL - Amazon Relational Database Service

Amazon RDS para PostgreSQL

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 10 Descontinuação do PostgreSQL versão 9.6.

Você pode criar instâncias de banco de dados e snapshot de banco de dados, 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, conclua as etapas em Configuração do Amazon RDS.

Você pode usar qualquer aplicação cliente padrão SQL para executar comandos para a instância no computador do cliente. Dentre essas aplicações, 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 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 para PostgreSQL é compatível com vários padrões do setor. Por exemplo, você pode usar os bancos de dados do Amazon RDS para 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 para PostgreSQL também atende aos requisitos de segurança do Federal Risk and Authorization Management Program (FedRAMP). O Amazon RDS para 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 para PostgreSQL

Estas são tarefas de gerenciamento comuns que você executa com uma instância de banco de dados do Amazon RDS para 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.

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

Importar dados para o PostgreSQL do Amazon RDS

Você pode usar várias ferramentas diferentes para importar os dados para 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 RDS para PostgreSQL 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 Amazon RDS para PostgreSQL

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 de VPC associado à VPC que hospeda a instância de banco de dados.

Controlar acesso com grupos de segurança

Configuração de grupos de parâmetros 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

Conectar à 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

Monitorar 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 do RDS para 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 para PostgreSQL:

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

Ao criar 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 ambiente de pré-visualização de banco de dados.

As instâncias de banco de dados no ambiente de pré-visualização de banco de dados 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.

  • Você não pode obter ajuda do AWS Support com instâncias de banco de dados. Em vez disso, você pode postar suas perguntas na comunidade de perguntas e respostas gerenciadas do AWS, AWSre:Post.

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

  • Você pode usar funções padrão de despejo e carregamento do PostgreSQL para exportar 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 ambiente de pré-visualização de banco de dados com a API ou a CLI, o endpoint é rds-preview.us-east-2.amazonaws.com.

  4. Continue com o procedimento descrito em Criar uma instância de banco de dados do Amazon RDS, Console.

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 14) 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 “Amazon RDS for PostgreSQL Release Notes” (Notas de lançamento do Amazon RDS para PostgreSQL).

Descontinuação do PostgreSQL versão 10

Em 17 de abril de 2023, o Amazon RDS planeja descontinuar o PostgreSQL 10 utilizando a programação a seguir. Recomendamos que você tome medidas e atualize seus bancos de dados do PostgreSQL em execução na versão principal 10 para uma versão posterior, como a versão 14 do PostgreSQL. Para atualizar sua instância de banco de dados da versão principal 10 do RDS para PostgreSQL de uma versão do PostgreSQL anterior à 10.19, recomendamos primeiro atualizar para a versão 10.19 e depois atualizar para a versão 14. 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 do PostgreSQL planeja descontinuar o PostgreSQL 10 e não fornecerá nenhum patch de segurança após essa data.

10 de novembro de 2022

Comece a atualizar as instâncias de banco de dados do RDS para PostgreSQL 10 para uma versão principal posterior, como o PostgreSQL 14. Embora você possa continuar a restaurar snapshots do PostgreSQL 10 e criar réplicas de leitura com a versão 10, esteja ciente das outras datas críticas nesta programação de descontinuação e seu impacto.

De agora a 14 de fevereiro de 2023

Após essa data, você não poderá criar instâncias do Amazon RDS com a versão principal 10 do PostgreSQL no AWS Management Console nem na AWS CLI.

14 de fevereiro de 2023

Depois dessa data, o Amazon RDS atualiza automaticamente as instâncias do PostgreSQL 10 para a versão 14. Se você restaurar um snapshot do banco de dados PostgreSQL 10, o Amazon RDS atualizará automaticamente o banco de dados restaurado para o PostgreSQL 14.

17 de abril de 2023

Para obter mais informações sobre a descontinuação do RDS para PostgreSQL versão 10, consulte [Announcement]: RDS for PostgreSQL 10 deprecation ([Anúncio]: Descontinuação do RDS para PostgreSQL 10) em AWS re:Post.

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 do 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 para 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 poderá criar instâncias do Amazon RDS com a versão principal do PostgreSQL 9.6 no AWS Management Console ou na AWS CLI.

31 de março de 2022

Depois dessa data, 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

Versões obsoletas do Amazon RDS for PostgreSQL

O RDS para PostgreSQL 9.5 será descontinuado a partir de março de 2021. Para obter mais informações sobre a descontinuação do RDS para 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 para 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 para 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 grupo de parâmetros 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.

A partir do RDS para PostgreSQL 13, determinadas extensões podem ser instaladas por usuários do banco de dados que não sejam o rds_superuser. Elas são conhecidas como extensões confiáveis. Para saber mais, consulte Extensões confiáveis do PostgreSQL.

Determinadas versões do RDS para PostgreSQL oferecem suporte ao parâmetro rds.allowed_extensions. Esse parâmetro permite que um rds_superuser limite as extensões que podem ser instaladas na instância de banco de dados do RDS para PostgreSQL. Para obter mais informações, consulte Restringir a instalação de extensões do PostgreSQL.

Para listas das versões e extensões do PostgreSQL compatíveis com cada versão disponível do RDS para PostgreSQL, consulte “PostgreSQL extensions supported on Amazon RDS” (Extensões do PostgreSQL compatíveis com o Amazon RDS) em “Amazon RDS for PostgreSQL Release Notes” (Notas de lançamento do Amazon RDS para 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âmetro rds.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:

Para listas das versões e extensões do PostgreSQL compatíveis com cada versão disponível do RDS para PostgreSQL, consulte PostgreSQL extensions supported on Amazon RDS (Extensões do PostgreSQL compatíveis com o Amazon RDS) em “Amazon RDS for PostgreSQL Release Notes” (Notas de lançamento do Amazon RDS para PostgreSQL).

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

O Amazon RDS para PostgreSQL oferece suporte a muitos dos recursos mais comuns do PostgreSQL. Por exemplo, o PostgreSQL tem um recurso autovacuum que executa manutenção de rotina no banco de dados. O recurso de autovacuum 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 para PostgreSQL.

O RDS para 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 para 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 do RDS para 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 para 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 mais alguns recursos compatíveis com o RDS para PostgreSQL.

Tipos de dados personalizados e enumerações com o RDS para 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 para PostgreSQL

Todas as versões atuais do PostgreSQL suportam acionadores de eventos, assim como todas as versões disponíveis do RDS para PostgreSQL. Você pode usar a conta de usuário principal (padrão, postgres) para criar, modificar, renomear e excluir acionadores de eventos. Os acionadores 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 acionador de evento que imprime o usuário atual no final de cada comando de linguagem de definição de dados (DDL).

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 acionadores 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 acionadores de eventos 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 acionadores de eventos existentes serão ativados quando ocorrerem operações do banco de dados.

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

Páginas grandes para RDS para 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 para PostgreSQL atualmente disponíveis. As páginas grandes são alocadas à aplicação usando chamadas de memória compartilhada para a memória compartilhada mmap ou SYSV. O RDS para PostgreSQL comporta 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 para PostgreSQL usa páginas enormes com base na memória compartilhada disponível. Se a instância de banco de dados não puder usar 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 usa 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 para PostgreSQL

A partir da versão 10.4, o Amazon RDS para PostgreSQL é 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 do RDS para PostgreSQL.

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

O RDS para 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.

Como ativar a descodificação lógica de uma instância de banco de dados do RDS para PostgreSQL

  1. Verifique se a conta de usuário que você está usando tem 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 plug-in de decodificação. Atualmente, o RDS para PostgreSQL aceita os plug-ins 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 plug-in 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, consulte “Logical decoding examples” (Exemplos de decodificação lógica) 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 para 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 RAM para o parâmetro stats_temp_directory, configure o parâmetro rds.pg_stat_ramdisk_size como um valor literal inteiro no grupo de parâmetros usado pela instância de banco de dados. Esse parâmetro denota MB, portanto, você deve usar um valor inteiro. Expressões, fórmulas e funções não são válidas para o parâmetro rds.pg_stat_ramdisk_size. Reinicialize a instância de banco de dados para que o novo valor 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"

Depois de 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 para PostgreSQL

O RDS para 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 para PostgreSQL é necessário a função rds_superuser. A sua conta de usuário principal da instância de banco de dados do RDS para PostgreSQL (nome padrão, postgres) é membro dessa função. Para obter mais informações, consulte Noções básicas de perfis e permissões do PostgreSQL.

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.

Agrupamentos do RDS para PostgreSQL para EBCDIC e outras migrações de mainframe

O RDS para PostgreSQL versões 10 e posteriores inclui a ICU versão 60.2, que é baseada no Unicode 10.0 e inclui agrupamentos do Unicode Common Locale Data Repository, CLDR 32. Essas bibliotecas de internacionalização de software garantem que as codificações de caracteres sejam apresentadas de forma consistente, independentemente do sistema operacional ou da plataforma. Para obter mais informações sobre o Unicode CLDR-32, consulte a “CLDR 32 Release Note” (Nota de lançamento do CLDR 32) no site do Unicode CLDR. Você pode saber mais sobre os componentes de internacionalização do Unicode (ICU) no site do Comitê Técnico do ICU (ICU-TC). Para obter informações sobre o ICU-60, consulte Baixar o ICU 60.

A partir da versão 14.3, o RDS para PostgreSQL também inclui agrupamentos que ajudam na integração e conversão de dados de sistemas baseados em EBCDIC. O código de intercâmbio decimal codificado binário estendido ou codificação EBCDIC é comumente usada pelos sistemas operacionais de mainframe. Esses agrupamentos fornecidos pelo Amazon RDS são definidos de forma restrita para classificar somente os caracteres Unicode que são mapeados diretamente para páginas de código EBCDIC. Os caracteres são classificados em ordem de pontos de código EBCDIC para permitir a validação dos dados após a conversão. Esses agrupamentos não incluem formulários desnormalizados nem incluem caracteres Unicode que não são mapeados diretamente para um caractere na página de código EBCDIC de origem.

Os mapeamentos de caracteres entre páginas de código EBCDIC e pontos de código Unicode são baseados em tabelas publicadas pela IBM. O conjunto completo é disponibilizado pela IBM como um arquivo compactado para download. O RDS para PostgreSQL usou esses mapeamentos com as ferramentas fornecidas pelo ICU para criar os agrupamentos listados nas tabelas desta seção. Os nomes do agrupamento incluem um idioma e um país, conforme exigido pelo ICU. No entanto, as páginas de código EBCDIC não especificam idiomas, e algumas páginas de código EBCDIC abrangem vários países. Isso significa que a parte do idioma e do país dos nomes de agrupamento na tabela é arbitrária e não precisa corresponder à localidade atual. Em outras palavras, o número da página de código é a parte mais importante do nome do agrupamento nesta tabela. Você pode usar qualquer um dos agrupamentos listados nas tabelas a seguir em qualquer banco de dados do RDS para PostgreSQL.

  • Unicode to EBCDIC collations table: algumas ferramentas de migração de dados de mainframe usam internamente LATIN1 ou LATIN9 para codificar e processar dados. Essas ferramentas usam esquemas de ida e volta para preservar a integridade dos dados e oferecer suporte à conversão reversa. Os agrupamentos nesta tabela podem ser usados por ferramentas que processam dados usando a codificação LATIN1, que não exige tratamento especial.

  • Unicode to LATIN9 collations table: você pode usar esses agrupamentos em qualquer banco de dados do RDS para PostgreSQL.

Na tabela a seguir, você encontra agrupamentos disponíveis no RDS para PostgreSQL que mapeiam páginas de código EBCDIC para pontos de código Unicode. Recomendamos usar os agrupamentos nesta tabela para o desenvolvimento de aplicações que exijam classificação com base na ordem das páginas de código da IBM.

Nome do agrupamento PostgreSQL Descrição do mapeamento da página de código e ordem de classificação

da-DK-cp277-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 277 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 277

de-DE-cp273-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 273 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 273

en-GB-cp285-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 285 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 285

en-US-cp037-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 037 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 37

es-ES-cp284-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 284 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 284

fi-FI-cp278-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 278 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 278

fr-FR-cp297-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 297 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 297

it-IT-cp280-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 280 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 280

nl-BE-cp500-x-icu

Os caracteres Unicode que são mapeados diretamente para a página de código IBM EBCDIC 500 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 500

O Amazon RDS fornece um conjunto de agrupamentos adicionais que classificam pontos de código Unicode mapeados para caracteres LATIN9 usando as tabelas publicadas pela IBM, na ordem dos pontos de código originais, de acordo com a página de código EBCDIC dos dados de origem.

Nome do agrupamento PostgreSQL Descrição do mapeamento da página de código e ordem de classificação

da-DK-cp1142m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1142 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1142

de-DE-cp1141m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1141 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1141

en-GB-cp1146m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1146 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1146

en-US-cp1140m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1140 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1140

es-ES-cp1145m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1145 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1145

fi-FI-cp1143m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1143 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1143

fr-FR-cp1147m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1147 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1147

it-IT-cp1144m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1144 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1144

nl-BE-cp1148m-x-icu

Caracteres Unicode mapeados para caracteres LATIN9 originalmente convertidos da página de código IBM EBCDIC 1148 (por tabelas de conversão) são classificados na ordem de pontos de código IBM CP 1148

A seguir, você pode encontrar um exemplo de como usar um agrupamento do RDS para PostgreSQL.

db1=> SELECT pg_import_system_collations('pg_catalog'); pg_import_system_collations ----------------------------- 36 db1=> SELECT '¤' < 'a' col1; col1 ------ t db1=> SELECT '¤' < 'a' COLLATE "da-DK-cp277-x-icu" col1; col1 ------ f

Recomendamos usar os agrupamentos na Unicode to EBCDIC collations table e na Unicode to LATIN9 collations table para desenvolvimento de aplicações que exijam classificação com base na ordenação das páginas de código da IBM. Os seguintes agrupamentos (com o sufixo “b”) também são visíveis em pg_collation, mas são destinados ao uso por ferramentas de integração e migração de dados de mainframe em AWS que mapeiam páginas de código com mudanças específicas de pontos de código e exigem tratamento especial em agrupamento. Ou seja, o uso dos agrupamentos a seguir não é recomendado.

  • da-DK-277b-x-icu

  • da-DK-1142b-x-icu

  • de-DE-cp273b-x-icu

  • de-DE-cp1141b-x-icu

  • en-GB-cp1146b-x-icu

  • en-GB-cp285b-x-icu

  • en-US-cp037b-x-icu

  • en-US-cp1140b-x-icu

  • es-ES-cp1145b-x-icu

  • es-ES-cp284b-x-icu

  • fi-FI-cp1143b-x-icu

  • fr-FR-cp1147b-x-icu

  • fr-FR-cp297b-x-icu

  • it-IT-cp1144b-x-icu

  • it-IT-cp280b-x-icu

  • nl-BE-cp1148b-x-icu

  • nl-BE-cp500b-x-icu

Para saber mais sobre a migração de aplicações de ambientes de mainframe para a AWS, consulte What is AWS Mainframe Modernization? (O que é o AWS Mainframe Modernization?)

Para obter mais informações sobre como gerenciar agrupamentos no PostgreSQL, consulte “Collation Support” (Compatibilidade com agrupamentos) na documentação do PostgreSQL.