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 :
- AWS Oracle RDS Read Replicas : un Active Dataguard en mode PaaS ? (Emmanuel RAMI) [AWSNon classéOracle]
- La gestion des connexions RDP sur une EC2 Amazon (Emmanuel RAMI) [AWS]
- AWS : Backup Restore SQL Server RDS vers une EC2 ou On-Premise et vice versa ! (Emmanuel RAMI) [AWSSQL Server]
- Comparatif MySQL dans le PaaS, épisode 3 : Amazon RDS (2/2) (David Baffaleuf) [AWSMySQL]
- Comparatif MySQL dans le PaaS, épisode 3 : Amazon RDS (1/2) (David Baffaleuf) [AWSMySQL]