Je rencontre également des problèmes majeurs avec cette mise à niveau. Comme @Vaping_Community, j’ai PostgreSQL sur un volume monté différent (/mnt/volume_tor1_01/shared/standalone).
J’obtiens cette erreur
mv: impossible de déplacer '/shared/postgres_data' vers '/shared/postgres_data_old': Périphérique ou ressource occupé
mv: échec du déplacement inter-périphérique : '/shared/postgres_data_new' vers '/shared/postgres_data/postgres_data_new'; impossible de supprimer la cible : Répertoire non vide
[...]
Mise à niveau terminée
----------------
Les statistiques de l'optimiseur ne sont pas transférées par pg_upgrade.
Une fois le nouveau serveur démarré, envisagez d'exécuter :
/usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages
L'exécution de ce script supprimera les fichiers de données de l'ancien cluster :
./delete_old_cluster.sh
-------------------------------------------------------------------------------------
MISE À NIVEAU DE POSTGRES TERMINÉE
L'ancienne base de données 13 est stockée dans /shared/postgres_data_old
Pour terminer la mise à niveau, reconstruisez à nouveau en utilisant :
./launcher rebuild app
-------------------------------------------------------------------------------------
Ma compréhension est que la solution consiste essentiellement à renommer manuellement
postgres_data → postgres_data_old
postgres_new → postgres_data
puis exécuter ./launcher rebuild app. Cela semble assez simple, mais lorsque je reconstruis, je reste toujours bloqué dans la boucle et je me retrouve avec les répertoires suivants :
postgres_data_older(Je pense qu’il devientpostgres_data_oldpostgres_data_older)postgres_datapostgres_data_new
Il semble que, pour une raison quelconque, il ne reconnaisse pas que postgres_data a été mis à jour, tente de le faire à nouveau, et échoue lors de la tentative de déplacement du répertoire.
$ cat postgres_data/PG_VERSION
15
J’ai essayé l’approche manuelle décrite dans le message original, mais sans succès non plus. Veuillez m’aider !
journal complet
Architecture x86_64 détectée.
Vérification que le lanceur est à jour
Récupération de l'origine
Le lanceur est à jour
Arrêt de l'ancien conteneur
+ /usr/bin/docker stop -t 600 app
app
2.0.20250129-0720 : Récupération depuis discourse/base
Empreinte : sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Statut : L'image est à jour pour discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-23T11:41:32.477354 #1] INFO -- : Lecture depuis stdin
I, [2025-02-23T11:41:32.504068 #1] INFO -- : Fichier > /etc/service/postgres/run chmod: +x chown:
I, [2025-02-23T11:41:32.508552 #1] INFO -- : Fichier > /etc/service/postgres/log/run chmod: +x chown:
I, [2025-02-23T11:41:32.513290 #1] INFO -- : Fichier > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2025-02-23T11:41:32.517673 #1] INFO -- : Fichier > /root/install_postgres chmod: +x chown:
I, [2025-02-23T11:41:32.522244 #1] INFO -- : Fichier > /root/upgrade_postgres chmod: +x chown:
I, [2025-02-23T11:41:32.523354 #1] INFO -- : Remplacement de data_directory = '/var/lib/postgresql/15/main' par data_directory = '/shared/postgres_data' dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.523912 #1] INFO -- : Remplacement de (?-mix:#?listen_addresses *=.*) par listen_addresses = '*' dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.524756 #1] INFO -- : Remplacement de (?-mix:#?synchronous_commit *=.*) par synchronous_commit = $db_synchronous_commit dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.525365 #1] INFO -- : Remplacement de (?-mix:#?shared_buffers *=.*) par shared_buffers = $db_shared_buffers dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.526239 #1] INFO -- : Remplacement de (?-mix:#?work_mem *=.*) par work_mem = $db_work_mem dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.526873 #1] INFO -- : Remplacement de (?-mix:#?default_text_search_config *=.*) par default_text_search_config = '$db_default_text_search_config' dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.527613 #1] INFO -- : Remplacement de (?-mix:#?checkpoint_segments *=.*) par checkpoint_segments = $db_checkpoint_segments dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.531734 #1] INFO -- : Remplacement de (?-mix:#?logging_collector *=.*) par logging_collector = $db_logging_collector dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.532882 #1] INFO -- : Remplacement de (?-mix:#?log_min_duration_statement *=.*) par log_min_duration_statement = $db_log_min_duration_statement dans /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T11:41:32.534021 #1] INFO -- : Remplacement de (?-mix:^#local +replication +postgres +peer$) par local replication postgres peer dans /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T11:41:32.534342 #1] INFO -- : Remplacement de (?-mix:^host.*all.*all.*127.*$) par host all all 0.0.0.0/0 md5 dans /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T11:41:32.534935 #1] INFO -- : Remplacement de (?-mix:^host.*all.*all.*::1\/128.*$) par host all all ::/0 md5 dans /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T11:41:32.535476 #1] INFO -- : > if [ -f /root/install_postgres ]; then
/root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres déjà en cours d'exécution arrêter le conteneur ; exit 1
fi
initdb : avertissement : activation de l'authentification "trust" pour les connexions locales
initdb : indice : Vous pouvez modifier cela en éditant pg_hba.conf ou en utilisant l'option -A, ou --auth-local et --auth-host, la prochaine fois que vous exécuterez initdb.
W : https://dl.yarnpkg.com/debian/dists/stable/InRelease : La clé est stockée dans le trousseau de clés hérité trusted.gpg (/etc/apt/trusted.gpg), consultez la section DEPRÉCIATION dans apt-key(8) pour plus de détails.
debconf : report de la configuration du paquet, car apt-utils n'est pas installé
mv: impossible de déplacer '/shared/postgres_data' vers '/shared/postgres_data_old': Périphérique ou ressource occupé
mv: échec du déplacement inter-périphérique : '/shared/postgres_data_new' vers '/shared/postgres_data/postgres_data_new'; impossible de supprimer la cible : Répertoire non vide
I, [2025-02-23T11:42:52.303584 #1] INFO -- : Génération des paramètres régionaux (cela peut prendre un certain temps)...
en_US.UTF-8... terminé
Génération terminée.
Mise à niveau de PostgreSQL de la version 13 vers 15
Les fichiers appartenant à ce système de base de données seront détenus par l'utilisateur "postgres".
Cet utilisateur doit également posséder le processus serveur.
Le cluster de base de données sera initialisé avec le paramètre régional "en_US.UTF-8".
Le codage par défaut de la base de données a été défini en conséquence sur "UTF8".
La configuration par défaut de la recherche de texte sera définie sur "english".
Les sommes de contrôle des pages de données sont désactivées.
correction des permissions sur le répertoire existant /shared/postgres_data_new ... ok
création des sous-répertoires ... ok
sélection de l'implémentation de la mémoire partagée dynamique ... posix
sélection de max_connections par défaut ... 100
sélection de shared_buffers par défaut ... 128MB
sélection du fuseau horaire par défaut ... Etc/UTC
création des fichiers de configuration ... ok
exécution du script de bootstrap ... ok
exécution de l'initialisation post-bootstrap ... ok
synchronisation des données sur le disque ... ok
Succès. Vous pouvez maintenant démarrer le serveur de base de données en utilisant :
/usr/lib/postgresql/15/bin/pg_ctl -D /shared/postgres_data_new -l logfile start
Récupération de 1 : http://deb.debian.org/debian bookworm-backports InRelease [59,0 ko]
Récupération de 2 : http://deb.debian.org/debian bookworm InRelease [151 ko]
Récupération de 3 : http://deb.debian.org/debian bookworm-updates InRelease [55,4 ko]
Récupération de 4 : http://deb.debian.org/debian-security bookworm-security InRelease [48,0 ko]
Récupération de 5 : https://dl.yarnpkg.com/debian stable InRelease [17,1 ko]
Récupération de 6 : https://deb.nodesource.com/node_22.x nodistro InRelease [12,1 ko]
Récupération de 7 : http://deb.debian.org/debian bookworm-backports/main amd64 Packages [283 ko]
Récupération de 8 : http://deb.debian.org/debian bookworm/main amd64 Packages [8 792 ko]
Récupération de 9 : http://deb.debian.org/debian bookworm-updates/main amd64 Packages [13,5 ko]
Récupération de 10 : http://deb.debian.org/debian-security bookworm-security/main amd64 Packages [246 ko]
Récupération de 11 : https://dl.yarnpkg.com/debian stable/main amd64 Packages [10,9 ko]
Récupération de 12 : https://dl.yarnpkg.com/debian stable/main all Packages [10,9 ko]
Récupération de 13 : https://apt.postgresql.org/pub/repos/apt bookworm-pgdg InRelease [129 ko]
Récupération de 14 : https://deb.nodesource.com/node_22.x nodistro/main amd64 Packages [5 636 o]
Récupération de 15 : https://apt.postgresql.org/pub/repos/apt bookworm-pgdg/main amd64 Packages [360 ko]
10,2 Mo récupérés en 2 s (6 490 ko/s)
Lecture des listes de paquets...
Lecture des listes de paquets...
Construction de l'arbre des dépendances...
Lecture des informations d'état...
Les paquets supplémentaires suivants seront installés :
libllvm19 postgresql-client-13
Paquets suggérés :
postgresql-doc-13
Les paquets NOUVEAUX suivants seront installés :
libllvm19 postgresql-13 postgresql-13-pgvector postgresql-client-13
0 mis à niveau, 4 nouvellement installés, 0 à supprimer et 12 non mis à jour.
Besoin de récupérer 41,6 Mo d'archives.
Après cette opération, 184 Mo d'espace disque supplémentaire seront utilisés.
Récupération de 1 : http://deb.debian.org/debian bookworm/main amd64 libllvm19 amd64 1:19.1.4-1~deb12u1 [25,9 Mo]
Récupération de 2 : https://apt.postgresql.org/pub/repos/apt bookworm-pgdg/main amd64 postgresql-client-13 amd64 13.20-1.pgdg120+1 [1 538 ko]
Récupération de 3 : https://apt.postgresql.org/pub/repos/apt bookworm-pgdg/main amd64 postgresql-13 amd64 13.20-1.pgdg120+1 [13,9 Mo]
Récupération de 4 : https://apt.postgresql.org/pub/repos/apt bookworm-pgdg/main amd64 postgresql-13-pgvector amd64 0.8.0-1.pgdg120+1 [297 ko]
41,6 Mo récupérés en 2 s (18,8 Mo/s)
Sélection du paquet précédemment non sélectionné libllvm19:amd64.
(Lecture de la base de données ... 33363 fichiers et répertoires actuellement installés.)
Préparation du dépaquetage de .../libllvm19_1%3a19.1.4-1~deb12u1_amd64.deb ...
Dépaquetage de libllvm19:amd64 (1:19.1.4-1~deb12u1) ...
Sélection du paquet précédemment non sélectionné postgresql-client-13.
Préparation du dépaquetage de .../postgresql-client-13_13.20-1.pgdg120+1_amd64.deb ...
Dépaquetage de postgresql-client-13 (13.20-1.pgdg120+1) ...
Sélection du paquet précédemment non sélectionné postgresql-13.
Préparation du dépaquetage de .../postgresql-13_13.20-1.pgdg120+1_amd64.deb ...
Dépaquetage de postgresql-13 (13.20-1.pgdg120+1) ...
Sélection du paquet précédemment non sélectionné postgresql-13-pgvector.
Préparation du dépaquetage de .../postgresql-13-pgvector_0.8.0-1.pgdg120+1_amd64.deb ...
Dépaquetage de postgresql-13-pgvector (0.8.0-1.pgdg120+1) ...
Configuration de libllvm19:amd64 (1:19.1.4-1~deb12u1) ...
Configuration de postgresql-client-13 (13.20-1.pgdg120+1) ...
Configuration de postgresql-13 (13.20-1.pgdg120+1) ...
Création du nouveau cluster PostgreSQL 13/main ...
/usr/lib/postgresql/13/bin/initdb -D /var/lib/postgresql/13/main --auth-local peer --auth-host md5
Les fichiers appartenant à ce système de base de données seront détenus par l'utilisateur "postgres".
Cet utilisateur doit également posséder le processus serveur.
Le cluster de base de données sera initialisé avec le paramètre régional "C.UTF-8".
Le codage par défaut de la base de données a été défini en conséquence sur "UTF8".
La configuration par défaut de la recherche de texte sera définie sur "english".
Les sommes de contrôle des pages de données sont désactivées.
correction des permissions sur le répertoire existant /var/lib/postgresql/13/main ... ok
création des sous-répertoires ... ok
sélection de l'implémentation de la mémoire partagée dynamique ... posix
sélection de max_connections par défaut ... 100
sélection de shared_buffers par défaut ... 128MB
sélection du fuseau horaire par défaut ... Etc/UTC
création des fichiers de configuration ... ok
exécution du script de bootstrap ... ok
exécution de l'initialisation post-bootstrap ... ok
synchronisation des données sur le disque ... ok
Succès. Vous pouvez maintenant démarrer le serveur de base de données en utilisant :
pg_ctlcluster 13 main start
invoke-rc.d : impossible de déterminer le niveau d'exécution actuel
invoke-rc.d : la politique-rc.d a refusé l'exécution du démarrage.
Configuration de postgresql-13-pgvector (0.8.0-1.pgdg120+1) ...
Traitement des déclencheurs pour libc-bin (2.36-9+deb12u9) ...
Traitement des déclencheurs pour postgresql-common (267.pgdg120+1) ...
Construction des dictionnaires PostgreSQL à partir des paquets myspell/hunspell installés...
Suppression des fichiers de dictionnaires obsolètes :
Arrêt du serveur de base de données PostgreSQL 13 : main.
Arrêt du serveur de base de données PostgreSQL 15 : main.
Exécution des vérifications de cohérence
-----------------------------
Vérification des versions des clusters ok
Vérification que l'utilisateur de la base de données est l'utilisateur d'installation ok
Vérification des paramètres de connexion de la base de données ok
Vérification des transactions préparées ok
Vérification des types composites définis par le système dans les tables utilisateur ok
Vérification des types de données reg* dans les tables utilisateur ok
Vérification de contrib/isn avec un décalage de passage bigint ok
Vérification des conversions de codage définies par l'utilisateur ok
Vérification des opérateurs postfixe définis par l'utilisateur ok
Vérification des fonctions polymorphes incompatibles ok
Création du vidage des objets globaux ok
Création du vidage des schémas de base de données ok
Vérification de la présence des bibliothèques requises ok
Vérification que l'utilisateur de la base de données est l'utilisateur d'installation ok
Vérification des transactions préparées ok
Vérification des nouveaux répertoires de tablespace du cluster ok
Si pg_upgrade échoue après ce point, vous devez réinitialiser le
nouveau cluster avant de continuer.
Exécution de la mise à niveau
------------------
Analyse de toutes les lignes dans le nouveau cluster ok
Gel de toutes les lignes dans le nouveau cluster ok
Suppression des fichiers du nouveau pg_xact ok
Copie de l'ancien pg_xact vers le nouveau serveur ok
Définition du XID le plus ancien pour le nouveau cluster ok
Définition du prochain ID de transaction et de l'époque pour le nouveau cluster ok
Suppression des fichiers du nouveau pg_multixact/offsets ok
Copie de l'ancien pg_multixact/offsets vers le nouveau serveur ok
Suppression des fichiers du nouveau pg_multixact/members ok
Copie de l'ancien pg_multixact/members vers le nouveau serveur ok
Définition du prochain ID multixact et de l'offset pour le nouveau cluster ok
Réinitialisation des archives WAL ok
Définition des compteurs frozenxid et minmxid dans le nouveau cluster ok
Restauration des objets globaux dans le nouveau cluster ok
Restauration des schémas de base de données dans le nouveau cluster ok
Copie des fichiers de relation utilisateur ok
Définition du prochain OID pour le nouveau cluster ok
Synchronisation du répertoire de données sur le disque ok
Création du script pour supprimer l'ancien cluster ok
Vérification des mises à jour des extensions notice
Votre installation contient des extensions qui doivent être mises à jour
avec la commande ALTER EXTENSION. Le fichier
update_extensions.sql
lorsqu'il est exécuté par psql par le superutilisateur de la base de données mettra à jour
ces extensions.
Mise à niveau terminée
----------------
Les statistiques de l'optimiseur ne sont pas transférées par pg_upgrade.
Une fois le nouveau serveur démarré, envisagez d'exécuter :
/usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages
L'exécution de ce script supprimera les fichiers de données de l'ancien cluster :
./delete_old_cluster.sh
-------------------------------------------------------------------------------------
MISE À NIVEAU DE POSTGRES TERMINÉE
L'ancienne base de données 13 est stockée dans /shared/postgres_data_old
Pour terminer la mise à niveau, reconstruisez à nouveau en utilisant :
./launcher rebuild app
-------------------------------------------------------------------------------------