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

Merged
merged 16 commits into from
Jan 14, 2025

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 3 times, most recently from 8caae90 to 0c3d038 Compare January 14, 2025 13:51
@VincentAntoine VincentAntoine force-pushed the vincent/postgresql_upgrade branch from 0c3d038 to eb6a0e5 Compare January 14, 2025 15:07
@VincentAntoine VincentAntoine marked this pull request as ready for review January 14, 2025 15:31
@VincentAntoine VincentAntoine merged commit f276e67 into main Jan 14, 2025
33 checks passed
@VincentAntoine VincentAntoine deleted the vincent/postgresql_upgrade branch January 14, 2025 18:29
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
2 participants