Installer pg_local_cache sur un serveur PostgreSQL existant
Ce guide concerne Linux et PostgreSQL 14–18. L’installation et la configuration nécessitent les droits de superutilisateur de la base de données. Ajouter l’extension à shared_preload_libraries nécessite un redémarrage de PostgreSQL.
1. Prérequis
Pour compiler depuis les sources, utilisez le pg_config du serveur cible. Planifiez le redémarrage avec le service ou l’opérateur qui gère le cluster PostgreSQL.
2. Installer un paquet
Téléchargez le paquet et SHA256SUMS correspondant à la version majeure de PostgreSQL et à l’architecture depuis la même publication GitHub.
Debian et Ubuntu
Téléchargez postgresql-<major>-pg-local-cache_<version>-1_<arch>.deb. Les paquets sont construits sur Debian 12 et nécessitent glibc 2.36 ou ultérieure. Le manifeste contient tous les fichiers de la publication ; utilisez --ignore-missing si vous n’en téléchargez que certains.
Vérifiez la somme de contrôle et la provenance de la compilation, puis installez le paquet :
sha256sum -c --ignore-missing SHA256SUMS
gh attestation verify <file>.deb --repo profundium/pg_local_cache
sudo apt install ./<file>.deb
RHEL, Rocky Linux et AlmaLinux 9
Ces RPM nécessitent PostgreSQL de PGDG dans la même version majeure. Configurez
le dépôt Yum PGDG pour
votre version d’EL et la version majeure de PostgreSQL, puis installez
postgresql<major>-server depuis PGDG avant l’extension. Le paquet de
l’extension s’installe sous /usr/pgsql-<major>. Les paquets PostgreSQL fournis
par la distribution utilisent d’autres noms de paquets, chemins et noms de
services ; pour ces serveurs, suivez les
instructions de compilation depuis les sources.
Téléchargez le .rpm correspondant à la version majeure de PostgreSQL et à l’architecture. Vérifiez-le puis installez-le :
sha256sum -c --ignore-missing SHA256SUMS
gh attestation verify <file>.rpm --repo profundium/pg_local_cache
sudo dnf install ./<file>.rpm
PGXN
Installez le client PGXN, les en-têtes de développement du serveur PostgreSQL
cible, un compilateur C et GNU Make. Indiquez le pg_config du
serveur cible ; sinon PGXN utilise le premier trouvé dans PATH.
L’installation des fichiers système nécessite les droits root. Consultez les
options de la commande PGXN install.
pgxn install --pg_config /path/to/pg_config --sudo sudo pg_local_cache
Compiler depuis les sources
Installez les en-têtes de développement de la version cible de PostgreSQL, un compilateur C et GNU Make. Compilez puis installez l’extension avec le pg_config de cette version :
make PG_CONFIG=/path/to/pg_config && \
sudo make PG_CONFIG=/path/to/pg_config install
3. Configurer postgresql.conf
Conservez les entrées existantes de shared_preload_libraries et ajoutez
pg_local_cache. Remplacez app par le nom de la base servie par l’extension.
Configurer le listener RESP
Configurez le listener RESP avec un rôle worker dédié, un fichier de jeton protégé et TLS natif. La configuration ci-dessous active mTLS en approuvant une CA cliente. TLS natif pour RESP nécessite PostgreSQL compilé avec le support OpenSSL.
shared_preload_libraries = 'pg_local_cache'
pg_local_cache.database = 'app'
pg_local_cache.role = 'local_cache_worker'
pg_local_cache.port = 6380
pg_local_cache.bind_address = '10.0.0.10'
pg_local_cache.auth_token_file = '/secure/path/token'
pg_local_cache.cache_entries = 16384
pg_local_cache.memory_budget_mb = 384
pg_local_cache.tls = on
pg_local_cache.tls_cert_file = '/secure/path/resp.crt'
pg_local_cache.tls_key_file = '/secure/path/resp.key'
pg_local_cache.tls_ca_file = '/secure/path/client-ca.crt'
pg_local_cache.tls_min_protocol_version = 'TLSv1.2'
pg_local_cache.allow_plaintext_network = off
Remplacez 10.0.0.10 par une adresse accessible aux clients. TLS est désactivé
par défaut ; son activation exige le certificat et la clé serveur. Cette
configuration protège par TLS un listener RESP hors loopback et vérifie les
certificats clients via la CA. Pour un TLS avec authentification du serveur
uniquement, laissez pg_local_cache.tls_ca_file vide et omettez les certificats
clients. TLS RESP est indépendant des paramètres ssl_* de PostgreSQL. Sans
TLS, un listener hors loopback exige pg_local_cache.allow_plaintext_network = on ; limitez cet opt-in explicite à un réseau de confiance.
La clé privée doit suivre la règle PostgreSQL sur les fichiers de clé
serveur : mode 0600 si
elle appartient à l’utilisateur système de PostgreSQL, ou propriété de root avec
le mode 0640 et un accès en lecture pour le groupe du serveur.
Dimensionnez ensemble les entrées de cache, les états de relation, les workers,
les clients et memory_budget_mb. Consultez les conseils de capacité et de
mémoire dans la référence technique.
4. Redémarrer PostgreSQL
Utilisez le service ou l’opérateur qui gère le cluster. Avec systemd :
# Debian and Ubuntu
sudo systemctl restart postgresql@<major>-main
# RHEL, Rocky Linux, and AlmaLinux
sudo systemctl restart postgresql-<major>
Avec Patroni, modifiez la configuration du cluster puis redémarrez-le avec Patroni :
patronictl edit-config <cluster>
patronictl restart <cluster>
Pour Kubernetes, créez une image PostgreSQL personnalisée contenant le paquet correspondant, puis déployez-la via votre opérateur. Les images d’extension CloudNativePG sont prévues.
5. Initialiser
Connectez-vous à la base configurée en tant que superutilisateur de base de données. Créez l’extension et un rôle worker dédié, puis accordez-lui l’accès aux métadonnées :
CREATE EXTENSION IF NOT EXISTS pg_local_cache;
CREATE ROLE local_cache_worker LOGIN NOINHERIT NOSUPERUSER
NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;
GRANT CONNECT ON DATABASE app TO local_cache_worker;
GRANT USAGE ON SCHEMA local_cache TO local_cache_worker;
GRANT SELECT ON TABLE local_cache.mapping TO local_cache_worker;
Séparez le rôle worker des rôles propriétaires des tables applicatives. Attachez chaque table permanente dotée d’une clé primaire prise en charge :
Attacher une table
SELECT local_cache.attach_table('public.items'::regclass);
Vérifier l’état
SELECT local_cache.health();
Vérifiez que l’extension est prête et que les associations sont à jour.
6. Mettre à niveau
Pour passer de 3.0.0 à 3.1.0, suivez le guide de mise à niveau. Depuis 2.x, suivez d’abord le parcours indiqué dans le guide via 3.0.0 jusqu’à 3.1.0.
Migrez les applications de SQL mget vers RESP MGET, installez le
paquet 3.1.0 correspondant, redémarrez PostgreSQL et mettez à niveau l’extension
dans chaque base où elle est installée :
ALTER EXTENSION pg_local_cache UPDATE;
7. Désinstaller
Détachez toutes les tables associées et supprimez l’extension en tant que superutilisateur de la base. Retirez pg_local_cache de shared_preload_libraries, redémarrez PostgreSQL puis supprimez le paquet avec le gestionnaire approprié :
SELECT local_cache.detach_table('public.items'::regclass);
DROP EXTENSION pg_local_cache;
sudo apt remove postgresql-<major>-pg-local-cache
sudo dnf remove pg_local_cache_<major>
À suivre : consultez la référence technique pour SQL, le dimensionnement mémoire, la supervision et la sécurité RESP.
Documentation pour 2.x : https://github.com/profundium/pg_local_cache/tree/v2.0.4/docs
Mis à jour .