serveurs:installation:db-srv:postgresql-config

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
serveurs:installation:db-srv:postgresql-config [2025/12/19 16:42] – [Configurer l'utilisation des Huges Pages] jpmilcentserveurs:installation:db-srv:postgresql-config [2026/06/03 09:26] (Version actuelle) – [Mise à jour des mots de passe des rôles] jpmilcent
Ligne 349: Ligne 349:
   * Tester une connexion en vous connectant via : <code bash>psql -U <login> -h localhost </code>    * Tester une connexion en vous connectant via : <code bash>psql -U <login> -h localhost </code> 
  
 +==== Mise à jour des collations ====
 +Après chaque mise à jour Debian ou de Postgresql, il peut être nécessaire de corriger les collations des bases de données Postgresql : 
 +  * Ressource : [[https://www.postgresql.org/docs/current/sql-altercollation.html#SQL-ALTERCOLLATION-NOTES|Doc Postgresql ALTER COLLATION]]
 +  * Passer en utilisateur //postgres// : ''su - postgres''
 +  * Lancer //Psql// : ''psql''
 +  * Lister les problèmes de collations vis à vis des bases de données :<code sql>
 +SELECT datname,
 +  datcollate,
 +  datcollversion,
 +  pg_database_collation_actual_version(oid)
 +FROM pg_database;
 +</code>
 +
 +=== Mise à jour manuelle ===
 +Pour chaque base avec une collation //datcollversion// différente de //pg_database_collation_actual_version//, il faut :
 +  * Basculer sur la base (Ex. pour //geonature2db//) : ''\c geonature2db''
 +  * Liste les éventuels objets à reconstruire : <code sql>
 +SELECT pg_describe_object(refclassid, refobjid, refobjsubid) AS "Collation",  
 +  pg_describe_object(classid, objid, objsubid) AS "Object"  
 +FROM pg_depend d JOIN pg_collation c  
 +  ON refclassid = 'pg_collation'::regclass AND refobjid = c.oid  
 +WHERE c.collversion <> pg_collation_actual_version(c.oid)  
 +ORDER BY 1, 2;
 +</code>
 +  * Mettre à jour la collation, une fois les objets reconstruits : <code sql>ALTER DATABASE geonature2db REFRESH COLLATION VERSION;</code>
 +  * La base //template0// ne doit pas avoir de collation. Pour Debian 12, nous devrions au final avoir quelque chose comme ceci:<code>
 +   datname    | datcollate  | datcollversion | pg_database_collation_actual_version 
 +--------------+-------------+----------------+--------------------------------------
 + geonature2db | fr_FR.UTF-8 | 2.36           | 2.36
 + template1    | fr_FR.UTF-8 | 2.36           | 2.36
 + admin        | fr_FR.UTF-8 | 2.36           | 2.36
 + gnatlas      | fr_FR.UTF-8 | 2.36           | 2.36
 + postgres     | fr_FR.UTF-8 | 2.36           | 2.36
 + telegraf     | fr_FR.UTF-8 | 2.36           | 2.36
 + template0    | fr_FR.UTF-8 |                | 2.36
 +(7 lignes)
 +</code>
 +
 +=== Mise à jour auto ===
 +Il existe également des [[https://gist.github.com/troykelly/616df024050dd50744dde4a9579e152e|scripts Bash capable d'automatiser cette mise à jour des collations]].
 +  * Télécharger le script dans votre dossier ''~/bin'' : ''%%cd ~/bin; curl https://gist.githubusercontent.com/troykelly/616df024050dd50744dde4a9579e152e/raw/fe84e53cedf0caa6903604894454629a15867439/reindex_and_refresh_collation.sh%%''
 +  * Ajouter les droits d'execution au script: ''chmod +x reindex_and_refresh_collation.sh''
 +  * Exporter les variables d'environnement nécessaire : ''%%export POSTGRES_HOST=localhost; export POSTGRES_PORT=5432; export POSTGRES_USER=admin; export POSTGRES_PASSWORD=<mot-de-passe-de-admin>  %%''
 +  * Exécuter le script : ''./reindex_and_refresh_collation.sh''
 +  * Vérifier que les collations sont correctes avec la requête SQL indiqué ci-dessus 
 +  * Vérifier **la présence** des variables d'env : ''%%env|grep POSTGRES%%''
 +  * Supprimer les variables d'env : ''%% unset POSTGRES_HOST; unset POSTGRES_PORT; unset POSTGRES_USER; unset POSTGRES_PASSWORD; %%''
 +  * Vérifier **l'abscence** des variables d'env : ''%%env|grep POSTGRES%%''
 ===== 🗑️ Sauvegarder les bases de données ===== ===== 🗑️ Sauvegarder les bases de données =====
   * Se connecter sur "//db-srv//" en tant qu'//admin//   * Se connecter sur "//db-srv//" en tant qu'//admin//
  • serveurs/installation/db-srv/postgresql-config.txt
  • Dernière modification : 2026/06/03 09:26
  • de jpmilcent