Échec de la mise à jour (postgresql)

La dernière mise à jour (incluant PostgreSQL) entraîne une erreur :

root@community:/var/discourse# ./launcher rebuild app

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 60 app

app

cd /pups && git pull && /pups/bin/pups --stdin

Déjà à jour.

I, [2020-06-03T15:38:58.391364 #1] INFO -- : Chargement de --stdin

I, [2020-06-03T15:38:58.398128 #1] INFO -- : > locale-gen $LANG && update-locale

I, [2020-06-03T15:38:58.731357 #1] INFO -- : Génération des paramètres régionaux (cela peut prendre un certain temps)...

Génération terminée.

I, [2020-06-03T15:38:58.731849 #1] INFO -- : > mkdir -p /shared/postgres_run

I, [2020-06-03T15:38:58.751775 #1] INFO -- : 

I, [2020-06-03T15:38:58.756078 #1] INFO -- : > chown postgres:postgres /shared/postgres_run

I, [2020-06-03T15:38:58.765806 #1] INFO -- : 

I, [2020-06-03T15:38:58.766148 #1] INFO -- : > chmod 775 /shared/postgres_run

I, [2020-06-03T15:38:58.767966 #1] INFO -- : 

I, [2020-06-03T15:38:58.768305 #1] INFO -- : > rm -fr /var/run/postgresql

I, [2020-06-03T15:38:58.770246 #1] INFO -- : 

I, [2020-06-03T15:38:58.770626 #1] INFO -- : > ln -s /shared/postgres_run /var/run/postgresql

I, [2020-06-03T15:38:58.785523 #1] INFO -- : 

I, [2020-06-03T15:38:58.785863 #1] INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres déjà en cours d'exécution, arrêtez le conteneur ; exit 1

2020/06/03 15:38:58 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36) : Aucun fichier ou dossier de ce type

I, [2020-06-03T15:38:58.911895 #1] INFO -- : 

I, [2020-06-03T15:38:58.912203 #1] INFO -- : > rm -fr /shared/postgres_run/.s*

I, [2020-06-03T15:38:58.914376 #1] INFO -- : 

I, [2020-06-03T15:38:58.914625 #1] INFO -- : > rm -fr /shared/postgres_run/*.pid

I, [2020-06-03T15:38:58.916280 #1] INFO -- : 

I, [2020-06-03T15:38:58.916527 #1] INFO -- : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp

I, [2020-06-03T15:38:58.917967 #1] INFO -- : 

I, [2020-06-03T15:38:58.918303 #1] INFO -- : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp

I, [2020-06-03T15:38:58.919709 #1] INFO -- : 

I, [2020-06-03T15:38:58.925728 #1] INFO -- : Fichier > /etc/service/postgres/run chmod : +x chown : 

I, [2020-06-03T15:38:58.928444 #1] INFO -- : Fichier > /etc/service/postgres/log/run chmod : +x chown : 

I, [2020-06-03T15:38:58.931357 #1] INFO -- : Fichier > /etc/runit/3.d/99-postgres chmod : +x chown : 

I, [2020-06-03T15:38:58.934190 #1] INFO -- : Fichier > /root/upgrade_postgres chmod : +x chown : 

I, [2020-06-03T15:38:58.934528 #1] INFO -- : > chown -R root /var/lib/postgresql/12/main

I, [2020-06-03T15:40:44.749613 #1] INFO -- : 

I, [2020-06-03T15:40:44.750250 #1] INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0

I, [2020-06-03T15:40:44.751653 #1] INFO -- : 

I, [2020-06-03T15:40:44.751914 #1] INFO -- : > chown -R postgres:postgres /shared/postgres_data

I, [2020-06-03T15:40:47.940064 #1] INFO -- : 

I, [2020-06-03T15:40:47.940713 #1] INFO -- : > chown -R postgres:postgres /var/run/postgresql

I, [2020-06-03T15:40:47.942521 #1] INFO -- : 

I, [2020-06-03T15:40:47.942924 #1] INFO -- : > /root/upgrade_postgres

initdb : avertissement : activation de l'authentification « trust » pour les connexions locales

Vous pouvez modifier cela en éditant pg_hba.conf ou en utilisant l'option -A, ou

--auth-local et --auth-host, lors de la prochaine exécution de initdb.

debconf : report de la configuration du paquet, car apt-utils n'est pas installé

I, [2020-06-03T15:42:45.495966 #1] INFO -- : Mise à niveau de PostgreSQL de la version 10 vers 12

Les fichiers appartenant à ce système de base de données seront la propriété de l'utilisateur « postgres ».

Cet utilisateur doit également posséder le processus serveur.

Le cluster de base de données sera initialisé avec les paramètres régionaux « 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 recherche textuelle 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 du nombre maximal de connexions par défaut ... 100

Sélection des tampons partagés par défaut ... 128 Mo

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/12/bin/pg_ctl -D /shared/postgres_data_new -l logfile start

Récupération :1 http://security.debian.org/debian-security buster/updates InRelease [65,4 ko]

Touché :2 http://deb.debian.org/debian buster InRelease

Récupération :3 http://deb.debian.org/debian buster-updates InRelease [49,3 ko]

Récupération :4 https://deb.nodesource.com/node_10.x buster InRelease [4 584 o]

Récupération :5 http://apt.postgresql.org/pub/repos/apt buster-pgdg InRelease [84,6 ko]

Récupération :6 http://security.debian.org/debian-security buster/updates/main amd64 Packages [201 ko]

Récupération :7 https://deb.nodesource.com/node_10.x buster/main amd64 Packages [768 o]

Récupération :8 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages [171 ko]

577 ko récupérés en 1 s (698 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 :

postgresql-client-10

Paquets suggérés :

postgresql-doc-10

Les nouveaux paquets suivants seront installés :

postgresql-10 postgresql-client-10

0 mis à niveau, 2 nouvellement installés, 0 à supprimer et 10 non mis à jour.

Nécessite de récupérer 6 390 ko d'archives.

Après cette opération, 30,6 Mo d'espace disque supplémentaires seront utilisés.

Récupération :1 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-client-10 amd64 10.13-1.pgdg100+1 [1 428 ko]

Récupération :2 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 postgresql-10 amd64 10.13-1.pgdg100+1 [4 961 ko]

6 390 ko récupérés en 0 s (38,2 Mo/s)

Sélection du paquet postgresql-client-10 précédemment non sélectionné.

(Lecture de la base de données ... 43929 fichiers et répertoires actuellement installés.)

Préparation du dépaquetage de .../postgresql-client-10_10.13-1.pgdg100+1_amd64.deb ...

Dépaquetage de postgresql-client-10 (10.13-1.pgdg100+1) ...

Sélection du paquet postgresql-10 précédemment non sélectionné.

Préparation du dépaquetage de .../postgresql-10_10.13-1.pgdg100+1_amd64.deb ...

Dépaquetage de postgresql-10 (10.13-1.pgdg100+1) ...

Configuration de postgresql-client-10 (10.13-1.pgdg100+1) ...

update-alternatives : avertissement : forçage de la réinstallation de l'alternative /usr/share/postgresql/12/man/man1/psql.1.gz car le groupe de liens psql.1.gz est cassé

Configuration de postgresql-10 (10.13-1.pgdg100+1) ...

Création du nouveau cluster PostgreSQL 10/main ...

/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5

Les fichiers appartenant à ce système de base de données seront la propriété de l'utilisateur « postgres ».

Cet utilisateur doit également posséder le processus serveur.

Le cluster de base de données sera initialisé avec les paramètres régionaux « 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 recherche textuelle 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/10/main ... ok

Création des sous-répertoires ... ok

Sélection du nombre maximal de connexions par défaut ... 100

Sélection des tampons partagés par défaut ... 128 Mo

Sélection du fuseau horaire par défaut ... Etc/UTC

Sélection de l'implémentation de la mémoire partagée dynamique ... posix

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 10 main start

Avertissement : Le répertoire stats_temp_directory sélectionné /var/run/postgresql/10-main.pg_stat_tmp

n'est pas accessible en écriture pour le propriétaire du cluster. Ce paramètre ne sera pas ajouté dans

postgresql.conf.

Ver Cluster Port Statut Propriétaire Répertoire de données Fichier journal

10 main 5433 arrêté postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log

update-alternatives : avertissement : forçage de la réinstallation de l'alternative /usr/share/postgresql/12/man/man1/postmaster.1.gz car le groupe de liens postmaster.1.gz est cassé

invoke-rc.d : impossible de déterminer le niveau d'exécution actuel

invoke-rc.d : la politique policy-rc.d a refusé l'exécution du démarrage.

Traitement des déclencheurs pour postgresql-common (213.pgdg100+1) ...

Construction des dictionnaires PostgreSQL à partir des paquets myspell/hunspell installés...

Suppression des fichiers de dictionnaire obsolètes :

Arrêt du serveur de base de données PostgreSQL 10 : main.

Arrêt du serveur de base de données PostgreSQL 12 : main.

Exécution des vérifications de cohérence

-----------------------------

Vérification des versions des clusters : ok

Le cluster source n'a pas été arrêté proprement.

Échec, sortie

-------------------------------------------------------------------------------------

ÉCHEC DE LA MISE À NIVEAU DE POSTGRES

Veuillez consulter https://meta.discourse.org/t/postgresql-12-update/151236 pour obtenir de l'aide

Vous pouvez exécuter ./launcher start app pour redémarrer votre application en attendant

ÉCHEC

--------------------

Pups::ExecError : /root/upgrade_postgres a échoué avec le statut de retour #<Process::Status: pid 45 exit 1>

Emplacement de l'échec : /pups/lib/pups/exec_command.rb:112:in `spawn'

exec a échoué avec les paramètres "/root/upgrade_postgres"

674042fc06e2af0c08a0a09c46406a0b18b1f08b9140e037fffe1053188bd1c0

** ÉCHEC DU BOOTSTRAP ** veuillez faire défiler vers le haut et rechercher les messages d'erreur antérieurs, il peut y en avoir plus d'un.

./discourse-doctor peut aider à diagnostiquer le problème.

root@community:/var/discourse#

Une idée de la raison ?

Avez-vous consulté ce message ?

Oui, je l’ai déjà fait. Nous n’avons pas pu lancer la mise à jour.

Lisez toute la section FAQ ici :

J’ai déjà essayé la solution de contournement, mais cela n’a pas fonctionné.

Le journal est rempli de :

2020-06-03 16:01:21.074 UTC [693] FATAL : le répertoire de données “/shared/postgres_data” a un propriétaire incorrect
2020-06-03 16:01:21.074 UTC [693] HINT : le serveur doit être démarré par l’utilisateur qui possède le répertoire de données.

Après m’être connecté au conteneur, j’ai essayé de l’arrêter moi-même :

root@community-app:/etc/postgresql/10/main# service postgresql stop

[ÉCHEC] Arrêt du serveur de base de données PostgreSQL 10 : main[…] Erreur : le propriétaire de la configuration (postgres:106) et le propriétaire des données (Debian-exim:105) ne correspondent pas, et le propriétaire de la configuration n’est pas root … échec !

échec !

L’exécution de chown -R postgres postgres_data dans /shared après être entré dans le conteneur Docker a résolu le problème.