PostgreSQL sur Amazon RDS - Amazon Relational Database Service

PostgreSQL sur Amazon RDS

Amazon RDS prend en charge les instances de bases de données qui exécutent plusieurs versions de PostgreSQL. Pour obtenir la liste des versions disponibles, veuillez consulter Versions de base de données PostgreSQL disponibles.

Note

L'obsolescence de PostgreSQL 9.6 est prévue pour le 26 avril 2022. Pour plus d'informations, consultez Obsolescence de PostgreSQL version 9.6.

Vous pouvez créer des instances de bases de données et des instantanés de base de données, ainsi que des restaurations et des sauvegardes à un moment donné. Les instances de base de données qui exécutent PostgreSQL prennent en charge les déploiements Multi-AZ, les réplicas en lecture et les IOPS provisionnés, et peuvent être créées au sein d'un cloud privé virtuel (VPC). Vous pouvez également utiliser le protocole SSL pour vous connecter à une instance de base de données exécutant PostgreSQL.

Avant de créer une instance de base de données, assurez-vous d'avoir effectué les étapes de la section Configuration pour Amazon RDS.

Vous pouvez utiliser une application cliente SQL standard quelconque pour exécuter les commandes pour l'instance à partir de votre ordinateur client. De telles applications incluent pgAdmin, un outil d'administration et de développement Open Source fréquemment utilisé pour PostgreSQL, ou psql, un utilitaire de ligne de commande inclus dans une installation PostgreSQL. Pour offrir une expérience de service géré, Amazon RDS ne fournit pas l'accès hôte aux instances de base de données. Il restreint également l'accès à certaines procédures système et tables qui requièrent des privilèges avancés. Amazon RDS prend en charge l'accès aux bases de données sur une instance de base de données en utilisant toute application cliente SQL standard. Amazon RDS ne permet pas d'accès de l'hôte direct à une instance de base de données via Telnet ou Secure Shell (SSH).

Amazon RDS for PostgreSQL est conforme à de nombreuses normes du secteur. Par exemple, vous pouvez utiliser des bases de données Amazon RDS for PostgreSQL afin de développer des applications conformes à la loi HIPAA et de stocker les informations relatives aux soins de santé. Cela inclut le stockage des informations de santé protégées (PHI, Protected Health Information) selon les termes d'un Accord d'association commerciale (BAA, Business Associate Agreement) conclu avec AWS. Amazon RDS for PostgreSQL respecte également les exigences de sécurité du Programme fédéral de gestion des risques et des autorisations (FedRAMP) Amazon RDS for PostgreSQL a obtenu auprès du conseil d'autorisation commun (Joint Authorization Board, JAB) l'autorisation provisoire d'opérer (Provisional Authority to Operate, P-ATO) à niveau d'impact élevé du FedRAMP au sein des régions AWS GovCloud (US). Pour plus d'informations sur les normes de conformité prises en charge, veuillez consulter Conformité du Cloud AWS.

Pour importer des données PostgreSQL dans une instance de base de données, suivez les informations fournies dans la section Importation de données dans PostgreSQL sur Amazon RDS.

Tâches courantes de gestion pour Amazon RDS for PostgreSQL

Vous trouverez ci-dessous les tâches courantes de gestion que vous exécutez avec une instance de base de données Amazon RDS for PostgreSQL, avec des liens vers la documentation appropriée relative à chaque tâche.

Type de tâche Documentation

Configuration d'Amazon RDS pour la première utilisation

Vous devez remplir quelques conditions préalables avant de créer votre instance de base de données. Par exemple, des instances de bases de données sont créées par défaut avec un pare-feu qui empêche d'y accéder. Vous devez créer un groupe de sécurité avec les adresses IP et la configuration réseau voulues pour accéder à l'instance de base de données.

Configuration pour Amazon RDS

Présentation des instances de bases de données d'Amazon RDS

Si vous créez une instance de base de données à des fins de production, vous devez comprendre comment les classes d'instance, les types de stockage et les IOPS provisionnées fonctionnent dans Amazon RDS.

Classes d'instances de base de données

Types de stockage Amazon RDS

Stockage SSD d'IOPS par seconde provisionnées

Recherche des versions de PostgreSQL disponibles

Amazon RDS prend en charge plusieurs versions de PostgreSQL.

Versions de base de données PostgreSQL disponibles

Configuration de la haute disponibilité et de la prise en charge du basculement

Une instance de base de données de production doit utiliser des déploiements multi-AZ. Les déploiements Multi-AZ améliorent la disponibilité, la durabilité des donnés et la tolérance aux pannes pour les instances de bases de données.

Déploiements multi-AZ pour une haute disponibilité

Présentation du réseau Amazon Virtual Private Cloud (VPC)

Si votre compte AWS possède un VPC par défaut, votre instance de base de données est automatiquement créée dans le VPC par défaut. Dans certains cas, votre compte peut ne pas avoir de VPC par défaut, et vous pouvez souhaiter que l'instance de base de données soit dans un VPC. Dans ce cas, créez le VPC et les groupes de sous-réseau avant de créer l'instance de base de données.

Déterminer si vous utilisez une plateforme EC2-VPC ou EC2-Classic

Utilisation d'une instance de base de données dans un VPC

Importation de données dans Amazon RDS PostgreSQL

Vous pouvez utiliser différents outils pour importer des données dans votre instance de base de données PostgreSQL sur Amazon RDS.

Importation de données dans PostgreSQL sur Amazon RDS

Configuration des réplicas en lecture (principaux et de secours) en lecture seule

RDS for PostgreSQL prend en charge les réplicas en lecture se trouvant dans la même Région AWS et dans une Région AWS différente de l'instance principale.

Utilisation des réplicas en lecture

Utilisation de réplicas en lecture pour Amazon RDS for PostgreSQL

Création d'un réplica en lecture dans une autre Région AWS

Présentation des groupes de sécurité

Par défaut, les instances de bases de données sont créées avec un pare-feu qui empêche d'y accéder. Pour fournir l'accès via ce pare-feu, vous modifiez les règles entrantes pour le groupe de sécurité associé au VPC hébergeant l'instance de base de données.

En général, si votre instance de base de données se trouve sur la plateforme EC2-Classic, vous devez créer un groupe de sécurité de base de données. Si votre instance de base de données se trouve sur la plateforme EC2-VPC, vous devez créer un groupe de sécurité VPC.

Déterminer si vous utilisez une plateforme EC2-VPC ou EC2-Classic

Contrôle d'accès par groupe de sécurité

Configuration des fonctionnalités et des groupes de paramètres

Pour modifier les paramètres par défaut de votre instance de base de données, créez un groupe de paramètres de base de données personnalisé et modifiez les paramètres. Si vous procédez de la sorte avant de créer votre instance de base de données, vous pouvez choisir votre groupe de paramètres de base de données personnalisé lorsque vous créez l'instance.

Utilisation des groupes de paramètres

Connexion à votre instance de base de données PostgreSQL

Après avoir créé un groupe de sécurité et l'avoir associé à une instance de base de données, vous pouvez vous connecter à l'instance de base de données en utilisant une application cliente SQL standard quelconque telle que psql ou pgAdmin.

Connexion à une instance de base de données exécutant le moteur de base de données PostgreSQL

Utilisation de SSL avec une instance de base de données PostgreSQL

Sauvegarde et restauration de votre instance de base de données

Vous pouvez configurer votre instance de base de données pour que les sauvegardes soient exécutées automatiquement ou que les instantanés soient créés manuellement, puis que les instances soient restaurées à partir des sauvegardes ou des instantanés.

Sauvegarde et restauration d'une instance de base de données Amazon RDS

Surveillance de l'activité et des performances de votre instance de base de données

Vous pouvez surveiller une instance de base de données PostgreSQL en utilisant les métriques CloudWatch Amazon RDS, les évènements et la supervision améliorée.

Affichage des métriques dans la console Amazon RDS

Affichage d'évènements Amazon RDS

Mise à niveau de la version de base de données PostgreSQL

Vous pouvez procéder à la mise à niveau des versions majeures et mineures de votre instance de base de données PostgreSQL.

Mise à niveau du moteur de base de données PostgreSQL pour Amazon RDS

Choix d'une mise à niveau de version majeure pour PostgreSQL

Utilisation des fichiers journaux

Vous pouvez accéder aux fichiers journaux de votre instance de base de données PostgreSQL.

Fichiers journaux de base de données PostgreSQL

Présentation des bonnes pratiques pour les instances de bases de données PostgreSQL

Découvrez certaines des meilleures pratiques pour l'utilisation de PostgreSQL sur Amazon RDS.

Bonnes pratiques pour utiliser les moteurs de stockage PostgreSQL

Vous trouverez ci-dessous une liste d'autres sections de ce guide qui peuvent vous aider à comprendre et à utiliser les fonctions importantes de RDS for PostgreSQL :

Utilisation de l'environnement en préversion de base de données

Lorsque vous créez une instance de base de données dans Amazon RDS, vous savez que la version de PostgreSQL sur laquelle elle est basée a été testée et est totalement prise en charge par Amazon. La communauté PostgreSQL publie continuellement de nouvelles versions et de nouvelles extensions. Vous pouvez tester les nouvelles versions et extensions de PostgreSQL avant qu'elles ne soient totalement prises en charge. Pour cela, vous pouvez créer une nouvelle instance de base de données dans l'environnement en préversion de base de données.

Les instances de base de données de l'environnement en préversion de base de données sont similaires à celles de l'environnement de production. Toutefois, gardez à l'esprit certains éléments importants :

  • Toutes les instances de base de données sont supprimées 60 jours après leur création, en même temps que leurs sauvegardes et leurs instantanés.

  • Vous ne pouvez créer une instance de base de données que dans un VPC (Virtual Private Cloud) basé sur un service Amazon VPC.

  • Vous ne pouvez créer que des types d'instance M6g, M5, T3, R6g et R5. Pour plus d'informations sur les classes d'instances RDS, consultez Classes d'instances de base de données .

  • Vous ne pouvez utiliser que les stockages SSD à usage général et les stockages SSD IOPS provisionnés.

  • Vous ne pouvez pas obtenir de l'aide sur les instances de bases de données auprès d'AWS Support. Au lieu de cela, vous pouvez publier vos questions dans AWS re:Post, la communauté de questions-réponses gérée par AWS.

  • Vous ne pouvez pas copier un instantané d'instance de base de données dans un environnement de production.

  • Vous pouvez utiliser à la fois des déploiements mono-AZ et multi-AZ.

  • Vous pouvez utiliser les fonctions de vidage et de chargement PostgreSQL standard pour exporter des bases de données depuis ou importer des bases de données vers l'environnement ne préversion de la base de données.

Fonctions non prises en charge dans l'environnement en préversion

Les fonctions suivantes ne sont pas disponibles dans l'environnement en préversion :

  • Copie d'instantanés entre Régions

  • Réplicas en lecture entre Régions

Création d'une nouvelle instance de base de données dans l'environnement en préversion

Utilisez la procédure suivante pour créer une instance de base de données dans l'environnement en préversion.

Pour créer une instance de base de données dans l'environnement en préversion

  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Choisissez Dashboard (Tableau de bord) dans le panneau de navigation.

  3. Choisissez Switch to database preview environment (Basculer vers l'environnement en préversion de base de données).

    
                            Boîte de dialogue permettant de sélectionner l'environnement en préversion

    Vous pouvez également accéder directement à l'environnement en préversion de base de données.

    Note

    Si vous souhaitez créer une instance dans l'environnement en préversion de base de données via l'API ou la CLI, le point de terminaison est rds-preview.us-east-2.amazonaws.com.

  4. Passez ensuite à la procédure décrite dans Console.

Limitations pour les instances de bases de données PostgreSQL

Voici une liste de restrictions pour RDS for PostgreSQL :

  • Vous pouvez avoir jusqu'à 40 instances de bases de données PostgreSQL.

  • Pour les limites de stockage, veuillez consulter Stockage d'instance de base de données Amazon RDS.

  • Amazon RDS réserve jusqu'à 3 connexions pour la maintenance du système. Si vous spécifiez une valeur pour le paramètre des connexions utilisateur, vous devez ajouter 3 au nombre de connexions que vous envisagez d'utiliser.

Versions de base de données PostgreSQL disponibles

Amazon RDS prend en charge les instances de bases de données qui exécutent plusieurs éditions de PostgreSQL. Vous pouvez spécifier toute version de PostgreSQL actuellement disponible lors de la création d'une instance de base de données. Vous pouvez spécifier la version majeure (telle que PostgreSQL 10), et toute version mineure disponible pour la version majeure spécifiée. Si aucune version n'est spécifiée, Amazon RDS utilise par défaut une version disponible, généralement la version la plus récente. Si une version majeure est spécifiée, mais qu'une version mineure ne l'est pas, Amazon RDS utilise par défaut une version récente de la version majeure que vous avez spécifiée.

Pour voir une liste des versions disponibles, ainsi que les valeurs par défaut pour les instances de base de données nouvellement créées, utilisez la commande describe-db-engine-versions de l'AWS CLI. Par exemple, pour afficher la version par défaut du moteur PostgreSQL, utilisez la commande suivante :

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

Pour plus d'informations sur les versions PostgreSQL prises en charge sur Amazon RDS, consultez Amazon RDS for PostgreSQL Release Notes (Notes de mise à jour Amazon RDS for PostgreSQL).

Obsolescence de PostgreSQL version 9.6

Le 31 mars 2022, Amazon RDS prévoit de rendre obsolète la prise en charge pour PostgreSQL 9.6 selon la planification suivante. Cela prolonge la date annoncée précédemment du 18 janvier 2022 au 26 avril 2022. Vous devez mettre à niveau dès que possible toutes vos instances de base de données PostgreSQL 9.6 vers PostgreSQL 12 ou version ultérieure. Nous vous recommandons de procéder à une mise à niveau vers la version mineure 9.6.20 ou ultérieure, puis de mettre à niveau directement vers PostgreSQL 12 plutôt que de passer à une version majeure intermédiaire. Pour plus d'informations, consultez Mise à niveau du moteur de base de données PostgreSQL pour Amazon RDS.

Action ou recommandation Dates

La communauté PostgreSQL a cessé de prendre en charge PostgreSQL 9.6 et ne fournira plus de correctifs de bogues ou de correctifs de sécurité pour cette version.

11 novembre 2021

Commencez à mettre à niveau dès que possible les instances de base de données RDS pour PostgreSQL 9.6 vers PostgreSQL 12 ou version ultérieure. Bien que vous puissiez continuer à restaurer des instantanés PostgreSQL 9.6 et à créer des réplicas en lecture avec la version 9.6, soyez conscient des autres dates critiques de ce calendrier d'obsolescence et de leur impact.

Aujourd'hui – 31 mars 2022

Après cette date, vous ne pourrez pas créer de nouvelles instances Amazon RDS avec la version majeure de PostgreSQL 9.6 depuis la AWS Management Console ou l'AWS CLI.

31 mars 2022

Amazon RDS met automatiquement à niveau les instances PostgreSQL 9.6 vers la version 12. Si vous restaurez un instantané de base de données PostgreSQL 9.6, Amazon RDS met automatiquement à niveau la base de données restaurée vers PostgreSQL 12.

26 avril 2022

Versions rendues obsolètes pour Amazon RDS for PostgreSQL

RDS for PostgreSQL 9.5 est obsolète depuis mars 2021. Pour plus d'informations sur l'obsolescence RDS for PostgreSQL 9.5, veuillez consulter Upgrading from Amazon RDS for PostgreSQL version 9.5.

Pour en savoir plus sur la politique d'obsolescence pour RDS for PostgreSQL, veuillez consulter FAQ Amazon RDS. Pour plus d'informations sur les versions de PostgreSQL, veuillez consulter Versioning Policydans la documentation PostgreSQL.

Versions de l'extension PostgreSQL prises en charge

RDS for PostgreSQL prend en charge de nombreuses extensions PostgreSQL. La communauté PostgreSQL les appelle parfois des modules. Les extensions complètent les fonctionnalités fournies par le moteur PostgreSQL. Vous trouverez une liste des extensions prises en charge par Amazon RDS dans le groupe de paramètres de base de données par défaut pour cette version de PostgreSQL. Vous pouvez également consulter la liste actuelle des extensions utilisant psql en affichant le paramètre rds.extensions comme dans l'exemple suivant.

SHOW rds.extensions;
Note

Les paramètres ajoutés à une version mineure peuvent s'afficher de manière incorrecte lors de l'utilisation du paramètre rds.extensions dans psql.

Pour obtenir plus de détails sur les extensions PostgreSQL prises en charge par Amazon RDS, consultez PostgreSQL extensions supported on Amazon RDS (Extensions PostgreSQL prises en charge par Amazon RDS) dans Amazon RDS for PostgreSQL Release Notes (Notes de mise à jour de Amazon RDS for PostgreSQL).

Restriction de l'installation des extensions PostgreSQL

Vous pouvez restreindre les extensions pouvant être installées sur une instance de base de données PostgreSQL. Pour ce faire, définissez le paramètre rds.allowed_extensions sur une chaîne de noms d'extension séparés par des virgules. Seules ces extensions peuvent alors être installées dans l'instance de base de données PostgreSQL.

La chaîne par défaut du paramètre rds.allowed_extensions est « * », ce qui signifie que toute extension disponible pour la version du moteur peut être installée. La modification du paramètre rds.allowed_extensions ne nécessite pas de redémarrage de la base de données, car il s'agit d'un paramètre dynamique.

Le moteur d'instance de base de données PostgreSQL doit être l'une des versions suivantes pour que vous puissiez utiliser le paramètre rds.allowed_extensions :

  • PostgreSQL 14.1 ou version mineure ultérieure

  • PostgreSQL 13.2 ou version mineure ultérieure

  • PostgreSQL 12.6 ou version mineure ultérieure

Pour voir quelles installations d'extension sont autorisées, utilisez la commande psql suivante.

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

Si une extension a été installée avant d'être exclue de la liste dans le paramètre rds.allowed_extensions, l'extension peut toujours être utilisée normalement, et les commandes telles que ALTER EXTENSION et DROP EXTENSION resteront opérationnelles. Cependant, une fois qu'une extension est restreinte, les commandes CREATE EXTENSION de l'extension restreinte échouent.

L'installation des dépendances d'extension avec CREATE EXTENSION CASCADE sont également restreintes. L'extension et ses dépendances doivent être spécifiées dans rds.allowed_extensions. Si une installation de dépendance d'extension échoue, l'instruction CREATE EXTENSION CASCADE échouera dans son intégralité.

Si une extension n'est pas incluse avec le paramètre rds.allowed_extensions, vous verrez une erreur telle que la suivante si vous essayez de l'installer.

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

Extensions de confiance PostgreSQL

L'installation de la plupart des extensions PostgreSQL nécessite de privilèges rds_superuser. PostgreSQL 13 introduit des extensions d'approbation, ce qui réduit la nécessité d'accorder des privilèges rds_superuser aux utilisateurs réguliers. Cette fonction permet aux utilisateurs d'installer de nombreuses extensions s'ils disposent du privilège CREATE sur la base de données actuelle, sans exiger le rôle rds_superuser. Pour plus d'informations, consultez la commande SQL CREATE EXTENSION (CRÉER UNE EXTENSION) dans la documentation PostgreSQL.

La liste suivante répertorie les extensions qui peuvent être installées par un utilisateur qui possède le privilège CREATE sur la base de données actuelle, sans exiger le rôle rds_superuser :

Utilisation des fonctions PostgreSQL prises en charge par Amazon RDS for PostgreSQL

Amazon RDS for PostgreSQL prend en charge un grand nombre des fonctions les plus courantes de PostgreSQL et de nombreuses fonctionnalités communes. Par exemple, PostgreSQL dispose d'une fonction d'autovacuum qui effectue une maintenance de routine sur la base de données. Cette fonction est activée par défaut. Bien que vous puissiez désactiver cette fonction, nous vous recommandons vivement de la conserver active. Comprendre cette fonction et ce que vous pouvez faire pour vous assurer qu'elle fonctionne comme il se doit est une tâche de base de tout DBA. Pour de plus amples informations sur l'autovacuum, veuillez consulter Utilisation de la fonction autovacuum de PostgreSQL sur Amazon RDS for PostgreSQL. Pour en savoir plus sur les autres tâches DBA courantes, Tâches courantes d'administration de bases de données pour Amazon RDS for PostgreSQL.

RDS for PostgreSQL prend également en charge les extensions qui ajoutent des fonctionnalités importantes à l'instance de base de données. Par exemple, vous pouvez utiliser l'extension PostGIS pour travailler avec des données spatiales ou utiliser l'extension pg_cron pour planifier la maintenance depuis l'instance elle-même. Pour plus d'informations sur les extensions PostgreSQL, veuillez consulter Utilisation des extensions PostgreSQL avec Amazon RDS for PostgreSQL.

Les wrappers de données externes sont un type d'extension spécifique conçu pour permettre à votre instance de base de données RDS for PostgreSQL de fonctionner avec d'autres bases de données commerciales ou types de données. Pour de plus amples informations sur les wrappers de données externes prises en charge par RDS for PostgreSQL, veuillez consulter Utilisation des encapsuleurs de données externes pris en charge pour Amazon RDS for PostgreSQL.

Ci-dessous, vous trouverez des informations sur certaines fonctionnalités de PostgreSQL prises en charge par RDS for PostgreSQL.

Types de données et énumérations personnalisés avec RDS for PostgreSQL

PostgreSQL prend en charge la création de types de données personnalisés et l'utilisation d'énumérations. Pour de plus amples informations sur la création et l'utilisation d'énumérations et d'autres types de données, veuillez consulter Types énumérés dans la documentation PostgreSQL.

Voici un exemple de création d'un type en tant qu'énumération, puis d'insertion de valeurs dans une table.

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)

Déclencheurs d'évènements pour RDS for PostgreSQL

Toutes les versions actuelles de PostgreSQL prennent en charge les déclencheurs d'événements, tout comme toutes les versions disponibles de RDS for PostgreSQL. Vous pouvez utiliser le compte d'utilisateur principal (par défaut, postgres) pour créer, modifier, renommer et supprimer des déclencheurs d'évènements. Les déclencheurs d'évènements sont au niveau de l'instance de base de données, de sorte qu'ils peuvent s'appliquer à toutes les bases de données sur une instance.

Par exemple, le code suivant crée un déclencheur d'évènement qui imprime l'utilisateur actuel à la fin de chaque commande 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();

Pour plus d'informations sur les déclencheurs d'évènements PostgreSQL, consultez Déclencheurs d'évènements dans la documentation de PostgreSQL.

Il existe plusieurs restrictions quant à l'utilisation de déclencheurs d'évènements PostgreSQL sur Amazon RDS. Tel est le cas des éléments suivants :

  • Vous ne pouvez pas créer de déclencheurs d'évènements sur les réplicas en lecture. En revanche, vous pouvez créer de déclencheurs d'évènements sur une source de réplica en lecture. Les déclencheurs d'évènements sont ensuite copiés sur le réplica en lecture. Les déclencheurs d'évènements sur le réplica en lecture ne s'activent pas sur le réplica en lecture lorsque les modifications sont poussées depuis la source. En revanche, si le réplica en lecture est promu, les déclencheurs d'évènements existants s'activent lorsque des opérations de base de données ont lieu.

  • Pour effectuer une mise à niveau de version majeure vers une instance de base de données PostgreSQL qui utilise des déclencheurs d'évènements, vous devez supprimer les déclencheurs d'évènements avant de procéder à la mise à niveau de l'instance.

Grandes pages pour RDS for PostgreSQL

Les Huge pages (Grandes pages) sont une fonction de gestion de la mémoire qui réduit la surcharge lorsqu'une instance de base de données fonctionne avec de gros morceaux de mémoire contigus, tels que ceux utilisés par les tampons partagés. Cette fonction PostgreSQL est prise en charge par toutes les versions actuellement disponibles de RDS for PostgreSQL. Vous allouez de grandes pages pour votre application en utilisant des appels à la mémoire partagée mmap ou SYSV. RDS for PostgreSQL prend en charge les tailles de pages de 4 Ko et de 2 Mo.

Vous pouvez activer ou désactiver les Grandes pages en modifiant la valeur du paramètre huge_pages. La fonction est activée par défaut pour toutes les classes d'instances de base de données autres que les classes micro, petites et medium.

Note

Les grandes pages ne sont pas prises en charge pour les classes d'instance de base de données db.m1, db.m2 et db.m3.

RDS for PostgreSQL utilise les grandes pages en fonction de la mémoire partagée disponible. Si l'instance de base de données ne peut pas utiliser les grandes pages en raison des contraintes de mémoire partagée, Amazon RDS empêche le démarrage de l'instance de base de données. Dans ce cas, Amazon RDS affecte au statut de l'instance de base de données un état indiquant l'incompatibilité des paramètres. Dans ce cas, vous pouvez affecter la valeur « huge_pages » au paramètre off pour autoriser Amazon RDS à démarrer l'instance de bases de données.

Le paramètre shared_buffers est essentiel pour définir le pool de mémoire partagée requis pour utiliser les grandes pages. La valeur par défaut du paramètre shared_buffers utilise une macro de paramètres de base de données. Cette macro définit un pourcentage du total des 8 Ko pages disponibles pour la mémoire de l'instance de base de données. Lorsque vous utilisez des grandes pages, celles-ci se trouvent avec les grandes pages. Amazon RDS affecte à une instance de base de données dans un état indiquant l'incompatibilité des paramètres si les paramètres de mémoire partagée définis requièrent plus de 90 % de la mémoire de l'instance de base de données.

Pour en savoir plus sur la gestion de la mémoire PostgreSQL, veuillez consulter Resource Consumption dans la documentation PostgreSQL.

Réplication logique pour Amazon RDS for PostgreSQL

Dès la version 10.4, Amazon RDS for PostgreSQL prend en charge la syntaxe SQL de publication et d'abonnement qui a été introduite pour la première fois dans PostgreSQL 10. Pour en savoir plus, veuillez consulter Réplication logique dans la documentation PostgreSQL.

Ci-dessous, vous trouverez des informations sur la configuration de la réplication logique pour une instance de base de données RDS for PostgreSQL.

Compréhension de la réplication logique et du décodage logique

RDS for PostgreSQL prend en charge le streaming des modifications WAL (write-ahead log) à l'aide d'emplacements de réplication logique PostgreSQL. Il prend également en charge l'utilisation du décodage logique. Vous pouvez configurer des emplacements logiques de réplication sur votre instance et diffuser les modifications de base de données à travers ces emplacements pour un client comme pg_recvlogical. Les emplacements logiques de réplication sont créés au niveau de la base de données et prennent en charge les connexions de réplication avec une base de données unique.

Les clients plus courants pour la réplication logique PostgreSQL sont AWS Database Migration Service ou un hôte géré de manière personnalisée sur une instance Amazon EC2. L'emplacement de réplication logique ne contient aucune information sur le récepteur du flux. De plus, il n'est pas nécessaire que la cible soit une base de données de réplica. Si vous configurez un emplacement de réplication logique et que vous ne lisez pas à partir de l'emplacement, les données peuvent être écrites dans le stockage de votre instance de base de données et le remplir rapidement.

La réplication logique et le décodage logique PostgreSQL sur Amazon RDS sont activés avec un paramètre, un type de connexion de réplication et un rôle de sécurité. Le client pour le décodage logique peut être n'importe quel client capable d'établir une connexion de réplication avec une base de données sur une instance de base de données PostgreSQL.

Pour activer le décodage logique pour une instance de base de données RDS for PostgreSQL

  1. Assurez-vous que le compte utilisateur que vous utilisez possède les rôles suivants :

    • Le rôle rds_superuser de manière à ce que vous puissiez activer la réplication logique

    • Le rôle rds_replication pour accorder les autorisations de gérer des emplacements logiques et de diffuser les données à l'aide d'emplacements logiques

  2. Définissez le paramètre statique rds.logical_replication sur 1. Dans le cadre de l'application de ce paramètre, configurez également les paramètres wal_level, max_wal_senders, max_replication_slots et max_connections. Ces modifications de paramètres peuvent accroître la génération WAL de sorte que vous ne devez définir le paramètre rds.logical_replication que lorsque vous utilisez des emplacements logiques.

  3. Redémarrez l'instance de base de données pour que le paramètre statique rds.logical_replication prenne effet.

  4. Créez un emplacement de réplication logique comme expliqué dans la section suivante. Cela nécessite que vous précisiez un plugin de décodage. Actuellement, RDS for PostgreSQL prend en charge les plugins de sortie test_decoding et wal2json fournis avec PostgreSQL.

Pour plus d'informations sur le décodage logique PostgreSQL, consultez la documentation PostgreSQL.

Utilisation des emplacements de réplication logique

Vous pouvez utiliser les commandes SQL pour utiliser les emplacements logiques. Par exemple, la commande suivante crée un emplacement logique nommé test_slot à l'aide du plugin de sortie PostgreSQL par défaut test_decoding.

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

Pour lister les emplacements logiques, utilisez la commande suivante.

SELECT * FROM pg_replication_slots;

Pour supprimer un emplacement logique, utilisez la commande suivante.

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

Pour plus d'exemples sur l'utilisation des emplacements de réplication logique, consultez Exemples de décodage logique dans la documentation PostgreSQL.

Après avoir créé l'emplacement de réplication logique, vous pouvez commencer le streaming. L'exemple suivant montre comment le décodage logique est contrôlé par le protocole de streaming. Celui-ci utilise le programme pg_recvlogical, qui est inclus dans la distribution PostgreSQL. Cela nécessite que l'authentification du client soit configurée pour autoriser les connexions de réplication.

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

Pour afficher le contenu de la vue pg_replication_origin_status, interrogez la fonction pg_show_replication_origin_status.

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

Disque RAM pour le stats_temp_directory

Vous pouvez utiliser le paramètre RDS for PostgreSQL rds.pg_stat_ramdisk_size pour spécifier la mémoire système allouée à un disque RAM afin de stocker le code PostgreSQL stats_temp_directory. Le paramètre de disque RAM est disponible pour toutes les versions de PostgreSQL sur Amazon RDS.

Avec certaines charges de travail, ce paramètre peut améliorer les performances et réduire les exigences relatives aux I/O. Pour plus d'informations sur le paramètre stats_temp_directory, veuillez consulter la documentation sur PostgreSQL.

Pour activer un disque RAM pour votre stats_temp_directory, définissez le paramètre rds.pg_stat_ramdisk_size sur une valeur littérale entière dans le groupe de paramètres utilisé par votre instance de base de données. Ce paramètre est indiqué en Mo, vous devez donc utiliser une valeur entière. Les expressions, formules et fonctions ne sont pas valides pour le paramètre rds.pg_stat_ramdisk_size. Veillez à réinitialiser l'instance de base de données pour que la modification prenne effet. Pour plus d'informations sur la définition des paramètres, consultez Utilisation des groupes de paramètres.

Par exemple, la commande d'AWS CLI suivante définit le paramètre de disque RAM à 256 Mo.

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"

Après le redémarrage, exécutez la commande suivante pour afficher le statut de stats_temp_directory.

postgres=> SHOW stats_temp_directory;

La commande devrait renvoyer le résultat suivant.

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

Espaces de table pour RDS for PostgreSQL

RDS for PostgreSQL prend en charge les espaces de table à des fins de compatibilité. Étant donné que tout le stockage se trouve sur un seul volume logique, vous ne pouvez pas utiliser d'espaces de table pour le fractionnement ou l'isolement des I/O. Nos évaluations et notre expérience indiquent qu'un seul volume logique constitue la meilleure configuration dans la plupart des cas d'utilisation.

Pour créer et utiliser des espaces de table avec votre instance de base de données RDS for PostgreSQL, vous avez besoin du rôle rds_superuser. Le compte utilisateur principal de votre instance de base de données RDS for PostgreSQL (par défaut, postgres) est membre de ce rôle. Pour plus d'informations, consultez Comprendre les rôles et les autorisations PostgreSQL.

Si vous spécifiez un nom de fichier lors de la création d'un espace de table, le préfixe du chemin est /rdsdbdata/db/base/tablespace. L'exemple suivant montre comment placer les fichiers d'espace de table dans /rdsdbdata/db/base/tablespace/data. Cet exemple suppose qu'un utilisateur dbadmin (rôle) existe et qu'il se soit vu accorder le rôle rds_superuser nécessaire à l'utilisateur des espaces de table.

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

Pour en savoir plus sur les espaces de table PostgreSQL, veuillez consulter Tablespaces dans la documentation PostgreSQL.