Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit des considérations spéciales relatives à l’utilisation de certaines extensions ou modules dans Azure Database pour PostgreSQL serveur flexible.
Considérations génériques relatives aux extensions
Pour utiliser une extension dans Azure Database pour PostgreSQL serveur flexible, vous devez :
-
Autoriser l’extension. Si vous n’autorisez pas l’extension, toute tentative d’exécution
CREATE EXTENSION,ALTER EXTENSIONouDROP EXTENSIONCOMMENT ON EXTENSIONéchec avec une erreur indiquant que l’extension référencée n’est pas autorisée. - Si l’extension déploie une bibliothèque binaire partagée qui nécessite l’allocation et l’accès à la mémoire partagée et doit être chargée au démarrage du serveur, suivez les instructions fournies dans les bibliothèques de chargement.
- Créez une extension dans les bases de données où vous souhaitez que l’extension déploie les objets SQL distribués avec cette extension.
- Supprimer l’extension. Lorsque vous souhaitez supprimer de la base de données tous les objets SQL distribués par cette extension.
- Mettez à jour les extensions pour mettre à jour vers sa dernière version tous les artefacts SQL déployés par une extension déjà installée.
- Voir les extensions installées et leurs versions correspondantes.
Si vous obtenez une erreur lors de l’exécution des commandes CREATE EXTENSION, ALTER EXTENSION, DROP EXTENSION ou COMMENT ON EXTENSION sur votre serveur flexible Azure Database pour PostgreSQL, consultez la liste des erreurs possibles ainsi que leur cause possible.
Considérations génériques relatives aux modules
Pour utiliser un module dans le serveur flexible Azure Database pour PostgreSQL, ajoutez-le au paramètre shared_preload_libraries comme décrit dans charger des bibliothèques.
Les modules n’ont pas besoin d’être autorisés. C’est une exigence exclusivement pour les extensions.
Extensions avec des considérations spécifiques
La liste suivante énumère toutes les extensions prises en charge qui nécessitent des considérations spécifiques lorsqu’elles sont utilisées dans Azure Database pour PostgreSQL serveur flexible :
AGEdblinkpg_buffercachepg_cronpg_hint_planpg_repackpg_stat_statementspgcryptopostgres_fdwpgstattupletimescaledb
AGE
L’extension Apache AGE est une extension de graphe pour PostgreSQL prise en charge par Azure Database pour PostgreSQL. Il fournit des fonctionnalités de base de données de graphe, une prise en charge des requêtes de cypher ouverte et la possibilité d’exécuter des requêtes complexes sur les données de graphe stockées dans PostgreSQL. Apache AGE est un projet open source publié sous la licence Apache 2.0.
Installer AGE
Pour utiliser AGE, vérifiez que vous autorisez l’extension, chargez sa bibliothèque et installez l’extension dans la base de données où vous envisagez d’utiliser ses fonctionnalités.
dblink
L’extension dblink vous permet de vous connecter d’un serveur flexible Azure Database pour PostgreSQL à une autre ou à une autre base de données sur le même serveur. Azure Database pour PostgreSQL prend en charge les connexions entrantes et sortantes à n’importe quel serveur PostgreSQL. Le serveur d’envoi doit autoriser les connexions sortantes vers le serveur de réception. De même, le serveur de réception doit autoriser les connexions à partir du serveur d’envoi.
Si vous envisagez d’utiliser cette extension, déployez vos serveurs avec l’intégration de réseau virtuel. Par défaut, l’intégration du réseau virtuel autorise des connexions entre les serveurs du réseau virtuel. Vous pouvez également choisir d’utiliser des groupes de sécurité réseau pour personnaliser l’accès.
pg_buffercache
Utilisez l’extension pg_buffercache pour examiner le contenu de shared_buffers. À l’aide de cette extension, vous pouvez déterminer si une relation spécifique est mise en cache dans shared_buffers. Cette extension peut vous aider à résoudre les problèmes de performances liés à la mise en cache.
Cette extension fait partie de l’installation principale de PostgreSQL, et il est facile d’installer.
CREATE EXTENSION pg_buffercache;
pg_cron
L’extension pg_cron est un planificateur de travaux simple basé sur Cron pour PostgreSQL qui s’exécute dans la base de données en tant qu’extension. L’extension pg_cron peut exécuter des tâches de maintenance planifiées dans une base de données PostgreSQL. Par exemple, vous pouvez exécuter un vide périodique d’une table ou supprimer d’anciens travaux de données.
L’extension pg_cron peut exécuter plusieurs travaux en parallèle, mais elle exécute au plus une instance d’un travail à la fois. Si une deuxième exécution est censée démarrer avant la fin de la première, la deuxième exécution est mise en file d’attente et démarrée dès que la première exécution est terminée. Ainsi, les travaux s’exécutent précisément autant de fois que prévu et ne s’exécutent pas en concurrence avec eux-mêmes.
Vérifiez que la valeur définie pour shared_preload_libraries inclut pg_cron. Cette extension ne prend pas en charge le chargement de la bibliothèque comme effet de l’exécution de CREATE EXTENSION. Toute tentative d’exécution de CREATE EXTENSION si l’extension n’a pas été ajoutée à shared_preload_libraries, ou si le serveur n’a pas été redémarré après son ajout, génère une erreur dont le texte indique pg_cron can only be loaded via shared_preload_libraries et dont l’indicateur est Add pg_cron to the shared_preload_libraries configuration variable in postgresql.conf.
Pour utiliser pg_cron, veillez à charger sa bibliothèque partagée lors du démarrage du serveur, qu’il figure dans la liste d’autorisation et qu’il est installé dans les bases de données à partir desquelles vous voulez interagir avec ses fonctionnalités, en utilisant les artefacts SQL qu’il crée.
Examples
Pour supprimer d’anciennes données le samedi à 3h30 (GMT).
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);Pour exécuter le vide tous les jours à 10h00 (GMT) dans la base de données par défaut
postgres.SELECT cron.schedule('0 10 * * *', 'VACUUM');Pour annuler la planification de toutes les tâches de
pg_cron.SELECT cron.unschedule(jobid) FROM cron.job;Pour afficher tous les travaux actuellement planifiés avec
pg_cron.SELECT * FROM cron.job;Pour exécuter le vide tous les jours à 10h00 (GMT) dans la
testcronbase de données.SELECT cron.schedule_in_database('VACUUM','0 10 * * *', 'VACUUM', 'testcron', null, TRUE);
Autres exemples
À partir de pg_cron version 1.4, vous pouvez utiliser les fonctions cron.schedule_in_database et cron.alter_job pour planifier votre travail dans une base de données spécifique et mettre à jour une planification existante, respectivement.
La fonction cron_schedule_in_database autorise le nom d’utilisateur comme paramètre facultatif. La définition du nom d'utilisateur sur une valeur non null nécessite le privilège superutilisateur PostgreSQL et n'est pas prise en charge dans Azure Database pour PostgreSQL serveur flexible. Les exemples précédents montrent l’exécution de cette fonction avec un paramètre nom d’utilisateur facultatif omis ou défini sur nul, qui exécute le travail dans le contexte de la planification du travail par l’utilisateur, lequel doit avoir les privilèges du rôle azure_pg_admin.
Pour supprimer d’anciennes données le samedi à 3h30 (GMT) sur la base de données DBName.
SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');Pour mettre à jour ou modifier le nom de la base de données pour la planification existante
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_hint_plan
L’extension pg_hint_plan vous permet de modifier les plans d’exécution PostgreSQL à l’aide de « conseils » dans les commentaires SQL, tels que :
/*+ SeqScan(a) */
L’extension pg_hint_plan lit les expressions de conseil dans un commentaire de la forme spéciale donnée avec l’instruction SQL cible. Le formulaire particulier commence par la séquence /*+ de caractères et se termine par */. Les phrases de conseil se composent du nom du conseil et des paramètres suivants entre parenthèses et délimités par des espaces. De nouvelles lignes peuvent délimiter chaque expression d’indicateur, pour plus de lisibilité.
Example:
/*+
HashJoin(a b)
SeqScan(a)
*/
SELECT *
FROM pgbench_branches b
JOIN pgbench_accounts a ON b.bid = a.bid
ORDER BY a.aid;
L’exemple précédent amène le planificateur à utiliser les résultats d’une seqscan sur la table a pour les combiner avec la table b en tant que hashjoin.
Pour utiliser l’extension pg_hint_plan , assurez-vous que vous autorisez l’extension, chargez sa bibliothèque et installez l’extension dans la base de données où vous prévoyez d’utiliser ses fonctionnalités.
pg_repack
Les nouveaux utilisateurs de l’extension pg_repack posent généralement la question suivante : pg_repack est-il une extension ou un exécutable côté client comme psql ou pg_dump ?
pg_repack est en fait les deux à la fois.
pg_repack/lib a le code de l’extension, y compris le schéma et les artefacts SQL qu’il crée, et la bibliothèque C implémentant le code de plusieurs de ces fonctions.
En revanche, pg_repack/bin a le code de l’application cliente, qui sait comment interagir avec les éléments de programmabilité implémentés dans l’extension. Cette application cliente vise à simplifier la complexité de l’interaction avec les différentes interfaces exposées par l’extension côté serveur. Il offre à l’utilisateur des options de ligne de commande plus faciles à comprendre. L’application cliente est inutile sans l’extension créée sur la base de données vers laquelle il pointe. L’extension côté serveur est entièrement fonctionnelle, mais elle oblige l’utilisateur à comprendre un modèle d’interaction complexe. Ce modèle consiste à exécuter des requêtes pour récupérer des données utilisées comme entrée pour les fonctions implémentées par l’extension, et ainsi de suite.
Autorisation refusée pour le schéma repack
Actuellement, étant donné que l’extension accorde des autorisations au schéma repack, vous ne pouvez prendre en charge que l’exécution de la fonctionnalité pg_repack depuis le contexte de azure_pg_admin.
Vous remarquerez peut-être que si le propriétaire d’une table, qui n’est pas azure_pg_admin, tente d’exécuter pg_repack, ils reçoivent l’erreur suivante :
NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR: permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()
Pour éviter cette erreur, exécutez pg_repack à partir du contexte de azure_pg_admin.
pg_stat_statements
L’extension pg_stat_statements vous donne une vue de toutes les requêtes qui s’exécutent sur votre base de données. Ces informations sont utiles pour comprendre les performances de votre charge de travail de requêtes sur un système de production.
L’extension pg_stat_statements est préchargée shared_preload_libraries sur chaque serveur flexible Azure Database pour PostgreSQL pour fournir un moyen de suivre les statistiques d’exécution des instructions SQL.
Pour des raisons de sécurité, vous devez autoriserl’extension pg_stat_statements et l’installer à l’aide de la commande CREATE EXTENSION .
Le paramètre pg_stat_statements.track, qui contrôle quelles instructions sont suivies par l’extension, a la valeur par défaut top, ce qui signifie que toutes les instructions exécutées directement par les clients sont suivies. Les deux autres niveaux de suivi sont none et all. Vous pouvez configurer ce paramètre en tant que paramètre.
Il existe un compromis entre les informations d’exécution de requête que l’extension pg_stat_statements fournit et les performances du serveur, car elle journalise chaque instruction SQL. Si vous n’utilisez pas activement l’extension pg_stat_statements, définissez pg_stat_statements.track sur none. Certains services de surveillance de tiers peuvent s’appuyer sur pg_stat_statements pour fournir des insights sur les performances des requêtes : vérifiez donc si c’est le cas pour vous.
pgcrypto
Azure Database pour PostgreSQL prend en charge le chiffrement au niveau de l’application au niveau des colonnes via l’extension pgcrypto PostgreSQL. L’extension pgcrypto permet aux applications d’appeler explicitement des fonctions de chiffrement dans les instructions SQL PostgreSQL pour chiffrer ou hacher des valeurs de colonne à l’aide d’algorithmes de chiffrement fournis par la bibliothèque OpenSSL sous-jacente.
À compter de Azure Linux 3.0, le système d'exploitation utilise OpenSSL 3.0, qui déplace plusieurs algorithmes de chiffrement plus anciens et plus faibles et des API de bas niveau dans un fournisseur hérité distinct qui n'est pas chargé par défaut. Ce changement encourage l’utilisation d’algorithmes de chiffrement modernes et plus sécurisés et des API OpenSSL EVP (Enveloppe) de haut niveau.
Par conséquent, les algorithmes de chiffrement qui classifie OpenSSL 3.0 comme hérités ne sont pas disponibles par défaut pour une utilisation par pgcrypto sur Azure Database pour PostgreSQL serveurs exécutant Azure Linux 3.0.
Algorithmes de chiffrement déconseillés
Les algorithmes de chiffrement hérités suivants se trouvent dans le fournisseur hérité OpenSSL 3.0 et ne sont pas disponibles par défaut sur les serveurs Azure Database pour PostgreSQL exécutant Azure Linux 3.0. Les versions de plateforme antérieures ont peut-être autorisé pgcrypto à utiliser ces algorithmes, mais Azure Linux 3.0 ne les prend plus en charge.
Algorithmes de chiffrement symétrique (chiffrements) :
- Soufflé (BF-CBC)
- CAST
- DES (DES simple ; pas 3DES)
- IDÉE
- RC2
- RC4
- RC5
- SEED
Algorithmes de synthèse et de hachage des messages :
- MD2
- MD4
- MDC2
- RIPEMD-160
- SHA-1 (déconseillé pour les signatures numériques, mais peut toujours être autorisé pour des scénarios HMAC spécifiques en fonction de la configuration)
- Whirlpool
Azure Database pour PostgreSQL mises à niveau vers Azure Linux 3.0 font partie des améliorations continues de la plateforme. Les applications qui s’appuient sur pgcrypto doivent s’assurer qu’elles utilisent des algorithmes de chiffrement modernes et pris en charge lors de l’exécution d’un chiffrement au niveau de l’application, au niveau de la colonne.
postgres_fdw
L’extension postgres_fdw vous permet de vous connecter d’un serveur flexible Azure Database pour PostgreSQL à un autre serveur ou à une autre base de données sur le même serveur. Azure Database pour PostgreSQL prend en charge les connexions entrantes et sortantes à n’importe quel serveur PostgreSQL. Le serveur d’envoi doit autoriser les connexions sortantes vers le serveur de réception. De même, le serveur de réception doit autoriser les connexions à partir du serveur d’envoi.
Si vous envisagez d’utiliser cette extension, déployez vos serveurs avec l’intégration de réseau virtuel. Par défaut, l’intégration du réseau virtuel autorise des connexions entre les serveurs du réseau virtuel. Vous pouvez également choisir d’utiliser des groupes de sécurité réseau pour personnaliser l’accès.
pgstattuple
Lorsque vous utilisez l’extension pgstattuple pour essayer d’obtenir des statistiques tuple à partir d’objets conservés dans le pg_toast schéma dans les versions 11 à 13 de PostgreSQL, vous recevez une erreur « autorisation refusée pour le pg_toast de schéma ».
Autorisation refusée pour le schéma pg_toast
Les clients utilisant les versions 11 à 13 de PostgreSQL sur Azure Database pour PostgreSQL - Serveur flexible ne peuvent pas utiliser l’extension pgstattuple sur les objets dans le schéma pg_toast.
Dans PostgreSQL 16 et 17, le pg_read_all_data rôle est automatiquement accordé, azure_pg_admince qui permet pgstattuple de fonctionner correctement. Dans PostgreSQL 14 et 15, les clients peuvent accorder manuellement le rôle pg_read_all_data à azure_pg_admin pour obtenir le même résultat. Toutefois, dans PostgreSQL 11 à 13, le rôle pg_read_all_data n’existe pas.
Les clients ne peuvent pas octroyer directement les autorisations nécessaires. Si vous devez exécuter pgstattuple pour accéder aux objets sous le pg_toast schéma, procédez à la création d’une demande de support Azure.
timescaledb
L’extension timescaledb est une base de données de série chronologique emballée en tant qu’extension de PostgreSQL. Il fournit des fonctions analytiques orientées vers le temps et des optimisations, et met à l’échelle PostgreSQL pour les charges de travail basées sur des séries temporelles.
En savoir plus sur TimescaleDB, une marque déposée de Timescale, Inc. Azure Database pour PostgreSQL fournit l’édition Apache-2 timescaleDB.
Installer TimescaleDB
Pour utiliser timescaledb, assurez-vous que vous autorisez l’extension, chargez sa bibliothèque et installez l’extension dans la base de données sur laquelle vous envisagez d’utiliser ses fonctionnalités.
Vous pouvez maintenant créer une hypertable TimescaleDB à partir de zéro ou migrer des données de série chronologique existantes dans PostgreSQL.
Pour plus d’informations sur la restauration d’une base de données Timescale à l’aide pg_dump et pg_restore, consultez la documentation timescale.
Restaurer une base de données d’échelle de données à l’aide de timescaledb-backup
Lors de l’exécution de la SELECT timescaledb_post_restore() procédure, vous pouvez obtenir des autorisations refusées lors de la mise à jour de l’indicateur timescaledb.restoring . Cette erreur se produit en raison de l’autorisation limitée ALTER DATABASE dans les services de base de données PaaS cloud. Dans ce cas, vous pouvez utiliser une autre méthode à l’aide de l’outil timescaledb-backup pour sauvegarder et restaurer la base de données Timescale. Timescaledb-backup est un programme qui simplifie le vidage et la restauration d’une base de données TimescaleDB, moins susceptible d’engendrer des erreurs et plus performant.
Pour ce faire, procédez comme suit :
Installez les outils comme décrit dans l’installation de timescaledb-backup.
Créer un serveur flexible Azure Database pour PostgreSQL et une base de données cibles.
Activer l’extension Timescale.
Accordez le
azure_pg_adminrôle à l’utilisateur utilisé par ts-restore.Exécutez ts-restore pour restaurer la base de données.
Pour plus d’informations sur ces utilitaires, consultez timescaledb-backup.
Extensions et mise à niveau d’une version majeure
Azure Database pour PostgreSQL offre une fonctionnalité de mise à niveau de version majeure sur place qui effectue une mise à niveau sur place du serveur flexible Azure Database pour PostgreSQL, avec simplement une interaction simple de l’utilisateur. La mise à niveau majeure de version sur place simplifie le processus de mise à niveau d’Azure Database pour PostgreSQL, ce qui réduit la perturbation des utilisateurs et des applications accédant au serveur. Les mises à niveau d’une version majeure sur place ne prennent pas en charge les extensions spécifiques et il existe certaines limites à la mise à niveau de certaines extensions.
Les extensions anon, Apache AGEdblinkorafcepostgres_fdw, et timescaledb ne sont pas prises en charge pour toutes les versions de serveur flexible Azure Database pour PostgreSQL lors de l'utilisation de la fonctionnalité de mise à jour de version principale sur place.
Modules avec des considérations spécifiques
La liste suivante énumère tous les modules pris en charge qui nécessitent des considérations spécifiques lorsqu’ils sont utilisés dans un serveur flexible Azure Database pour PostgreSQL :
pg_failover_slots
pg_failover_slots
Le pg_failover_slots module améliore Azure Database pour PostgreSQL lors de l’utilisation de la réplication logique et des serveurs à haute disponibilité. Elle résout efficacement le défi au sein du moteur PostgreSQL standard qui ne conserve pas les emplacements de réplication logique après un basculement. La maintenance de ces emplacements est essentielle pour empêcher les interruptions de réplication ou les incompatibilités de données pendant les modifications de rôle serveur principal, ce qui garantit la continuité opérationnelle et l’intégrité des données.
L’extension simplifie le processus de basculement en gérant le transfert, le nettoyage et la synchronisation nécessaires des emplacements de réplication, ce qui offre une transition transparente pendant les modifications de rôle serveur.
Vous trouverez plus d’informations et d’instructions sur l’utilisation du pg_failover_slots module sur sa page GitHub.
Pour utiliser le pg_failover_slots module, assurez-vous que sa bibliothèque est chargée au démarrage du serveur.
Contenu connexe
- Extensions et modules dans Azure Database pour PostgreSQL serveur flexible
- Autoriser les extensions dans Azure Database pour PostgreSQL serveur flexible
- Liste des extensions et modules par nom dans Azure Database pour PostgreSQL serveur flexible
- Liste des extensions et modules par version de PostgreSQL