Vous consultez la documentation d'Apigee Edge.
Consultez la
documentation Apigee X. en savoir plus
Problème constaté
Vous obtenez un message d'erreur lors de la mise à jour de la base de données PostgreSQL.
Message d'erreur
ERROR: PostgreSQL Upgrade FAILED
Causes possibles :
Cause | Description | Les instructions de dépannage s'appliquent aux |
---|---|---|
Paramètres de réplication incorrects dans le fichier de configuration PostgreSQL | La mise à niveau de PostgreSQL échoue en raison de paramètres de réplication incorrects lors de la mise à niveau. | Utilisateurs de cloud privé périphérique |
Installation de PostgreSQL effectuée par un autre utilisateur que l'utilisateur Apigee | PostgreSQL a été initialement installé avec un autre utilisateur en tant qu'utilisateur d'installation, ce qui entraîne l'échec de la mise à niveau. | Utilisateurs de cloud privé périphérique |
Étapes de diagnostic courantes
Si vous recevez une erreur lors de la mise à niveau de la base de données PostgreSQL, commencez par effectuer les étapes de diagnostic suivantes:
Renommez le dossier de données PostgreSQL:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Assurez-vous que vos données de sauvegarde d'origine se trouvent dans un dossier nommé
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Exemple :
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restaurez les données de sauvegarde de
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
dans/opt/apigee/data/apigee-postgresql/pgdata
à l'aide de la commande suivante:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Exemple :
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Exécutez à nouveau la commande
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Si l'erreur suivante s'affiche...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory
Ensuite, renommez le fichier
pg_control.old
enpg_control
à l'aide de la commande suivante:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
Exécutez à nouveau la commande
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Si le problème persiste, consultez Cause: paramètres de réplication incorrects dans le fichier de configuration PostgreSQL.
Cause: paramètres de réplication incorrects dans le fichier de configuration PostgreSQL
Diagnostic
- Vérifiez si le fichier de configuration PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.conf
possède les paramètres de réplication souhaités. - Si ce fichier présente les paramètres de réplication attendus, accédez à l'installation PostgreSQL effectuée par un utilisateur autre que l'utilisateur "apigee".
- Si ce n'est pas le cas, consultez Résolution.
Solution
Renommez le dossier de données PostgreSQL à l'aide de la commande suivante:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Assurez-vous que les données de sauvegarde d'origine se trouvent dans un dossier nommé
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Exemple :
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restaurez les données de sauvegarde de
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
vers/opt/apigee/data/apigee-postgresql/pgdata
à l'aide de la commande suivante:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Exemple :
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Si vous avez déjà changé d'hôte esclave, vous devez mettre à jour la propriété suivante dans
/opt/apigee/customer/application/postgresql.properties
pour mettre à jour le fichier de configurationpg_hba.conf
:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust
Redémarrez le service
apigee-postgresql
pour vous assurer que la propriété définie à l'étape 4 ci-dessus est mise à jour dans le fichier de configurationpg_hba.conf
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Rendez le fichier de configuration
pg_hba.conf
immuable à l'aide de la commande suivante pour vous assurer qu'il n'est pas mis à jour avec des paramètres incorrects lors de la mise à niveau de PostgreSQL:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Exécutez à nouveau la commande
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Supprimez le paramètre immuable du fichier de configuration
pg_hba.conf
:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Cause: l'installation de PostgreSQL a été effectuée par un autre utilisateur que l'utilisateur apigee
Diagnostic
Vérifiez si un autre utilisateur a défini rolesuper sur true en procédant comme suit:
Sur le nœud PostgreSQL, connectez-vous à PostgreSQL à l'aide de la commande suivante:
psql -h $(hostname -i) -U apigee
Exécutez la requête SQL suivante:
select * from pg_authid;
Vérifiez si plusieurs utilisateurs ont défini rolesuper sur true. Si c'est le cas, la mise à niveau de PostgreSQL échoue, car un autre utilisateur a été défini comme utilisateur installant au lieu de l'utilisateur apigee. Tout utilisateur doté du rôle rolesuper et d'un OID inférieur est considéré comme utilisateur ayant installé l'application.
Pour vérifier ce type de problème de rôle, exécutez les requêtes SQL suivantes:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Solution
Connectez-vous à PostgreSQL à l'aide de la commande suivante:
psql -h $(hostname -i) -U apigee
Remplacez le nom du rôle
apigee
existant dans l'ancienne base de données par un utilisateur temporaire (par exemple,apigee2
) :update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Supposons qu'un autre utilisateur ait installé
srcapige
. Renommez le rôlesrcapige
enapigee
:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Renommez
apigee2
en utilisateursrcapige
:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Modifiez le mot de passe de tous les utilisateurs renommés:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';
Renommez le dossier de données PostgreSQL à l'aide de la commande suivante:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Assurez-vous que des données de sauvegarde d'origine se trouvent dans un dossier nommé
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Exemple :
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restaurez les données du dossier
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
dans/opt/apigee/data/apigee-postgresql/pgdata
à l'aide de la commande suivante:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Exemple :
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Exécutez à nouveau la commande
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Redémarrez tous les services
apigee-qpidd
etedge-qpid-server
:/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
Si le problème persiste, consultez la page Vous devez collecter des informations de diagnostic.
Vous devez collecter des informations de diagnostic
Si le problème persiste après avoir suivi les instructions de dépannage ci-dessus, recueillez les informations de diagnostic suivantes. Contactez l'assistance Apigee et communiquez ces informations à l'équipe d'assistance:
- Ajoutez
set -x
sur la deuxième ligne du fichier/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
. Suivez la procédure de diagnostic courante et transmettez la sortie de console de la commande
db_upgrade
à l'équipe d'assistance:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Transmettez les fichiers journaux suivants à l'équipe d'assistance:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.log
Fournissez le résultat des commandes suivantes du système d'exploitation pour vérifier si les alternatives sont définies sur
auto
.update-alternatives --display psql
OU
update-alternatives --display pgsql
update-alternatives --list psql
OU
update-alternatives --list pgsql
Si des alternatives sont définies sur
manual
, vous pouvez les définir surauto
à l'aide de la commande suivante:update-alternatives --auto psql
Définir les alternatives sur
auto
fait pointer les binairespsql
etpostgres
vers les versions mises à niveau. Sinon, les binaires pointeront vers l'ancienne version, ce qui peut entraîner des problèmes.