0

AWS RDS : les extensions PostgreSQL

twitterlinkedinmail

    Les extensions sont ces petits “programmes” qui permettent à PostgreSQL d’acquérir de nouvelles fonctionnalités plus poussés via des procédures ou scripts SQL directement chargés et exécutés en base.

Voici un nouvel article qui décrit les étapes nécessaires à la mise en place d’une extension PostgreSQL pour une instance gérée dans Amazon RDS pour PostgreSQL.
Nous prendrons pour exemple l’extension « pg_stat_statements » qui est une extension utilisée pour enregistrer les statistiques sur les différentes requêtes passées en base.

Cette extension est essentielle pour effectuer des études de performances au sein d’une instance.

Nous partirons sur cette extension qui est présente dans les « contribs » par défaut sur PostgreSQL, et, qu’Amazon a intégré à sa solution AWS RDS. Les étapes système de compilations et d’intégration  prérequis sont donc entièrement gérées par AWS.

 

Création de l’extension dans PostgreSQL

On s’assure d’avoir créé une base PostgreSQL sous AWS RDS. Nous pouvons prendre une version 11 pour le moteur PostgreSQL. Le nom de notre instance est « PGcapdata».

A l’aide d’un client PostgreSQL , comme PgAdmin4, nous irons effectuer les opérations suivantes.

Lister les extensions disponibles par défaut sous Amazon RDS.

Il est sera préférable d’effectuer un filtrage sur le nom de l’extension avec  ‘pg_%’.

Voyons si notre extension ‘pg_stat_statements’ est disponible sous Amazon RDS.

 

Nous pouvons, d’ores et déjà, créer l’extension

On vérifie sa prise en compte

 

La nouvelle extension est donc bien créée sous le schéma public de notre base Postgres :

On ira vérifier les valeurs configurées pour l’extension

Ces valeurs liées à l’extension, sont celles par défaut définis par Amazon.
Nous souhaitons, par la suite, changer ces dernières.

Modification des paramètres

S’il l’on souhaite modifier les paramètres de notre instance PostgreSQL, il sera nécessaire de créer un nouveau « parameter group ». Puis effectuer la modification dans ce « parameter group ».

Création du parameter group

On peut utiliser la console AWS pour créer ce nouveau parameter group.
Dans Amazon RDS, repérer l’onglet «  » puis cliquer sur « Create parameter group ».

Puis donner les informations relatives à votre nouveau parameter group. On l’appellera « ParamGrouPostgreSQL11PGSTAT »

 

Celui-ci est présent dans la liste des parameter groups.

 

awscli

On peut également utiliser ‘awscli’ pour créer ce nouveau groupe :

 

aws rds create-db-parameter-group \
  --db-parameter-group-name ParamGrouPostgreSQL11PGSTAT \
  --db-parameter-group-family postgres11 \
  --description "parameter group PostgreSQL with pg_stat_statements"\
  --region eu-west-3

Une fois créé, il s’agirait d’aller effectuer les modifications nécessaires pour les paramètres de l’instance PostgreSQL, et surtout, pour notre nouvelle extension « pg_stat_statement ».
Voici les paramètres que l’on souhaite appliquer pour cette extension :

pg_stat_statements.max            = 4000
pg_stat_statements.track          = all
pg_stat_statements.track_utility  = on
pg_stat_statements.save           = on
track_activity_query_size         = 4096

 

Choisir notre nouveau parameter group et éditer les valeurs qui seront à modifier, on s’aperçoit dans le champs Values que tout est vide.

Cliquer sur “Edit parameters” et donner les valeurs comme mentionnées au dessus. Ce qui donnera l’affichage suivant:

 

awscli

La commande ‘awscli’ relative à la modification du parameter group est la suivante :

 

aws rds modify-db-parameter-group \
    --db-parameter-group-name ParamGrouPostgreSQL11PGSTAT \
    --parameters
 "ParameterName=pg_stat_statements.max,ParameterValue=4000,ApplyMethod=pending-reboot"              
 "ParameterName=pg_stat_statements.track,ParameterValue=ALL,ApplyMethod=immediate" \                 
 "ParameterName=pg_stat_statements.track_utility,ParameterValue=1,ApplyMethod=immediate" \            
 "ParameterName=pg_stat_statements.save,ParameterValue=1,ApplyMethod=immediate" \
   --region eu-west-3

 

Attention, le paramètre « pg_stat_statements.max » est statique. Il ne sera pris en compte qu’après affectation à une instance et reboot de celle-ci.

Paramétrage instance PostgreSQL

 

La suite consistera à attribuer notre nouveau parameter group à notre instance PostgreSQL.
Dans la liste des instances de bases de données, choisir la base PostgreSQL que l’on souhaite modifier, puis cliquer sur  

 

Les options à modifier se situent dans « Database options ».
Prendre le nouveau parameter group

 

Puis appliquer les changements en cliquant sur 

Si cette instance n’est pas en production, on pourra appliquer immédiatement les modifications.

 

 

Un reboot de l’instance est nécessaire pour prendre en compte ces opérations :

 

Après reboot, on retournera sur PgAdmin4 vérifier nos paramètres :

 

awscli

La commande awscli pour effectuer ce changement est la suivante :

 

   aws rds modify-db-instance --db-instance-identifier PGcapdata \
      --db-parameter-group-name ParamGrouPostgreSQL11PGSTAT \
      --apply-immediately --region eu-west-3

Puis redémarrer l’instance PostgreSQL

 

   aws rds reboot-db-instance --db-instance-identifier PGcapdata


La prise en compte de cette nouvelle extension est donc actée.

N’hésitez pas à laisser vos remarques !

 

Emmanuel RAMI

Continuez votre lecture sur le blog :

twitterlinkedinmail

Emmanuel RAMI

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.