PostgreSQL¶
Documentation technique¶
Packaging¶
PostgreSQL est déjà packagé par nixpkgs. Cependant, à cause d’une dépendance à PAM non compilée dans la version de base, tout doit être recompilé (Note: cette dépendance à PAM implique beaucoup de recompilation en cascade notamment à cause de Qt)
Configuration¶
Pour éviter les redémarrages imprévus de PostgreSQL en période de
maintenance, les services qui nécessitent PostgreSQL ne déclarent pas la
dépendance systemd comme Wants
ou Require
, mais comme
Requisite
. Cela permet d’avoir une dépendance forte (le service
dépendant ne peut pas démarrer sur PostgreSQL n’est pas démarré) sans
pour autant qu’elle provoque un (re)démarrage de PostgreSQL.
Divers aides ont été ajoutées pour permettre une maintenance sans heurts
(fichier /var/tmp/no-postgresql
pour empêcher les services
dépendants de démarrer même si PostgreSQL tourne, target
pour
arrêter ou redémarrer tous les services d’un coup, etc.)
Mises à jour¶
Les mises à jour de PostgreSQL ne doivent pas sauter de version.
Cependant, une compatibilité ascendante est assurée partiellement (voir
les release notes plus bas), ce qui permet de mettre à jour sans grand
danger pour les services qui en dépendent. Le processus de mise à jour,
partiellement documenté sur le manuel de NixOS, se déroule
de la façon suivante :
- S’assurer que le serveur est déployé correctement
- Éditer le fichier flakes/mypackages/overlays/databases/postgresql/default.nix
pour changer les valeurs de postgresql_system
, postgresql_pam
, postgresql_system_next
et postgresql_system_pam
.
- Prévoir également la configuration pour le dataset ZFS (le script d’upgrade plus loin se chargera de la création initiale).
- Compiler la nouvelle version sans la déployer (elle prend du temps, possiblement quelques heures !)
- Une fois la version compilée, sur le serveur un script upgrade-pg-cluster
permet d’arrêter PostgreSQL et mettre à jour le cluster vers la nouvelle version.
- Enfin, déployer le nouveau système. Les outils devraient être redémarrés.
- Jusqu’à la version PostgreSQL 14, un script ./analyze_new_cluster.sh
peut être lancé pour optimiser la base
- Les serveurs de réplications suivent le même processus, il ne doit pas y avoir plus d’une version d’écart entre les deux. Le serveur primaire doit toujours être en avance sur le serveur de réplication.
Suivi des versions¶
Release notes et changements non-rétrocompatibles : https://www.postgresql.org/docs/release/
Fin de support : https://endoflife.date/postgresql
Suivi des CVE¶
Accès / Suppression des données¶
PostgreSQL stocke la majorité des données utilisateur. Cependant, il ne les stocke pas en propre. Chaque application utilisant a ses propres informations pour récupérer les données utilisateur.