Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Passage de Postgresql 11 à Postgresql 17 #1969

Draft
wants to merge 15 commits into
base: main
Choose a base branch
from

Conversation

VincentAntoine
Copy link
Collaborator

Related Pull Requests & Issues

@VincentAntoine
Copy link
Collaborator Author

Les paquets disponibles à l'installation dans les dépôts https://apt.postgresql.org/pub/repos/apt/ et https://apt-archive.postgresql.org/ par distribution sont les suivants :

  • buster archive main : postgresql-11 à 15-postgis-3=3.3.4
  • buster archive main archive : postgresql-11 à 15-postgis-3=3.0.0 à 3.3.4
  • bullseye main : postgresql-12 à 17-postgis-3=3.5.1
  • bookworm main : postgresql-12 à 17-postgis-3=3.5.1
  • bullseye archive main archive :
    • postgresql-11 et 12-postgis-3=3.0.0 à 3.3.4
    • postgresql-13-postgis-3=3.0.2 à 3.5.1
    • postgresql-14-postgis-3=3.1.4 à 3.5.1
    • postgresql-15-postgis-3=3.3.1 à 3.5.1
    • postgresql-16-postgis-3=3.4.1 à 3.5.1
    • postgresql-17-postgis-3=3.4.3 à 3.5.1
  • bookworm archive main archive :
    • postgresql-11 à 12-postgis-3=3.1.3 à 3.3.4
    • postgresql-13-postgis-3=3.1.3 à 3.5.1
    • postgresql-14-postgis-3=3.1.4 à 3.5.1
    • postgresql-15-postgis-3=3.3.1 à 3.5.1
    • postgresql-16-postgis-3=3.4.1 à 3.5.1
    • postgresql-17-postgis-3=3.4.3 à 3.5.1

Bien que la matrice de compatibilité Postgresql / Postgis laisse penser qu'il est possible d'upgrader directement de Postgresql 11 - PostGIS 3.3 à Postgresql 17 - PostGIS 3.3, aucun dépôt ne permet d'installer PostGIS 3.3 sur Postgresql 17 :(

Il va donc falloir procéder en deux étapes avec une version intermédiaire qui permet l'installation de PostGIS 3.3, par exemple Postgresql 15.

Image

@VincentAntoine
Copy link
Collaborator Author

VincentAntoine commented Jan 8, 2025

1. Redémarrer l'appli en spécifiant l'image et le nom de volume par variables environnement

  • Faire un git pull pour mettre à jour le Makefile et récupérer les différents scripts et fichiers docker-compose
  • Faire docker volume ls et vérifier que le nom de volume de la base de données est bien monitorenv_db-data
  • Ajout dans le fichier .env:
      DB_VERSION=pg11-ts1.7.4-postgis3.3.2
      DB_DATA_VOLUME_NAME=monitorenv_db-data
  • Faire make restart-app
  • Vérifier que tout est OK

2. Enregistrer les paramètres de départ

Sur le serveur, avec l'application up sur Postgresql 11 :

  • faire make_print_pg_conf_files et enregistrer l'ouput dans un fichier texte.
  • faire make check-database-extensions-versions et enregistrer l'output dans un autre fichier texte.

3. Upgrade de Postgresql 11 / PostGIS 3.3.2 à Postgresql 15 / PostGIS 3.5.1

  • Désactiver tous les flows Prefect
  • Mettre à jour le fichier .env avec :
    PG_11_DATA_VOLUME_NAME=monitorenv_db-data
    PG_15_DATA_VOLUME_NAME=db-data-15
    PG_17_DATA_VOLUME_NAME=db-data-17
  • Entrer dans le container de BDD avec docker exec -it monitorenv_database bash puis :
    • Supprimer l'extension TimescaleDB de toutes les bases de données (a priori, postgres, monitorenvdb et template1):
    psql -U postgres
    \l # Liste les bases de données. Puis pour chaque base de données présentes sur le cluster, à l'exception de template0 :
    \c postgres
    DROP EXTENSION timescaledb;
    \c monitorenvdb
    DROP EXTENSION timescaledb;
    \c template1
    DROP EXTENSION timescaledb;
    • Retirer timescaledb des shared_preload_libraries dans le postgresql.conf :
    cd /var/lib/postgresql/data
    cat postgresql.conf # Vérifier la ligne shared_preload_libraries
    sed -i "s/shared_preload_libraries = 'timescaledb'/#shared_preload_libraries = ''/" postgresql.conf 
    cat postgresql.conf # Vérifier que la ligne shared_preload_libraries a bien été modifiée
  • Arrêter tous les services avec docker compose -p monitorenv down --timeout 120
  • Lancer l'upgrade : make upgrade-postgres-11-to-15
  • Mettre à jour le fichier .env avec:
      DB_VERSION=pg15-postgis3.5.1
      DB_DATA_VOLUME_NAME=db-data-15
  • Faire make print_pg_conf_files : il doit manquer une ligne host all all all md5 dans le pg_hba.conf
  • Faire make fix_pg_hba
  • Faire make print_pg_conf_files : une ligne host all all all md5 a dû être ajoutée à la fin du pg_hba.conf
  • make restart-app
  • make check-database-extensions-versions # PostGIS devrait être en version 3.3.2
  • make update-database-extensions
  • make check-database-extensions-versions # PostGIS devrait maintenant être en version 3.5.1

4. Upgrade de Postgresql 15 / PostGIS 3.5.1 à Postgresql 17 / PostGIS 3.5.1

  • Arrêter tous les services avec docker compose -p monitorenv down --timeout 120
  • Lancer l'upgrade : make upgrade-postgres-15-to-17
  • Mettre à jour le fichier .env avec:
      DB_VERSION=pg17-postgis3.5.1
      DB_DATA_VOLUME_NAME=db-data-17
  • Faire make print_pg_conf_files : il doit manquer une ligne host all all all md5 dans le pg_hba.conf
  • Faire make fix_pg_hba
  • Faire make print_pg_conf_files : une ligne host all all all md5 a dû être ajoutée à la fin du pg_hba.conf
  • make restart-app
  • make check-database-extensions-versions # PostGIS devrait maintenant être en version 3.5.1
  • Relancer tous les flows Prefect

@VincentAntoine VincentAntoine force-pushed the vincent/postgresql_upgrade branch from b0824d0 to 9a0b849 Compare January 10, 2025 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Montée de version postgres
1 participant