Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an. 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 dazu führt, dass das Upgrade fehlschlägt. | Edge Private Cloud-Nutzer |
Allgemeine Diagnoseschritte
Wenn beim Upgrade der PostgreSQL-Datenbank ein Fehler auftritt, führen Sie zuerst die folgenden Schritte zur Fehlerbehebung 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/
Wiederherstellen Sie die Sicherungsdaten in
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
mit dem folgenden Befehl in/opt/apigee/data/apigee-postgresql/pgdata
: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 folgende Fehlermeldung angezeigt wird:
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, rufen Sie Ursache: Falsche Replikationseinstellungen in der PostgreSQL-Konfigurationsdatei auf.
Ursache: Falsche Replikationseinstellungen in 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, fahren Sie mit PostgreSQL-Installation durch einen anderen Installationsnutzer als „apigee“ fort.
- Wenn 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
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/
Wiederherstellen Sie die Sicherungsdaten von
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
nach/opt/apigee/data/apigee-postgresql/pgdata
mit dem folgenden Befehl: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 jemals den Slave-Host geändert haben, müssen Sie die folgende Eigenschaft in
/opt/apigee/customer/application/postgresql.properties
zum Aktualisieren der Konfigurationsdateipg_hba.conf
: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 die in Schritt 4 oben festgelegte Property in der 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 aus 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
Sehen Sie nach, ob es noch andere Nutzer gibt, für die 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 mehrere Nutzer die Rolle rolesuper mit dem Wert true haben. Falls ja, schlägt das PostgreSQL-Upgrade fehl, weil ein anderer Nutzer anstelle des apigee-Nutzers als Installationsnutzer festgelegt wurde. Jeder Nutzer mit dem rolesuper-Rolle hat und eine niedrigere OID als Installationsnutzer gilt.
Führen Sie die folgenden SQL-Abfragen aus, um diese Art von Rollenproblem zu überprü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
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 gab einen weiteren Installationsnutzer
srcapige
. Benennen Sie die Rollesrcapige
inapigee
um:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Benennen Sie den Nutzer
apigee2
insrcapige
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 die ursprünglichen Sicherungsdaten in einem Ordner mit dem Namen
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Beispiel:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Daten in
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
wiederherstellen mit dem folgenden Befehl in/opt/apigee/data/apigee-postgresql/pgdata
verschieben: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
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 nach der oben beschriebenen Fehlerbehebung weiterhin besteht, erfassen Sie die folgenden Diagnoseinformationen. Wenden Sie sich an den Apigee-Support und teilen Sie dem Supportteam die folgenden Informationen mit:
- Fügen Sie in der zweiten Zeile der Datei
/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
die Zeichenfolgeset -x
hinzu. Führen Sie die allgemeinen Diagnoseschritte aus 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
Stellen Sie die Ausgabe der folgenden Betriebssystembefehle bereit, um zu prüfen, ob Alternativen sind auf
auto
gesetzt.update-alternatives --display psql
ODER
update-alternatives --display pgsql
update-alternatives --list psql
ODER
update-alternatives --list pgsql
Wenn Alternativen auf
manual
gesetzt sind, können Sie sie mit dem folgenden Befehl aufauto
setzen:update-alternatives --auto psql
Wenn Sie die Alternativen auf
auto
festlegen, werden diepsql
- undpostgres
-Binärdateien auf die aktualisierten Versionen verweisen. Andernfalls verweisen die Binärdateien auf die ältere Version, was zu Problemen führen kann.