Blog de Jesus Forain Blog de Jesus Forain
Blog personnel de Jesus Forain où les principaux sujets sont l'informatique, la technologie, le spatial mais aussi divers sujets.
Site hébergé sur un mini PC KVM avec une connexion ADSL infos ici
Rechercher & filtrer
Filtrer par année / mois
Derniers commentaires
Rencontre Aérotrain du 6 juillet 2024
avatar de Jesus Forain
Jesus Forain
dimanche 21 juillet 2024 23:10

J'ai rien supprimé, toutes les photos en rapport avec l'Aérotrain sont ici dans la galerie photo. Il me reste aussi la vidéo à faire, et je mettrais à jour cet article.

Rencontre Aérotrain du 6 juillet 2024
JCB (non inscrit)
dimanche 21 juillet 2024 20:03

Les photos de la rencontre ont disparues ? Il y en avait beaucoup plus à un moment. Comment les voir ?

Free: le reverse DNS est de nouveau opérationnel
mecamic (non inscrit)
vendredi 19 juillet 2024 12:32

Merci beaucoup pour ce retour. Je vais donc supprimer l'adresse IPV6 pour le serveur de mail.

Free: le reverse DNS est de nouveau opérationnel
avatar de Jesus Forain
Jesus Forain
vendredi 19 juillet 2024 11:44

Bonjour, Le reverse DNS n'est pas disponible pour l'IPv6, peut-être que ça le sera un jour. L'absence de reverse DNS n'est pas un problème, ça n?empêche pas d'héberger un site web. Là où ça peut poser problème c'est pour un serveur de mail, les mails envoyés depuis ce serveur risquent d'être rejetés[...]

Free: le reverse DNS est de nouveau opérationnel
mecamic (non inscrit)
vendredi 19 juillet 2024 11:14

Bonjour, Merci pour vos tutoriels autour de free. Je suis également en train d'essayer d'héberger un site web derrière une freebox. Je viens de régler la mise en place du reverse dns v4. Il reste la mise en place du reverse dns v6. Son paramétrage n'est pas (encore) accessible chez free. Puis-je sav[...]

Raspberry Pi en récepteur audio Bluetooth (A2DP audio sink)
avatar de Jesus Forain
Jesus Forain
mercredi 3 juillet 2024 23:23

Merci à ceux qui apprécient ce tuto. Je l'ai écris pour que ce soit clair et surtout j'y ai mis toutes les commandes, pour faire en sorte que si tu suis le tuto, tu n'a pas à te poser de questions ou aller chercher de l'aide ailleurs. Si tous les développeurs pouvaient faire pareil ça serait super p[...]

Raspberry Pi en récepteur audio Bluetooth (A2DP audio sink)
mabu (non inscrit)
mercredi 3 juillet 2024 09:30

Bonjour,Un grand merci pour ce tuto très bien fait et fonctionnel!Installé sur raspberry PI 0w sous DietPi pour remettre au gout du jour un vieil ampli avec un dac HDMI ? RCA C'est en complément de shareport au cas où le wifi serait ko ou si un invité sans iOS voudrait mettre du son.Ça marche super [...]

Réparation d'une VMC: condensateur HS
Fcna44410 (non inscrit)
jeudi 27 juin 2024 12:53

Merci pour l'info du condensateur j'avais les deux de chaque moteur HS  Ci joint les première manipulation pour savoir par ou commencer  Entre les bornes L1 et N1 puis L2 et N2 (sorties alimentation moteur), il devrait y avoir une tension 230 V. Entre les bornes 0 et REG1 puis 0 et REG2 (régulation [...]

Demander une adresse IP full stack chez Free pour avoir tous les ports
Mat (non inscrit)
jeudi 30 mai 2024 13:13

Merci beaucoup ! 👍

Demander une adresse IP full stack chez Free pour avoir tous les ports
avatar de Jesus Forain
Jesus Forain
mercredi 29 mai 2024 22:43

À l'époque où j'ai écris cet article, il y avait effectivement un problème de réseau chez Free; j'ai trouvé ce bug. À la fin de l'article j'explique un problème de réseau que j'ai rencontré entre une Freebox fibre et ADSL en IPv6 avec un débit réduit mais ça fonctionnait normalement en IPv4.Sur le p[...]

Mettre à jour Postgresql vers une nouvelle version

- 3140 vues

La mise à jour vers une nouvelle version majeure de Postgres, ici on va passer de Postgres 14 à 15, est une opération simple et automatisée grâce au programme pg_upgrade fourni avec Postgres. 
J'ai utilisé cette procédure pour mettre à jour Postgres sur le Raspberry Pi hébergeant ce blog, ce qui m'a pris environ 5 min. Bien entendu, cette durée dépend de la taille de tes bases et de ton matériel.

J'utilise un serveur Postgres simple c'est à dire sans cluster ni réplication, la procédure est peut être différente.

Important! avant de procédér à la mise à jour de Postgres, sauvegarde tes bases, ça t'évitera les pertes de données en cas de problème.

Se connecter en root


Installation de la nouvelle version

Arrêter le serveur Postgres actuel

systemctl stop postgresql

Installer la nouvelle version, ici la version 15

apt install postgresql-15

Le nouveau serveur est automatiquement démarré, il faut l'arrêter. Pour pouvoir continuer, il ne doit plus y avoir un seul serveur Postgres en cours d'exécution.

systemctl stop postgresql

 

Migration vers la nouvelle version

Se connecter avec l'utisateur portgres

su - postgres

Tester que tout est OK pour faire la migration.

On va déclarer 2 variables contenant l'ancien et le nouveau numéro de version. Ceci sera plus pratique pour exécuter les commandes suivantes.

export PG_OLD_VERSION=<ANCIEN_NUMÉRO_DE_VERSION>
export PG_NEW_VERSION=<NOUVEAU_NUMÉRO_DE_VERSION>

Dans notre exemple de mise à jour de postgres 14 à 15 on fera:

export PG_OLD_VERSION=14
export PG_NEW_VERSION=15

Cette commande va juste vérifier que la migration peut être effectuée sans problèmes grâce au paramètre --check indiquant que l'on souhaite juste faire une vérification sans rien modifier.

/usr/lib/postgresql/$PG_NEW_VERSION/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/$PG_OLD_VERSION/main \
--new-datadir=/var/lib/postgresql/$PG_NEW_VERSION/main \
--old-bindir=/usr/lib/postgresql/$PG_OLD_VERSION/bin \
--new-bindir=/usr/lib/postgresql/$PG_NEW_VERSION/bin \
--old-options '-c config_file=/etc/postgresql/$PG_OLD_VERSION/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/$PG_NEW_VERSION/main/postgresql.conf' \
--check

Tu doit avoir des "ok" partout. Les cas d'erreurs courants sont un service postgres en cours d'exécution ou un mot de passe manquant (export PGPASSWORD="<MOT_DE_PASSE>").

Exécution de tests de cohérence
-------------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for system-defined composite types in user tables  ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok
Checking for new cluster tablespace directories             ok
*Les instances sont compatibles*

Si tout est OK, tu peux effectuer la migration. C'est la même commande que précédemment mais sans le paramètre --check.

/usr/lib/postgresql/$PG_NEW_VERSION/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/$PG_OLD_VERSION/main \
--new-datadir=/var/lib/postgresql/$PG_NEW_VERSION/main \
--old-bindir=/usr/lib/postgresql/$PG_OLD_VERSION/bin \
--new-bindir=/usr/lib/postgresql/$PG_NEW_VERSION/bin \
--old-options '-c config_file=/etc/postgresql/$PG_OLD_VERSION/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/$PG_NEW_VERSION/main/postgresql.conf'

La durée de traitement dépend de la taille de tes bases et des performances matérielles.

Exécution de tests de cohérence
-------------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for system-defined composite types in user tables  ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok
Creating dump of global objects                             ok
Creating dump of database schemas
                                                           ok
Checking for presence of required libraries                 ok
Checking database user is the install user                  ok
Checking for prepared transactions                          ok
Checking for new cluster tablespace directories             ok
Si pg_upgrade échoue après cela, vous devez ré-exécuter initdb
sur la nouvelle instance avant de continuer.
Réalisation de la mise à jour
-----------------------------
Analyzing all rows in the new cluster                       ok
Freezing all rows in the new cluster                        ok
Deleting files from new pg_xact                             ok
Copying old pg_xact to new server                           ok
Setting oldest XID for new cluster                          ok
Setting next transaction ID and epoch for new cluster       ok
Deleting files from new pg_multixact/offsets                ok
Copying old pg_multixact/offsets to new server              ok
Deleting files from new pg_multixact/members                ok
Copying old pg_multixact/members to new server              ok
Setting next multixact ID and offset for new cluster        ok
Resetting WAL archives                                      ok
Setting frozenxid and minmxid counters in new cluster       ok
Restoring global objects in the new cluster                 ok
Restoring database schemas in the new cluster
                                                           ok
Copying user relation files
                                                           ok
Setting next OID for new cluster                            ok
Sync data directory to disk                                 ok
Creating script to delete old cluster                       ok
Checking for extension updates                              ok
Mise à jour terminée
--------------------
Les statistiques de l'optimiseur ne sont pas transférées par pg_upgrade.
Une fois le nouveau serveur démarré, pensez à exécuter :
   /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages
Exécuter ce script supprimera les fichiers de données de l'ancienne
instance :
   ./delete_old_cluster.sh

Se déconnecter de l'utilisateur postgres et se remettre en root

exit

Changer le port d'écoute 5433 en 5432.
Comme on a installé 2 serveurs Postgres, le plus récent écoute sur le port 5433 afin que les 2 cohabitent. Mais comme on ne veut plus qu'un seul serveur, on fait écouter le nouveau sur le port 5432 qui est le port standard de Postgres.

Ouvre le fichier postgresql.conf

vim /etc/postgresql/15/main/postgresql.conf

Et remplace le port 5433 par 5432

port = 5432             # (change requires restart)

Si tu as modifié les méthodes d'authentification, édite le fichier de configuration

vim /etc/postgresql/15/main/pg_hba.conf

Vérifie aussi que tu n'as pas d'autres fichiers spécifiques à ta configuration dans /etc/postgresql/14/main/. En cas de doute, fais une copie de ce dossier car on va le supprimer dans la suite.

 

Test de fonctionnement de la nouvelle version

On va tester que le nouveau serveur fonctionne correctement avant de supprimer l'ancien.

L'ancien serveur écoutant toujours sur le port 5432, on va le changer pour qu'il écoute sur le 5433 afin de ne pas avoir de conflit. La procédure est la même que précédemment avec le nouveau serveur.

Ouvre le fichier postgresql.conf de l'ancien serveur

vim /etc/postgresql/14/main/postgresql.conf

Et remplace le port 5432 par 5433

port = 5433             # (change requires restart)

Démarre le service Postgres

systemctl start postgresql

Ton nouveau serveur est opérationnel, vérifie que les applications utilisant ton serveur fonctionnent correctement et qu'il n'y a pas d'erreurs.

 

Suppression de l'ancienne version

On va supprimer les fichiers de configuration et de base de données de l'ancienne version.

Liste les paquets Postgres installés

dpkg --list | grep postgres
rc  pgdg-keyring                         2018.2                                                       all          keyring for apt.postgresql.org
ii  postgresql-14                        14.6-1.pgdg110+1                                             arm64        The World's Most Advanced Open Source Relational Database
ii  postgresql-15                        15.1-1.pgdg110+1                                             arm64        The World's Most Advanced Open Source Relational Database
ii  postgresql-client-14                 14.6-1.pgdg110+1                                             arm64        front-end programs for PostgreSQL 14
ii  postgresql-client-15                 15.1-1.pgdg110+1                                             arm64        front-end programs for PostgreSQL 15
ii  postgresql-client-common             246.pgdg110+1                                                all          manager for multiple PostgreSQL client versions
ii  postgresql-common                    246.pgdg110+1                                                all          PostgreSQL database-cluster manager

Ici on a 2 paquets Postgres en version 14, on va les supprimer ainsi que tous les fichiers de bases de données et de configuration qui leur sont associés. Pour cela on utilise le paramètre --purge.

apt --purge remove postgresql-14 postgresql-client-14

Durant la désinstallation, on va te demander si tu veux tout supprimer. Ça ne concerne que Postgres 14, ta nouvelle installation Postgres 15 n'est pas concernée.

Configuration de postgresql-14
La suppression du paquet du serveur PostgreSQL laissera les grappes de bases de données existantes intactes, c'est-à-dire que leurs répertoires de configuration, de données et de journal ne seront pas supprimés. Lors de la purge du paquet, les répertoires peuvent être supprimés de façon optionnelle.
Faut-il supprimer les répertoires de PostgreSQL lors de la purge du paquet ?  

Dit “Oui”

partager sur Facebook
COMMENTAIRES
Envoyer un commentaire
chargement de l'éditeur en cours...
Envoi d'images
Cliquez sur le bouton "insérer l'image" pour l'ajouter à votre message, le fond de l'image passe en vert indiquant qu'elle est ajoutée. Les images non insérés sont supprimées.

Envoi de fichiers

Attention! vous n'êtes pas connecté, vous postez en mode invité.