powa-team / powa

PostgreSQL Workload Analyzer
http://powa.readthedocs.io/
PostgreSQL License
768 stars 57 forks source link

erreur lors d'un upgrade cluster de 9.6 en 10 #103

Closed BrunoDefrance closed 5 years ago

BrunoDefrance commented 6 years ago

Bonjour,

nous avons une Erreur upgrade cluster de 9.6 en 10

n'a pas pu charger la bibliothèque « $libdir/hypopg » : ERREUR: n'a pas pu charger la bibliothèque « /usr/lib/postgresql/10/lib/hypopg.so » : /usr/lib/postgresql/10/lib/hypopg.so: undefined symbol: copyObject

Avez vous une solution ? Merci Bruno Defrance

rjuju commented 6 years ago

Bonjour,

Cette erreur est étrange. Comment réalisez-vous l'upgrade et comment avez-vous installé les différents binaires ?

PCFiL commented 6 years ago

Bonjour, un peu d'info à propos de la box elle même :

Linux servsig3 4.4.0-112-generic #135-Ubuntu SMP Fri Jan 19 11:48:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Description: Ubuntu 16.04.3 LTS

l'upgrade est lancée avec : pg_upgradecluster -m upgrade 9.6 main

on a : pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.6 main 5432 down postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

coté hypopg, nous utilisons le github, commit 7a3c36ff76284387e58bbcf99b08b738e5884538 donc la release 1.1.0 qui est compatible avec postgresql 10.

pour les binaires potsgresql, ce sont ceux de la distrib (9.6 et 10).

merci pour votre retour.

rjuju commented 6 years ago

Avez-vous bien recompilé hypopg pour la version 10 ? Un simple (sudo) make install ne fera qu'installer les binaires déjà compilés si vous utilisez le même répertoire que pour la 9.6. Pouvez-vous essayer de faire un make clean, puis vérifier que pg_config pointe bien vers les binaires 10 puis refaire un (sudo) make install ?

PCFiL commented 6 years ago

j'étais deja reparti d'un git clone propre, pour recompiler et utiliser les nouvelles versions (post upgrade/dist-upgrade). le pg_config pointe vers l'environnement 9.6, tant qu'il est encore en "prod". mais j'a reproduis le make install dans l'environnement 10, càd :

/usr/bin/install -c -m 755 hypopg.so '/usr/lib/postgresql/10/lib/hypopg.so' /usr/bin/install -c -m 644 .//hypopg.control '/usr/share/postgresql/10/extension/' /usr/bin/install -c -m 644 .//hypopg--1.1.0.sql '/usr/share/postgresql/10/extension/'

j'ai noté que les include lors de la compil sont ceux du 9.6, c'est peut etre ca le problème..? Makefile: PGXS := $(shell $(PG_CONFIG) --pgxs) include $(PGXS)

rjuju commented 6 years ago

Oui, comme indiqué précédemment il faut vous assurer que pg_config pointe bien sur les binaires 10. Concrètement, cela veut dire modifier dans votre session le $PATH pour pointer en priorité sur la version 10, j'imagine quelquechose comme "/usr/lib/postgresql/10/bin", puis refaire un cycle make clean; make; make install en vous assurant bien que les fichiers liés à la version 10 sont utilisés.