ESUPSGC

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Sommaire

Pré-requis

PostgreSQL

L'ensemble des données est stocké dans une base de données, photos comprises, cela nous a ammené à utiliser PostgreSQL (et non MySQL) pour ses possibilités de streaming sur les blobs.

Sous debian :

Bloc de code
languagebash
themeRDark
apt-get install postgresql

...


Puis la création de l'extension lo se fait via un super-user:

avec postgresql 9 et supérieur :

Bloc de code
languagebash
themeRDark
apt-get install postgresql-contrib
psql
\c esupsgc
CREATE EXTENSION lo;

...

CF https://www.postgresql.org/docs/9.4/static/lo.html

Vous devez donc démarrer l'application une première fois avec dans src/main/resources/META-INF/persistence.xml, la propriété hibernate.hbm2ddl.autp valuée à create, cela permettra de créer les différentes tables en base de données.

Ne pas oublier ensuite, pour ne pas écraser la base au à chaque redémarrage, de modifier src/main/resources/META-INF/persistence.xml : create-> update - cf ci-dessous.

Ajouter Ajoutez éventuellement la contrainte postgresql supplémentaire :

...

Bloc de code
languagebash
themeRDark
11 12,19,23 * * *  postgres  rm -f /opt/pg-backup/esupnfctag-`date +\%A-\%HH`.dump.bz2 && pg_dump -f /opt/pg-backup/esupnfctag-`date +\%A-\%HH`.dump esupnfctag && bzip2 /opt/pg-backup/esupnfctag-`date +\%A-\%HH`.dump
21 00 * * *  postgres  rm -rf /opt/pg-backup/esupsgc-dump && pg_dump -b -F d -f /opt/pg-backup/esupsgc-dump esupsgc

Mise à jour de PostgreSQL :

Comme on recommande d'utiliser la version de postgresql de votre distribution (debian par exemple), la mise à jour de PostgreSql se fait simplement via la mise à jour de paquets.

Lors d'une mise à jour de version de votre distribution cependant (apt dist-upgrade), si vous souhaitez profiter de la nouvelle version de postgresql, il faut effectuer des commandes de mises à jour supplémentaires.

debian propose en effet nativement et par défaut la gestion des postgresql en cluster via les commandes pg_ ; pg_lsclusters permet par exemple de lister les clusters en place. Aussi lors d'une mise à jour de distribution, la version de PostgreSQL est amené à changer, Debian fait alors cohabiter les deux installations sur le même serveur.

Bloc de code
themeRDark
# pg_lsclusters 
Ver Cluster Port Status Owner    Data directory              Log file
13  main    5432 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
15  main    5433 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log


Le cluster lié à la nouvelle version de postgresql est disponible et opérationnel et en écoute en 5433, le cluster utilisé jusque-là écoute toujours en 5432. Si la possibilité de cluster postgresql peut permettre d'utiliser plusieurs postgresql indépendants sur un même serveur, ici souvent on souhaitera simplement migrer le cluster jusque-là utilisé dans sa nouvelle version, càd pour reprendre l'exemple ci-dessus, supprimer ce nouveau cluster 15 (non utilisé) et migrer de version le cluster en version 13 vers la version 15.

Voici les commandes permettant de réaliser cette opération :

  • supprimer le cluster postgres 15 créé par défaut :
Bloc de code
themeRDark
pg_dropcluster --stop 15 main
  • mettre à jour le postgres 13 (vers 15)
Bloc de code
themeRDark
pg_upgradecluster --method=upgrade --link 13 main

Cette procédure est très explicite et vous avertira en cas d'erreurs. Si à la fin de la procédure vous n'avez pas d'erreurs, PostgreSQL 15 a dû automatiquement prendre le relais sur PostgreSQL 13 (les fichiers de configurations ont été copiés vers la nouvelle version, la base également) et écoute sur le port 5432 (pas de changement).

Bloc de code
themeRDark
# pg_lsclusters 
Ver Cluster Port Status Owner    Data directory              Log file
13  main    5433 down   postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log


Suite à cette mise à jour, le postgresql 13 a été conservé mais éteint (et a pris un nouveau port d'écoute en 5433).

Durant la procédure, une information indique que vous devez passer un script d'optimisation

Pensez effectivement à le lancer en tant qu'utilisateur postgres.

Bloc de code
themeRDark
postgres@dgs-13-5912-1752:/usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages 
  • supprimer le “backup” PostgreSQL 13 ; une fois que vous avez bien vérifié que tout fonctionne bien avec la version nouvellement mise à jour (15 ici donc):
Bloc de code
themeRDark
pg_dropcluster 13 main

Une telle mise à jour d'un postgresql 13 vers un postgresql 15 proposant une base de données esup-sgc avec 100.000 cartes/photos stockées en base de données (~20GB de données) est opérée par ce biais en moins d'1 minute.

Paramétrage mémoire JVM :

...

Bloc de code
languagebash
themeRDark
rm -rf /opt/tomcat-esup-sgc/webapps/ROOT && cp -rf /opt/esup-sgc/target/sgc-13.30.0 /opt/tomcat-esup-sgc/webapps/ROOT

...

Bloc de code
themeRDark
git pull origin  esup-sgc-13.30.0


mise à jour depuis un tag

...