Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation weitere Informationen
Symptom
Beim Aktualisieren der PostgreSQL-Datenbank wird ein Fehler angezeigt.
Fehlermeldung
ERROR: PostgreSQL Upgrade FAILED
Mögliche Ursachen
Ursache | Beschreibung | Die Anleitung zur Fehlerbehebung gilt für |
---|---|---|
Falsche Replikationseinstellungen in der PostgreSQL-Konfigurationsdatei | Das PostgreSQL-Upgrade schlägt aufgrund falscher Replikationseinstellungen während des Upgrades fehl. | Edge Private Cloud-Nutzer |
PostgreSQL-Installation, die von einem anderen Installationsnutzer als dem Apigee-Nutzer ausgeführt wird | PostgreSQL wurde anfangs mit einem anderen Nutzer als Installationsnutzer installiert, was zu einem Upgradefehler führt. | Edge Private Cloud-Nutzer |
Häufige Diagnoseschritte
Wenn beim Upgrade der PostgreSQL-Datenbank ein Fehler auftritt, führen Sie zuerst die folgenden Diagnoseschritte aus:
Benennen Sie den PostgreSQL-Datenordner um:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Achten Sie darauf, dass sich Ihre ursprünglichen Sicherungsdaten in einem Ordner mit dem Namen
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
befindenBeispiel:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Stellen Sie die Sicherungsdaten in
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
mit dem folgenden Befehl in/opt/apigee/data/apigee-postgresql/pgdata
wieder her:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Beispiel:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Führen Sie den Befehl
db_upgrade
noch einmal aus:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Wenn Sie folgende Fehlermeldung erhalten...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory
...benennen Sie dann die Datei
pg_control.old
mit dem folgenden Befehl inpg_control
um:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
Führen Sie den Befehl
db_upgrade
noch einmal aus:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Wenn das Problem weiterhin besteht, lesen Sie den Artikel Ursache: Falsche Replikationseinstellungen in der PostgreSQL-Konfigurationsdatei.
Ursache: Falsche Replikationseinstellungen in der PostgreSQL-Konfigurationsdatei
Diagnose
- Prüfen Sie, ob die PostgreSQL-Konfigurationsdatei
/opt/apigee/apigee-postgresql/conf/pg_hba.conf
die gewünschten Replikationseinstellungen hat. - Wenn diese Datei die erwarteten Replikationseinstellungen enthält, gehen Sie zu PostgreSQL-Installation wird von einem anderen Installationsnutzer als „apigee“-Benutzer ausgeführt.
- Falls nicht, gehen Sie zu Lösung.
Lösung
Benennen Sie den PostgreSQL-Datenordner mit dem folgenden Befehl um:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Achten Sie darauf, dass sich die ursprünglichen Sicherungsdaten in einem Ordner mit dem Namen
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
befindenBeispiel:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Stellen Sie die Sicherungsdaten mit dem folgenden Befehl von
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
in/opt/apigee/data/apigee-postgresql/pgdata
wieder her:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Beispiel:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Wenn Sie den Slave-Host jemals geändert haben, müssen Sie die folgende Eigenschaft in
/opt/apigee/customer/application/postgresql.properties
aktualisieren, um die Konfigurationsdateipg_hba.conf
zu aktualisieren:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust
Starten Sie den Dienst
apigee-postgresql
neu, damit das in Schritt 4 oben festgelegte Attribut in die Konfigurationsdateipg_hba.conf
aktualisiert wird:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Machen Sie die Konfigurationsdatei
pg_hba.conf
mit dem folgenden Befehl unveränderlich, damit sie während des PostgreSQL-Upgrades nicht mit falschen Einstellungen aktualisiert wird:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Führen Sie den Befehl
db_upgrade
noch einmal aus:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Entfernen Sie die unveränderliche Einstellung in der Konfigurationsdatei
pg_hba.conf
:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Ursache: PostgreSQL-Installation wurde von einem anderen Installationsnutzer als dem apigee
-Nutzer ausgeführt
Diagnose
Prüfen Sie, ob es einen anderen Nutzer gibt, für den rolesuper auf true gesetzt ist. Gehen Sie dazu so vor:
Melden Sie sich auf dem PostgreSQL-Knoten mit dem folgenden Befehl bei PostgreSQL an:
psql -h $(hostname -i) -U apigee
Führen Sie die folgende SQL-Abfrage aus:
select * from pg_authid;
Prüfen Sie, ob für mehrere Nutzer rolesuper auf true gesetzt ist. Wenn ja, schlägt das PostgreSQL-Upgrade fehl, da ein anderer Nutzer als Installationsnutzer anstelle des Nutzers apigee festgelegt wurde. Jeder Nutzer mit der Rolle rolesuper und einer niedrigeren OID wird als Installationsnutzer betrachtet.
Führen Sie die folgenden SQL-Abfragen aus, um diese Art von Rollenproblem zu prüfen:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Lösung
Melden Sie sich mit dem folgenden Befehl in PostgreSQL an:
psql -h $(hostname -i) -U apigee
Benennen Sie die vorhandene Rolle
apigee
in der alten Datenbank in einen temporären Nutzer um (z. B.apigee2
):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Angenommen, es gibt einen anderen Nutzer, der die App installiert hat:
srcapige
. Benennen Sie die Rollesrcapige
inapigee
um:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Benennen Sie
apigee2
insrcapige
-Nutzer um:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Aktualisieren Sie das Passwort für alle umbenannten Nutzer:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';
Benennen Sie den PostgreSQL-Datenordner mit dem folgenden Befehl um:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Achten Sie darauf, dass sich in einem Ordner namens
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
ursprüngliche Sicherungsdaten befindenBeispiel:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Stellen Sie die Daten im Ordner
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
mit dem folgenden Befehl in/opt/apigee/data/apigee-postgresql/pgdata
wieder her:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Beispiel:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Führen Sie den Befehl
db_upgrade
noch einmal aus:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Starten Sie alle Dienste
apigee-qpidd
undedge-qpid-server
neu:/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
Wenn das Problem weiterhin besteht, gehen Sie zu Erfassen von Diagnoseinformationen erforderlich.
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem nach Ausführung der obigen Anleitung zur Fehlerbehebung weiterhin besteht, erfassen Sie die folgenden Diagnoseinformationen. Wenden Sie sich an den Apigee-Support und geben Sie die folgenden Informationen an das Supportteam weiter:
- Fügen Sie
set -x
in die zweite Zeile der Datei/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
ein. Folgen Sie den allgemeinen Diagnoseschritten und senden Sie dem Supportteam die Konsolenausgabe des Befehls
db_upgrade
:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Stellen Sie dem Supportteam die folgenden Protokolldateien zur Verfügung:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.log
Geben Sie die Ausgabe der folgenden Betriebssystembefehle an, um zu prüfen, ob Alternativen auf
auto
festgelegt sind.update-alternatives --display psql
ODER
update-alternatives --display pgsql
update-alternatives --list psql
ODER
update-alternatives --list pgsql
Wenn Alternativen auf
manual
festgelegt sind, können Sie sie mit dem folgenden Befehl aufauto
setzen:update-alternatives --auto psql
Wenn Sie die Alternativen
auto
festlegen, werden die Binärdateienpsql
undpostgres
auf die aktualisierten Versionen verwiesen. Andernfalls verweisen die Binärdateien auf die ältere Version, was zu Problemen führen kann.