Sie lesen gerade die Dokumentation zu Apigee Edge.
Apigee X-Dokumentation aufrufen. info
Symptom
Beim Aktualisieren der PostgreSQL-Datenbank wird ein Fehler angezeigt.
Fehlermeldung
ERROR: PostgreSQL Upgrade FAILED
Mögliche Ursachen
| Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten 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 durch einen anderen Installationsnutzer als den Apigee-Nutzer | PostgreSQL wurde ursprünglich mit einem anderen Nutzer als Installationsnutzer installiert, was zu einem Fehler beim Upgrade führt. | Edge Private Cloud-Nutzer |
Allgemeine 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
Die ursprünglichen Sicherungsdaten müssen sich in einem Ordner mit dem Namen
/opt/apigee/data/apigee-postgresql/pgdata-version.old/befinden.Beispiel:
/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/pgdatawieder 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_upgradenoch einmal aus:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Wenn Sie die folgende Fehlermeldung erhalten…
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directoryBenennen Sie dann die Datei
pg_control.oldmit dem folgenden Befehl inpg_controlum: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_upgradenoch einmal aus:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Wenn das Problem weiterhin besteht, fahren Sie mit Ursache: Falsche Replikationseinstellungen in der PostgreSQL-Konfigurationsdatei fort.
Ursache: Falsche Replikationseinstellungen in der PostgreSQL-Konfigurationsdatei
Diagnose
- Prüfen Sie, ob die PostgreSQL-Konfigurationsdatei
/opt/apigee/apigee-postgresql/conf/pg_hba.confdie gewünschten Replikationseinstellungen enthält. - Wenn diese Datei die erwarteten Replikationseinstellungen enthält, fahren Sie mit PostgreSQL-Installation durch einen anderen Installationsnutzer als den Nutzer „apigee“ fort.
- Falls nicht, gehen Sie zum Abschnitt 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
Die ursprünglichen Sicherungsdaten müssen sich in einem Ordner mit dem Namen
/opt/apigee/data/apigee-postgresql/pgdata-version.old/befinden.Beispiel:
/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/nach/opt/apigee/data/apigee-postgresql/pgdatawieder 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 geändert haben, müssen Sie das folgende Attribut in
/opt/apigee/customer/application/postgresql.propertiesaktualisieren, um die Konfigurationsdateipg_hba.confzu aktualisieren:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trustStarten Sie den Dienst
apigee-postgresqlneu, damit die in Schritt 4 festgelegte Property in der Konfigurationsdateipg_hba.confaktualisiert wird:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Machen Sie die Konfigurationsdatei
pg_hba.confmit 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_upgradenoch 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: Die PostgreSQL-Installation wurde von einem anderen Installationsnutzer als dem Nutzer apigee durchgeführt.
Diagnose
Prüfen Sie anhand der folgenden Schritte, ob ein anderer Nutzer rolesuper auf true gesetzt hat:
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 dies der Fall ist, schlägt das PostgreSQL-Upgrade fehl, weil ein anderer Nutzer als Installationsnutzer anstelle des Nutzers apigee festgelegt wurde. Jeder Nutzer mit der Rolle rolesuper und einer niedrigeren OID gilt als Installationsnutzer.
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 bei PostgreSQL an:
psql -h $(hostname -i) -U apigee
Benennen Sie die vorhandene Rolle
apigeein der alten Datenbank in einen temporären Nutzer um (z. B.apigee2):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Angenommen, es gab einen weiteren Nutzer, der die App installiert hat,
srcapige. Benennen Sie die Rollesrcapigeinapigeeum:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Benennen Sie den Nutzer
apigee2insrcapigeum: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
Prüfen Sie, ob sich in einem Ordner mit dem Namen
/opt/apigee/data/apigee-postgresql/pgdata-version.old/Original-Sicherungsdaten befinden.Beispiel:
/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/pgdatawieder 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_upgradenoch einmal aus:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Starten Sie alle
apigee-qpidd- undedge-qpid-server-Dienste 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 auch nach Befolgen der obigen Anleitung zur Fehlerbehebung weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen. Wenden Sie sich an den Apigee-Support und teilen Sie dem Supportteam die folgenden Informationen mit:
- Fügen Sie
set -xin der zweiten Zeile der Datei/opt/apigee/apigee-postgresql/lib/actions/db_upgradehinzu. Folgen Sie der allgemeinen Anleitung zur Fehlerbehebung und stellen Sie dem Supportteam die Konsolenausgabe des Befehls
db_upgradezur Verfügung: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.logGeben Sie die Ausgabe der folgenden Betriebssystembefehle an, um zu prüfen, ob Alternativen auf
autofestgelegt sind.update-alternatives --display psql
ODER
update-alternatives --display pgsqlupdate-alternatives --listWenn Alternativen auf
manualfestgelegt sind, können Sie sie mit dem folgenden Befehl aufautofestlegen:update-alternatives --auto psql
Wenn Sie die Alternativen auf
autosetzen, verweisen die Binärdateienpsqlundpostgresauf die aktualisierten Versionen. Andernfalls verweisen die Binärdateien auf die ältere Version, was zu Problemen führen kann.